Modifica Cancella Record tramite Form PHP Mysql

da $q="DELETE FROM eventi WHERE id='$id'";
a così $q="DELETE id FROM eventi WHERE id='$id'";

o così $q="DELETE * FROM eventi WHERE id='$id'";

subito dopo il DELETE ci vuole qualcosa o no?

purtroppo niente :crying:

(in ogni caso continuo a ringraziare il vostro interessamento!)
 
ciao
vediamo di cercare dov'è l'inghippo.
prima cosa gnocca:
passando col mouse sul link [mod] e/o [del] ti appare nella riga di comando del brow l'indicazione
http://....../modifica_cancella.php?mod=333 se passi su [mod] o
http://....../modifica_cancella.php?del=333 se passi su [del] e se clicchi su del appare l'alert?
(gli id sono messi a caso)
poi per prima cosa commenta tutti i ritorni automatici in modo da vedere cosa succede
//echo "<meta http-equiv='Refresh' content=.....> (per il ritorno all'elenco usa l'indietro del bw)
poi partiamo per prima dalla parte che elimina che è la più semplice (il resto non toccarlo) e mettiamo dei var_dump e degli echo
PHP:
<?php  
}elseif(isset($_get['del'])){//hai cliccato su ELIMINA  
    var_dump($_get['del']);//**** primo var_dump
	$id=addslashes(htmlspecialchars($_get['del']));//con un po' di protezione al get 
    $q="DELETE FROM eventi WHERE ID='$id'";
    var_dump($q);//**** secondo var_dump
	$ris=mysql_query($q);
	 var_dump($ris);//**** terzo var_dump
    echo "eliminato il record $id";  
    //qui il ritorno automatico alla pag stampa_eventi.php 
    //echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";  
}else{
    echo "i get non funziano";//**** avviso che i get non vengole trasmessi o letti
	//se accedi direttamente a questa pagina viene riportato subito alla stampa_eventi.php 
    //echo "<meta http-equiv='Refresh' content='0; URL=stampa_eventi.php'>";  
} 
?>
fatto questo clicca su un [del] di un qualsiasi record dell'elenco e posta i risultati

dimenticavo: @max
http://dev.mysql.com/doc/refman/5.0/en/delete.html
 
Ultima modifica:
ciao
vediamo di cercare dov'è l'inghippo.
prima cosa gnocca:
passando col mouse sul link [mod] e/o [del] ti appare nella riga di comando del brow l'indicazione
http://....../modifica_cancella.php?mod=333 se passi su [mod] o
http://....../modifica_cancella.php?del=333 se passi su [del] e se clicchi su del appare l'alert?
(gli id sono messi a caso)
poi per prima cosa commenta tutti i ritorni automatici in modo da vedere cosa succede
//echo "<meta http-equiv='Refresh' content=.....> (per il ritorno all'elenco usa l'indietro del bw)
poi partiamo per prima dalla parte che elimina che è la più semplice (il resto non toccarlo) e mettiamo dei var_dump e degli echo
PHP:
<?php  
}elseif(isset($_get['del'])){//hai cliccato su ELIMINA  
    var_dump($_get['del']);//**** primo var_dump
	$id=addslashes(htmlspecialchars($_get['del']));//con un po' di protezione al get 
    $q="DELETE FROM eventi WHERE ID='$id'";
    var_dump($q);//**** secondo var_dump
	$ris=mysql_query($q);
	 var_dump($ris);//**** terzo var_dump
    echo "eliminato il record $id";  
    //qui il ritorno automatico alla pag stampa_eventi.php 
    //echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";  
}else{
    echo "i get non funziano";//**** avviso che i get non vengole trasmessi o letti
	//se accedi direttamente a questa pagina viene riportato subito alla stampa_eventi.php 
    //echo "<meta http-equiv='Refresh' content='0; URL=stampa_eventi.php'>";  
} 
?>
fatto questo clicca su un [del] di un qualsiasi record dell'elenco e posta i risultati

dimenticavo: @max
http://dev.mysql.com/doc/refman/5.0/en/delete.html

Ciao, se passo col mouse sopra "mod" mi compare il link come hai scritto tu, naturalmente con gli ID veri.

Se clicco su "del" mi compare l'alert, poi confermo la cancellazione, e mi ristampa gli eventi senza che nessuno sia stato eliminato.

___________Dopo la modifica della parte della cancellazione da te indicata________________

Quando confermo mi compare nel browser "i get non funziano".
 
ciao
penso di aver fatto un errore di scrittura
correggi su tutti

$_get['mod']
$_get['del']

in

$_GET['mod']
$_GET['del']
e verifica che non abbia messo anche $_post da correggere eventualmente in $_POST
e riprova

mannaggia!!!

@max
è sempre meglio far riferimento al manuale ufficiale
 
Sempre GRAZIE per l'aiuto!

ora la cancellazione funziona!

ma la modifica no.

Ti riporto l'errore :

errore.jpg


e la linea 20 sarebbe :

Codice:
$riga=mysql_fetch_array($ris);

dopodichè faccio una prova, visto che compaiono i campi (vedi immagine), inserisco lo stesso i dati per la modifica (data yyyy-mm-gg , evento, luogo )

e compare questo:

errore_modifica.jpg

e la linea 5 di modifica_cancella.php è questa:

Codice:
$id=$_POST['ID'];

=======================================================================

Per non confonderci, riporto il file modifica_cancella.php per intero:

Codice:
<?php   
include_once ("config.php");  
include_once ("connect.php");  
if(isset($_POST['modifica'])){//se hai premuto il submit del form modifica  
    $id=$_POST['ID'];  
    $data=$_POST['data'];  
    $evento=$_POST['evento'];  
    $luogo=$_POST['luogo'];  
    $q="UPDATE eventi SET data='$data', evento='$evento', luogo='$luogo' WHERE ID='$id'";  
    $ris=mysql_query($q);  
    echo "aggiornato il record $id";  
    //qui il ritorno automatico alla pag stampa_eventi.php 
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";  
}  
//***********  
if(isset($_GET['mod'])){//hai cliccato su MODIFICA  
    $id=addslashes(htmlspecialchars($_GET['mod']));//con un po' di protezione al get 
    $q="SELECT FROM eventi  WHERE ID='$id'";  
    $ris=mysql_query($q);  
    $riga=mysql_fetch_array($ris);  
    $data=$riga['data'];//in che modo inserisci la data? io usalmente uso il timestamp   
    $evento=$riga['evento'];   
    $luogo=$riga['luogo'];  
    //e qui il form di modifica (entro e esco da php ma poi se vuoi puoi renderlo tutto php)  
    //nei campi di input si visualizza il valore originale  
?>  
<!-- form modifica -->  
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="modifica">  
  <p>  
    <input name="id" type="hidden" id="id" value="<?php echo $id;?>">  
    <br>  
    <input name="data" type="text" id="data" value="<?php echo $data;?>">  
    <br>  
    <input name="evento" type="text" id="evento" value="<?php echo $evento;?>">  
    <br>  
    <input name="luogo" type="text" id="luogo" value="<?php echo $luogo;?>">  
  </p>  
  <p>  
    <input name="modifica" type="submit" id="modifica" value="modifica">  
</p>  
</form> 
<!-- 
se vuoi qui puoi mettere un link per uscire senza passare dall'uppaggio 
<a href="stampa_eventi.php">[esci]</a> 
eventualmente anche qui con una conferma 
<a href="stampa_eventi.php" onclick="return(confirm('ATTENZIONE: le eventuali modifiche non verranno salvate'))" >[esci]</a> 
-->  
<?php   
}elseif(isset($_GET['del'])){//hai cliccato su ELIMINA   
    var_dump($_GET['del']);//**** primo var_dump 
    $id=addslashes(htmlspecialchars($_GET['del']));//con un po' di protezione al get  
    $q="DELETE FROM eventi WHERE ID='$id'"; 
    var_dump($q);//**** secondo var_dump 
    $ris=mysql_query($q); 
     var_dump($ris);//**** terzo var_dump 
    echo "eliminato il record $id";   
    //qui il ritorno automatico alla pag stampa_eventi.php  
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";   
}else{ 
    echo "i get non funzionano";//**** avviso che i get non vengole trasmessi o letti 
    //se accedi direttamente a questa pagina viene riportato subito alla stampa_eventi.php  
    //echo "<meta http-equiv='Refresh' content='0; URL=stampa_eventi.php'>";   
}  
?>


Sarò ripetitivo, ma comunque sempre grazie per il vostro interessamento!
 
ciao
modifica
HTML:
<input name="id" type="hidden" id="id" value="<?php echo $id;?>">
in
HTML:
<input name="ID" type="hidden" id="id" value="<?php echo $id;?>">
oppure
PHP:
if(isset($_POST['modifica'])){//se hai premuto il submit del form modifica  
    $id=$_POST['ID'];  
    $data=$_POST['data'];
in
PHP:
if(isset($_POST['modifica'])){//se hai premuto il submit del form modifica  
    $id=$_POST['id'];  
    $data=$_POST['data'];
 
ciao
non disperare, oggi facciamo lo stesso lavoro che abbiamo fatto per il delete e vedrai che l'inghippo si trova

dimenticavo:
se clicchi su modifica ti appare il form con i campi riempiti con i vecchi dati?
 
Ultima modifica:
ciao
non disperare, oggi facciamo lo stesso lavoro che abbiamo fatto per il delete e vedrai che l'inghippo si trova

dimenticavo:
se clicchi su modifica ti appare il form con i campi riempiti con i vecchi dati?

Grazie per l'aiuto!

Se clicco su modifica esce l'errore che ti ho riportato con l'immagine.

compaiono solo i tre campi da immettere per la modifica.
 
ciao
per prima cosa fai una verifica su tutto lo script cioè controlla tutti i nomi dei campi e di variabile, i nomi devono essere uguali sia maiscole/minuscole
esempi:
.......php?Pinco=aaaa => $_GET['Pinco']
<input name="paLLino" .....> => $_POST['paLLino']
nome campo tabella soFoNisba => es. nelle query .... WHERE soFoNisba='$variabile', nell'estrazione $riga['soFoNisba']

php in questi casi è molto delicato anzi CASEsensitive
fai questo controllo, l'undefinite index è spesso dovuto a questo
 
ciao
per prima cosa fai una verifica su tutto lo script cioè controlla tutti i nomi dei campi e di variabile, i nomi devono essere uguali sia maiscole/minuscole
esempi:
.......php?Pinco=aaaa => $_GET['Pinco']
<input name="paLLino" .....> => $_POST['paLLino']
nome campo tabella soFoNisba => es. nelle query .... WHERE soFoNisba='$variabile', nell'estrazione $riga['soFoNisba']

php in questi casi è molto delicato anzi CASEsensitive
fai questo controllo, l'undefinite index è spesso dovuto a questo

Ho corretto! alcune volte avevamo scritto 'mod' e altre 'modifica'.

adesso ho sistemato e non compare più quell'errore, ma adesso quando voglio modificare esce "i get non funzionano".

ecco il codice per intero :

Codice:
<?php   
include_once ("config.php");  
include_once ("connect.php");  
if(isset($_POST['modifica'])){//se hai premuto il submit del form modifica  
    $id=$_POST['id'];  
    $data=$_POST['data'];  
    $evento=$_POST['evento'];  
    $luogo=$_POST['luogo'];  
    $q="UPDATE eventi SET data='$data', evento='$evento', luogo='$luogo' WHERE ID='$id'";  
    $ris=mysql_query($q);  
    echo "aggiornato il record $id";  
    //qui il ritorno automatico alla pag stampa_eventi.php 
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";  
}  
//***********  
if(isset($_GET['modifica'])){//hai cliccato su MODIFICA  
    $id=addslashes(htmlspecialchars($_GET['modifica']));//con un po' di protezione al get 
    $q="SELECT FROM eventi  WHERE ID='$id'";  
    $ris=mysql_query($q);  
    $riga=mysql_fetch_array($ris);  
    $data=$riga['data'];//in che modo inserisci la data? io usalmente uso il timestamp   
    $evento=$riga['evento'];   
    $luogo=$riga['luogo'];  
    //e qui il form di modifica (entro e esco da php ma poi se vuoi puoi renderlo tutto php)  
    //nei campi di input si visualizza il valore originale  
?>  
<!-- form modifica -->  
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="modifica">  
  <p>  
    <input name="id" type="hidden" id="id" value="<?php echo $id;?>">  
    <br>  
    <input name="data" type="text" id="data" value="<?php echo $data;?>">  
    <br>  
    <input name="evento" type="text" id="evento" value="<?php echo $evento;?>">  
    <br>  
    <input name="luogo" type="text" id="luogo" value="<?php echo $luogo;?>">  
  </p>  
  <p>  
    <input name="modifica" type="submit" id="modifica" value="modifica">  
</p>  
</form> 

<!-- se vuoi qui puoi mettere un link per uscire senza passare dall'uppaggio  
<a href="stampa_eventi.php">[esci]</a> -->

<!-- eventualmente anche qui con una conferma --> 
<a href="stampa_eventi.php" onclick="return(confirm('ATTENZIONE: le eventuali modifiche non verranno salvate'))" >[esci]</a> 
 
<?php   
}elseif(isset($_GET['del'])){//hai cliccato su ELIMINA   
    var_dump($_GET['del']);//**** primo var_dump 
    $id=addslashes(htmlspecialchars($_GET['del']));//con un po' di protezione al get  
    $q="DELETE FROM eventi WHERE ID='$id'"; 
    var_dump($q);//**** secondo var_dump 
    $ris=mysql_query($q); 
     var_dump($ris);//**** terzo var_dump 
    echo "eliminato il record $id";   
    //qui il ritorno automatico alla pag stampa_eventi.php  
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";   
}else{ 
    echo "i get non funzionano";//**** avviso che i get non vengole trasmessi o letti 
    //se accedi direttamente a questa pagina viene riportato subito alla stampa_eventi.php  
    //echo "<meta http-equiv='Refresh' content='0; URL=stampa_eventi.php'>";   
}  
?>
 
ciao
riposta anchre la pagina che stai usando con l'elenco

ecco il file stampa_eventi.php

Codice:
<?php 
include_once ("config.php");  
include_once ("connect.php");  
// Get all the data from the "example" table 
$result = mysql_query("SELECT * FROM eventi ORDER BY CAST(data AS DATE)")  
or die(mysql_error());   
echo "<table border='1'>"; 
echo "<tr> <th>Data</th> <th>Evento</th> <th>Luogo</th><th>MOD</th><th>DEL</th></tr>"; 
// keeps getting the next row until there are no more to get 
while($row = mysql_fetch_array( $result )) { 
    // lettura dell'id è indispensabile 
    $id=$row['ID'];//ti serve quando dai il modifica o il delete 
    // Print out the contents of each row into a table 
    //***semplifica*** 
    echo "<tr><td>".$row['data']."</td><td>".$row['evento']."</td><td>".$row['luogo']."</td>"; 
    //e qui le ultime due celle con i link per modificare o aliminare 
    echo "<td><a href=\"modifica_cancella.php?mod=$id\">[mod]</a></td>"; 
    echo"<td><a href=\"modifica_cancella.php?del=$id\" onclick=\"return(confirm('stai eliminando evento del ".$row['data']."'))\" >[del]</a></td></tr>"; 
    //ti ho messo la data nella conferma perche evento può essere pericoloso 
    //es se hai evento = l'onomastico di pinco l'apostrofo interferisce e ti fa casino, mentre nelle date non hai mai l'apostrofo 
}  
echo "</table>"; 
?>
 
ciao
intanto hai messo
if(isset($_GET['modifica'])){//hai cliccato su MODIFICA
in elenco hai
echo "<td><a href=\"modifica_cancella.php?mod=$id\">[mod]</a></td>";
correggi in
if(isset($_GET['mod'])){//hai cliccato su MODIFICA
poi alla riga dell select mi ero dimenticato l'asterisco *
PHP:
<?php
//.......
if(isset($_GET['mod'])){//hai cliccato su MODIFICA  
	$id=addslashes(htmlspecialchars($_GET['mod']));//con un po' di protezione al get 
    $q="SELECT * FROM eventi  WHERE ID='$id'"; //!!!!qui mi ero dimenticato l'asterisco :( 
	$ris=mysql_query($q);  
    $riga=mysql_fetch_array($ris);
	//.... 
?>
comunque per sicurezza verifica meglio anche che
$data=$riga['data'];
$evento=$riga['evento'];
$luogo=$riga['luogo'];
i nomi corrispondono ai nomi dei campi?

per il resto non misembra che ci debbano essere altri (O)rrori
fammi sapere
 
Grazieeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee!!!!!!!!!

Finalmente tutto funziona!

nel caso potesse servire a qualcun'altro, posto il codice corretto:

Codice:
<?php   
include_once ("config.php");  
include_once ("connect.php");  
if(isset($_POST['mod'])){//se hai premuto il submit del form mod  
    $id=$_POST['id'];  
    $data=$_POST['data'];  
    $evento=$_POST['evento'];  
    $luogo=$_POST['luogo'];  
    $q="UPDATE eventi SET data='$data', evento='$evento', luogo='$luogo' WHERE ID='$id'";  
    $ris=mysql_query($q);  
    echo "aggiornato il record $id";  
    //qui il ritorno automatico alla pag stampa_eventi.php 
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";  
}  
//***********  
if(isset($_GET['mod'])){//hai cliccato su mod  
    $id=addslashes(htmlspecialchars($_GET['mod']));//con un po' di protezione al get 
    $q="SELECT * FROM eventi  WHERE ID='$id'";  
    $ris=mysql_query($q);  
    $riga=mysql_fetch_array($ris);  
    $data=$riga['data'];//in che modo inserisci la data? io usalmente uso il timestamp   
    $evento=$riga['evento'];   
    $luogo=$riga['luogo'];  
    //e qui il form di mod (entro e esco da php ma poi se vuoi puoi renderlo tutto php)  
    //nei campi di input si visualizza il valore originale  
?>  
<!-- form modifica -->  
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="mod">  
  <p>  
    <input name="id" type="hidden" id="id" value="<?php echo $id;?>">  
    <br>  
    <input name="data" type="text" id="data" value="<?php echo $data;?>">  
    <br>  
    <input name="evento" type="text" id="evento" value="<?php echo $evento;?>">  
    <br>  
    <input name="luogo" type="text" id="luogo" value="<?php echo $luogo;?>">  
  </p>  
  <p>  
    <input name="mod" type="submit" id="mod" value="modifica">  
</p>  
</form> 

<!-- se vuoi qui puoi mettere un link per uscire senza passare dall'uppaggio  
<a href="stampa_eventi.php">[esci]</a> -->

<!-- eventualmente anche qui con una conferma --> 
<a href="stampa_eventi.php" onclick="return(confirm('ATTENZIONE: le eventuali modifiche non verranno salvate'))" >[esci]</a> 
 
<?php   
}elseif(isset($_GET['del'])){//hai cliccato su ELIMINA   
    var_dump($_GET['del']);//**** primo var_dump 
    $id=addslashes(htmlspecialchars($_GET['del']));//con un po' di protezione al get  
    $q="DELETE FROM eventi WHERE ID='$id'"; 
    var_dump($q);//**** secondo var_dump 
    $ris=mysql_query($q); 
     var_dump($ris);//**** terzo var_dump 
    echo "eliminato il record $id";   
    //qui il ritorno automatico alla pag stampa_eventi.php  
    echo "<meta http-equiv='Refresh' content='3; URL=stampa_eventi.php'>";   
}else{ 
    echo "i get non funzionano";//**** avviso che i get non vengole trasmessi o letti 
    //se accedi direttamente a questa pagina viene riportato subito alla stampa_eventi.php  
    //echo "<meta http-equiv='Refresh' content='0; URL=stampa_eventi.php'>";   
}  
?>
 

Discussioni simili