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

    modifica su database testuale e problemi...

    Salve,

    data la disponibilità e la competenza dimostrata da questa comunità nell'aiutare anche un utente inesperto come me vi sottopongo un altro problema che ho riscontrato..

    sto creando una semplice applicazione che mi consenta di modificare o cancellare i dati inseriti in un database di testo mediante un form..

    la parte relativa all'azione cancella funziona bene mentre non mi riesce di far funzionare il modifica..
    quando lo lancio come risultato mi ritrovo l'intero database cancellato ed esclusione della prima riga..

    vi posto il mio codice sperando nel vostro aiuto..

    utenti.txt (è il database di testo nel quale andare a fare le modifiche)
    ---------------
    1|Roberto|Bianconi|Robysdc|roby@libero.it||Underda rk|no
    2|Roberto|Bianconi|Robysdc|roby@libero.it||Underda rk|no
    3|max|teo|max|max@libero.it|s|Harbinger|no
    4|erik|pettinari|lillo|lillo@tin.it|Guild|Dragoney e|si

    visualizza.php (è la pagina che recupera i dati dal database. li visualizza e consente di scegliere se modificare o cancellare la riga)
    Codice 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>[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 (il file che gestisce le operazioni di cancellazione e modifica)
    ---------------------
    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'){
       
    $textfile fopen("utenti.txt""r");
       while (
    $rigafile fgets($textfile,1024)) {
        
    $campiriga explode("|"$rigafile);
        
    $idriga $campiriga[0];
    if (
    $idriga == $riga) {

       
    $idID=$campiriga[0];
       
    $idnome=$campiriga[1];
       
    $idcognome=$campiriga[2];
       
    $idnick=$campiriga[3];
       
    $idmail=$campiriga[4];

       }
    }
    fclose($textfile);



    echo 
    "
    <html>
    <head>



      <tr>
      <td></td>
       <td valign='top' ><p align='center'></p>
         <p align='center'></p>
         <p align='center'></p>
         <p align='center'>PANNELLO DI AMMINISTRAZIONE</p>
         <table width='750' border='0' align='center' cellpadding='0' cellspacing='0' bgcolor='#CCCCCC'>
         <tr>
             <td>
             <form method='post' action='update.php'>
               <div align='center'>
                 



                   <span class='Stile45'>
                   ID: <input name='id' type='text' size='5' value='
    $idID'>
                   NOME: <input name='nome' type='text' size='10' value='
    $idnome'>
                   COGNOME: <input name='cognome' type='text'size='10' value='
    $idcognome'>
                   NICK: <input name='nick' type='text'size='10' value='
    $idnick'>
                   EMAIL: <input name='email' type='text' id='email' size='10' value='
    $idmail'></p>
                 <p align='center' class='Stile45'>


    <p align='center'> <input type='submit' name='invia' value='Modifica'>
    </p>
    </div>
    </form></td>
    </tr> </table>
    <p align='center'></p>
    <p align='center'></p>
    <p align='center'></p>
    <p align='center'></p>
    <p align='center'></p>
    <p align='center'></p>
    <table>
      <tr></tr>
    </table>
    </body>
    </html>"
    ;

    }
    ?>
    update.php (il motore che dovrebbe modificare il database testuale...)
    -------------------
    Codice PHP:
    <?php
    $riga
    =$_POST["id"];

    // DEBUG echo "l'ID è: $riga";   fin qui il codice funziona e mi riconosce l'ID della riga da cancellare

    $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) {
      
      
    $cID=$_POST["id"];
      
    $cnome=$_POST["nome"];
      
    $ccognome=$_POST["cognome"];
      
    $cnick=$_POST["nick"];
      
    $cmail=$_POST["email"];
      
    $nuovariga="$cID|$cnome|$ccognome|$cnick|$cmail \n";

    // DEBUG echo $nuovariga;
    // ERRORE... non mi scrive questo echo quindi credo che $idriga == $riga è sempre falsa....

    fwrite($textfile_new$nuovariga);
       } else {
         
    fwrite($textfile_new$rigafile);
    }

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

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

    echo 
    "Aggiornamento eseguito con successo
    "
    ;
    }
    ?>
    come vi dicevo, quando clicco sul link modifica (dal file visualizza.php), l'applicazione (admin.php) recupera la giusta riga dal database (utenti.txt) e la mostra nel form;

    a questo punto quando dal form, modificati i valori cerco di riscrivere sul database i valori modificati l'applicazione (update.php) mi dice "Aggiornamento eseguito con successo" ma in realtà mi ritrovo con un database contenente soltanto la prima riga.. in pratica perdo tutte le righe fatta eccezione per la prima..

    ho provato una sorta di debug rozzo di update.php ma nn ne sono venuto a capo

    spero possiate aiutarmi spiegandomi magari in maniera semplice (sono davvero un novellino...) dove sbaglio

    Grazie anticipatamente a tutti voi

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Mi scuso con tutti..

    mi sono appena accorto dell'errore.. una parentesi chiusa troppo presto..

    sono davvero un novellino...

    mi scuso per la segnalazione

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 © 2025 vBulletin Solutions, Inc. All rights reserved.