Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86

    database testuale e piccoli problemi...

    Ciao a tutti

    sono da pochissimo entrato nel mondo della programmazione in php e vorrei chiedere il vostro aiuto su alcuni problemini che sto riscontrando crendo una semplicissima applicazione..

    vorrei creare un form, che mi permetta di memorizzare i dati inseriti su di un database testuale in aggiunta vorrei creare una pagina di amministrazione in cui poter cancellare e modificare i dati inseriti.

    vi dico a che punto sono:
    ho creato il form (form.php), i dati vengono salvati correttamente nel database testuale (utenti.txt), e posso visualizzarli senza problemi in una pagina (visualizza.php);

    il problema nasce a questo punto, vorrei che cliccando sui links MODIFICA E CANCELLA di ciascuna riga si possa modificare o cancellare la riga corrispondente;

    per ora ho provato a scrivere solo la parte relativa al cancella (admin.php) ma non riesco effttivamente a cancellare la riga..

    credo che il problema sia la riga 13:
    if ($idriga <> $riga) {
    poiche se al posto di $riga metto manualmente l'ID della riga che voglio cancellare tutto va a posto...

    vi posto il codice delle mie paginette:

    form.php
    --------------
    <form method="post" action="registra.php">
    <div align="center">




    <span class="Stile45">
    ID: <input name="id" type="text" size="4">
    NOME: <input name="nome" type="text" size="10">
    COGNOME: <input name="cognome" type="text"size="10">
    NICK: <input name="nick" type="text"size="10">
    EMAIL: <input name="email" type="text" id="email" size="10"></span></p>
    <p align="center" class="Stile45">

    QUALE REGOLAMENTO GIOCHI?1.0 <input name="rules1" type="checkbox" value="1.0"> 2.0 <input name="rules2" type="checkbox" value="2.0"> DDM GUILD <input name="rules3" type="checkbox" value="Guild">




    </p>
    <p align="center" class="Stile45">QUAL'E' IL MIGLIOR SET USCITO FINO AD ORA? <textarea name="preferito" cols="20" rows="1"></textarea>
    </p>
    <p align="center" class="Stile45">CONTINUERAI A COLLEZIONARE LE MINIATURE D&amp;D? SI<input type="radio" name="voto" value="si"> NO<input type="radio" name="voto" value="no">
    </p>
    <p align="center"> <input type="submit" name="invia" value="Invia">
    </p>
    </div>
    </form>


    registra.php
    ---------------------
    <?php
    $textfile=fopen("utenti.txt", "a");
    $id=$_POST["id"];
    $nome=$_POST["nome"];
    $cognome=$_POST["cognome"];
    $nick=$_POST["nick"];
    $email=$_POST["email"];
    $rules1=$_POST['rules1'];
    $rules2=$_POST['rules2'];
    $rules3=$_POST['rules3'];
    $regolamento="$rules1 $rules2 $rules3";
    $preferito=$_POST["preferito"];
    $collezionare=$_POST["voto"];
    $datiform="$id|$nome|$cognome|$nick|$email|$regola mento|$preferito|$collezionare \n";
    fwrite($textfile,$datiform);

    echo "<font color=#FFFF00>grazie per esserti iscritto</font>";
    fclose($textfile);
    ?>



    visualizza.php
    ------------------------
    <table>
    <td valign="top" background="immagini/Aberrations_r3_c1.jpg"><p align="center"></p></p><table width="750" p align="center" border="0" cellpadding="0" cellspacing="0" bordercolor="#000000">
    <tr>
    <td><?php
    $textfile=fopen("utenti.txt", "r");
    while ($rigafile=fgets($textfile,1024)) {
    $campiriga=explode("|", $rigafile);
    $idID=$campiriga[0];
    $idnome=$campiriga[1];
    $idcognome=$campiriga[2];
    $idnick=$campiriga[3];
    $idmail=$campiriga[4];
    $idversione=$campiriga[5];
    $idpreferito=$campiriga[6];
    $idcontinua=$campiriga[7];

    echo "<tr><td>$idID</td> <td>$idnome</td> <td>$idcognome</td> <td>$idnick</td> <td>$idmail</td> <td>$idversione</td> <td>$idpreferito</td> <td>$idcontinua</td> <td>modifica</td> <td>cancella</td></tr>";


    }
    fclose($textfile);
    ?></td>
    </tr>
    </table>


    admin.php
    ------------------
    <?php
    $azione=$_GET["action"];
    $riga=$_GET["row"];
    if ($azione=='cancella'){


    $textfile = fopen("utenti.txt", "r");
    $textfile_new = fopen("utenti_new.txt", "a");

    while ($rigafile = fgets($textfile,1024)) {
    $campiriga = explode("|", $rigafile);
    $idriga = $campiriga[0];
    if ($idriga <> $riga) {
    fwrite($textfile_new, $rigafile);
    }
    }

    fclose($textfile);
    fclose($textfile_new);

    unlink("utenti.txt");
    rename("utenti_new.txt","utenti.txt");

    echo "Cancellazione eseguita con successo
    ";
    }


    if ($azione=='modifica'){

    // codice per modificare...

    }
    ?>

    utenti.txt
    -------------------
    1|Roberto|Bianconi|Robysdc|robisdc@libero.it||Unde rdark|no
    2|Roberto|Bianconi|Robysdc|robisdc@libero.it||Unde rdark|no
    3|max|teo|max|max@libero.it|s|Harbinger|no
    4|erik|pettinari|lillo|lillo@tin.it|Guild|Dragoney e|si


    Sapete aiutarmi?
    Vi prego di essere "elementari" nelle eventuali spiegazioni data la mia scarsa competenza in materia...

    GRAZIE MILLE A TUTTI..

    Roberto

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    consiglio: per ottenere piu' facilmente aiuto conviene mettere il codice negli appositi tag.

    Questo mi sembra errato
    Codice PHP:
    [url='admin.php?row=<?=$idriga?>&action=cancella']cancella[/url]
    Da correggere così
    Codice PHP:
    [url='admin.php?row=<?php echo $idriga ?>&action=cancella']cancella[/url]
    lo stesso errore lo hai anche per il link modifica
    prova se va
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    purtroppo non va...

    l'applicazione mi dice "cancellazione eseguita con successo" ma poi nel database la riga resta..

    grazie mille comunque dell'aiuto


    PS
    appena posso provo a contattare l'amministratore per mettere i tag, ho provato ad editare il post ma mi dice che dopo un ora nn è più possibile

  4. #4
    Nel file "visualizza.php"

    Codice PHP:
    echo "<tr><td>$idID</td> <td>$idnome</td> <td>$idcognome</td> <td>$idnick</td> <td>$idmail</td> <td>$idversione</td> <td>$idpreferito</td> <td>$idcontinua</td> <td>[url='admin.php?row=<?=$idriga?>&action=modifica']modifica[/url]</td> <td>[url='admin.php?row=<?=$idriga?>&action=cancella']cancella[/url]</td></tr>";
    1° perchè utilizzi "<?php $idriga ?>" e non direttamente "$idriga"?
    Sei già all'interno di una blocco di php, quindi non ti serve riaprire e chiuderlo.

    2° "<a href='admin.php?row=<?=$idriga?>..."
    la variabile $idriga dove viene inizializzata?

    Nel file "admin.php" aggiungi la seguente riga in modo da controllare quali dati arrivano al tuo script:
    Codice PHP:
    <?php
    $azione
    =$_GET["action"];
    $riga=$_GET["row"];
    var_dump($_GET);  //Aggiungi Questa riga

    if ($azione=='cancella'){
    .....
    Sicuramente al tuo script di cancellazione non arrivano i dati che tu prevedi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Innanzi tutto grazie per la risposta...

    ho modificato il codice in questo modo:


    visualizza.php
    -----------------------------

    Codice PHP:
    <table>
     <tr>
        <td><?php
     $textfile
    =fopen("utenti.txt""r");
     while (
    $rigafile=fgets($textfile,1024))  {
       
    $campiriga=explode("|"$rigafile);
       
    $idID=$campiriga[0];
       
    $idnome=$campiriga[1];
       
    $idcognome=$campiriga[2];
       
    $idnick=$campiriga[3];
       
    $idmail=$campiriga[4];
       
    $idversione=$campiriga[5];
       
    $idpreferito=$campiriga[6];
       
    $idcontinua=$campiriga[7];

         echo 
    "<tr><td>$idID</td> <td>$idnome</td> <td>$idcognome</td> <td>$idnick</td> <td>$idmail</td> <td>$idversione</td> <td>$idpreferito</td> <td>$idcontinua</td> <td>[url='admin.php?row=<?=$idID?>&action=modifica']modifica[/url]</td> <td>[url='admin.php?row=<?=$idID?>&action=cancella']cancella[/url]</td></tr>";
        

     }
     
    fclose($textfile);
    ?></td>
      </tr>
    </table>


    admin.php
    -----------------------

    Codice PHP:
    <?php
    $azione
    =$_GET["action"];
    $riga=$_GET["row"];


    if (
    $azione=='cancella'){


    $textfile fopen("utenti.txt""r");
    $textfile_new fopen("utenti_new.txt""a");

    while (
    $rigafile fgets($textfile,1024)) {
        
    $campiriga explode("|"$rigafile);
        
    $idriga $campiriga[0];
    if (
    $idriga <> $riga) {
    fwrite($textfile_new$rigafile);
       }
    }

    fclose($textfile);
    fclose($textfile_new);

    unlink("utenti.txt");
    rename("utenti_new.txt","utenti.txt");

    echo 
    "Cancellazione eseguita con successo
    "
    ;
    }


    if (
    $azione=='modifica'){
      
    // codice per modificare...  

    }
    ?>
    così ancora non va, mi dice ancora cancellazione effettuata ma poi non è effettivamente così..

    se aggiungo in admin.php la linea di codice che mi hai suggerito:
    Codice PHP:
    var_dump($_GET); 
    ottengo questo messaggio:

    array(2) { ["row"]=> string(7) "" ["action"]=> string(8) "cancella" } Cancellazione eseguita con successo

    sinceramente non so come interpretarlo.. sono un novellino purtroppo..

    mi sapresti indicare cosa modificare avendo sotto gli occhi questo messaggio?

    Grazie comunque per la pazienza

  6. #6
    il comando var_dump ti stampa cosa contiene la variabile che gli passi.
    nel tuo caso $_GET contiene 2 variabili:


    "row" di tipo string(7) con valore ""
    "action" di tipo string(8) con valore "cancella"

    In pratica alla pagina admin.php non arriva nessun valore per il campo row.

    Guardando la pagina visualizza.php c'è il seguente errore:

    "....<a href='admin.php?row=<?=$idID?>&action=cancella'>...."

    siccome sei dentro un echo l'aprire ed il chiudere una sezione php è sbagliato.

    La forma corretta è:
    "....<a href='admin.php?row=$idID&action=cancella'>...."

    sarà l'interprete php a valorizzare $idID nella stringa.


    Correggi in visualizza.php e vedi se così funziona.

    Codice PHP:

    echo "<tr><td>$idID</td> <td>$idnome</td> <td>$idcognome</td> <td>$idnick</td> <td>$idmail</td> <td>$idversione</td> <td>$idpreferito</td> <td>$idcontinua</td> <td>[url='admin.php?row=$idIDaction=modifica']modifica[/url]</td> <td>[url='admin.php?row=$idID&action=cancella']cancella[/url]</td></tr>"

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    GRAZIE MILLE!!

    era proprio quello...

    sono proprio un principiante...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.