• User

    Modificare/cancellare dati da database MySql

    Ciao a tutti!
    E' da poco che uso il PHP, ma con lo studio (soprattutto degli script liberi) sto migliorando.
    Ho quasi terminato uno script gestionale, ma ho un problema con la modifica/cancellazione dei record partendo da un form di ricerca.
    Questo è il form per cercare il cognome:

    
    <form action="cerca.php" method="post">
    
    
    Cognome:<input type="text" name="cognome" /> <br />
    
    
    <input type="submit" name="Submit" value="Cerca" /> <br />
    
    
    </form>
    
    
    
    

    questo è il file cerca.php

    
    <?php
    
    
    include 'config.php';
    include 'archivio.php';
    $db_host = "localhost";
    $db_user = "root";
    $db_password = '';
    $db_database = "pincopallino";
     
    $connessione=mysql_connect($db_host,$db_user,$db_password)
        OR die("Errore, non posso connettermi al database: " . mysql_error());
    mysql_select_db($db_database,$connessione)
        OR die("Errore, non posso selezionare il database: " . mysql_error());
     
    $cognome = $_POST['cognome'];
    
    
    $query = "SELECT nome, cognome, tel, email, testo, str_data FROM archivio WHERE cognome = '".$cognome."'"; 
    
    
    $result = mysql_query($query); 
    $num = mysql_num_rows($result); 
    
    
    if ($num == 0) 
    echo "Anagrafica non presente"; 
    
    
    while ($row = mysql_fetch_array($result)) 
     {
     ?>
     <table border="0">
      <tr>
      <td>
      
      </td>
      
      </tr>
      <tr>
      <td>
     <?php
     //$date = $row['str_data'];
     //$data = $date;
     //$data = date("d-m-Y", $date);
    	echo "Nome: ";
    	echo $row['nome']." | Cognome: ";
    	echo $row['cognome']." | Tel: ";
    	echo $row['tel']." | <br>email";
    	echo $row['email']."<br>"; 
    	echo $row['testo']."<br>";
    	//echo $row['str_data']."<br><br>";
    	echo date("d-m-Y",$row['str_data'])."<br><br>";
     
           echo "<br>
          <a href=\"cancella.php?id=$nome\">Cancella</a> |
          <a href=\"modifica.php?id=$nome\">Modifica</a>
          <hr>";
    /*echo '<td><a href="modifica.php?id=' . $row['id'] . '">Edit</a></td>';
    echo '<td><a href="cancella.php?id=' . $row['id'] . '">Delete</a></td>';*/
     }
     ?>
     </td>
    
    
    </tr>
    </table>
    
    

    Questo codice funziona e mi restituisce le schede col cognome inserito, quando però provo a modificare o cancellare la scheda, mi fermo. Vi posto i codici delle 2 pagine per la modifica/cancellazione:

    modifica.php

    
    <?php
    include 'config.php';
    if(isset($_POST['mod_id'])&&(is_numeric($_POST['mod_id'])))
    {
      $id = $_POST['mod_id'];
      $nome = addslashes($_POST['nome']);
    	  $cognome = addslashes($_POST['cognome']);
    	  $tel = addslashes($_POST['tel']);
    	  $email = addslashes($_POST['email']);
    	  $testo = addslashes($_POST['testo']);
      $str_data = strtotime($_POST['data']);
      $sql = "UPDATE archivio SET nome='$nome',	  cognome='$cognome',	tel='$tel', email='$email', testo='$testo', str_data='$str_data' WHERE id = $id";
      if(mysql_query($sql) or die (mysql_error()))
      {
        echo "Modifica effettuata con successo.<br>
        Vai al <a href=\"index.php\">Calendario</a>";
      }
    }
    elseif (isset($_GET['id']) && is_numeric($_GET['id']))
    {
      $id = $_GET['id'];
      $query = mysql_query("SELECT nome, cognome, tel, email, testo, str_data FROM archivio WHERE id = $id") or die (mysql_error());
      $fetch = mysql_fetch_array($query)or die (mysql_error());
    	//$id = stripslashes($fetch['id']);
          $nome = stripslashes($fetch['nome']);
    	  $cognome = stripslashes($fetch['cognome']);
    	  $tel = stripslashes($fetch['tel']);
    	  $email = stripslashes($fetch['email']);
        $testo = stripslashes($fetch['testo']);
        $data = date("d-m-Y", $fetch['str_data']);
      ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">Nome:
    <input name="nome" type="text" value="<?php echo $nome; ?>">
    Cognome:
    <input name="cognome" type="text" value="<?php echo $cognome; ?>"><br>
    Tel:
    <input name="tel" type="text" value="<?php echo $tel; ?>">
    
    
    Email:<br>
    <input name="email" type="text" value="<?php echo $email; ?>"><br>
    <br>Note:<br>
    <textarea name="testo" cols="30" rows="8">
    <?php echo $testo; ?>
    </textarea>
    <br>Data:<br>
    <input name="data" type="text" value="<?php echo $data; ?>">
    <br><input name="mod_id" type="hidden" value="<?php echo $id; ?>">
    <input name="submit" type="submit" value="modifica">
    </form>
      <?php
    }
    ?>
    
    

    cancella.php

    
    <?php
    include 'config.php';
    if (isset($_GET['id']) && is_numeric($_GET['id']))
    {
      $del_id = $_GET['id'];
      $query = mysql_query("SELECT nome, cognome, tel, email, testo, str_data FROM archivio WHERE id ='$del_id'");
      $fetch = mysql_fetch_array($query);
      $nome = $fetch['nome'];
      $cognome = $fetch['cognome'];
      $data = date("d-m-Y", $fetch['str_data']); 
      ?>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <h1>Attenzione!</h1>
    Si sta per eliminare la scheda selezionata
    <b><?php echo stripslashes($nome); ?></b> 
    <b><?php echo stripslashes($cognome); ?></b>
    del <?php echo stripslashes($data); ?>.<br>
    Confermare per eseguire l'operazione.<br>
    <br>
    <input name="del_id" type="hidden" value="<?php echo $del_id; ?>">
    <input name="submit" type="submit" value="Cancella">
    </form>
      <?php
    }
    elseif(isset($_POST['del_id']) && is_numeric($_POST['del_id']))
    {
      $del_id2 = $_POST['del_id'];
      if (mysql_query("DELETE FROM archivio WHERE id = '$del_id2'")or die(mysql_error()))
      {
        echo "Cancellazione del servizio avvenuta con successo<br>
        <a href=\"index.php\">Torna al calendario</a>";
      }
    }
    ?>
    
    

    Qui, come ho scritto, mi blocco perchè mi esce una pagina bianca, sia se provo a modificare, sia se provo a cancellare.
    Qualche anima pia potrebbe aiutarmi? Grazie mille! 🙂


  • User Attivo

    Non ho letto tutto il codece ma dovresti guardare se nell'html che viene prodotto ci sono realmente tutte le variabili. Probabilmente non vengono passate tutte.
    Metti queste due righe alla fine del file config.php e riprova. Ti diranno qual è l'errore.

    [PHP]error_reporting(E_ALL);
    ini_set("display_errors", 1)[/PHP]

    Poi qesto
    [PHP]if(mysql_query($sql) or die (mysql_error()))
    {
    echo "Modifica effettuata con successo.<br>
    Vai al <a href="index.php">Calendario</a>";
    }[/PHP]

    trasformalo in
    [PHP]$query = mysql_query($sql) or die(mysql_error());
    if($query){
    echo "Ha funzionato";
    } else {
    echo "Non ha funzionato!";
    }[/PHP]
    Facci sapere.
    Ciao


  • User Attivo

    PS:

    Anche se non utile a risolvere il problema ma attendiamo il test di quanto proposto da Oslino. 😄

    Perché, se usi un file config.php, non inserisci lì gli estremi della connessione al database?

    Se dipende dal fatto che non ti serve la connessione in tutte le pagine, potresti comunque racchiuderla in una funzione per attivare la connessione solo dove ti serve.
    Se no rischi di dover modificare molti file nel caso in cui dovessi cambiare hosting.


  • User

    Scusate, ero fuori per lavoro. Oggi provo e vi faccio sapere!
    Intanto grazie per l'aiuto! 🙂