Modifica Cancella Record tramite Form PHP Mysql

ciao
mi sa che hai magic quotes sono abilitate
infatti mettendo addslahes dovrebbe darti
\"eee\"
e non
\\\"eee\\\"'
prova a togliere l'addslshes e mettere
PHP:
$evento = mysql_real_escape_string($_POST['evento']);
$luogo = mysql_real_escape_string($_POST['luogo']);
lascia il var_dump e fai la stessa prova
 
ciao
mi sa che hai magic quotes sono abilitate
infatti mettendo addslahes dovrebbe darti
\"eee\"
e non
\\\"eee\\\"'
prova a togliere l'addslshes e mettere
PHP:
$evento = mysql_real_escape_string($_POST['evento']);
$luogo = mysql_real_escape_string($_POST['luogo']);
lascia il var_dump e fai la stessa prova

fatto,


Nella pagina eventi viene stampato : Evento di prova \"evento di prova\" .
______________________________________

string(149) "UPDATE eventi SET data='2000-03-01', evento='Evento di prova \\\"evento di prova\\\"', luogo='Evento di prova \\\"evento di prova\\\"' WHERE ID='499'"

______________________________________

Voglio precisare che se :

inserisco l'evento tramite il form "inserisci.php" , l'evento mi viene scritto bene ... anche con il contenuto dentro le virgolette.

Mentre invece se voglio modificare un contenuto già inserito, tramite il form "modifica_cancella.php", tutto ciò che sta tra virgolette scompare.
 
Ultima modifica:
ciao
forse (e dico forse) ho trovato l'inghippo, vai sul form di modifica (vedi dove ho messo //***)

PHP:
<form method="POST" name="test" enctype="multipart/form-data"  action="modifica_cancella.php">         
<input type='hidden' name='id' value='$id'/>
Seleziona  la  DATA : <br> <input type="text" name="data" id="data" value="<?php echo $data;?>" size="50" ><input type="reset" value=" Calendario "
onclick="return showCalendar('data', '%Y-%m-%d');">
    <tr>
     <br><br>
    Modifica il TITOLO EVENTO:
    <tr><br>
    <tr><input name="evento" size="100" type="text" id="evento" value="<?php echo stripslashes($evento);//***?>" maxlength="50">
    <tr><br><br>
    Modifica il LUOGO:
    <tr><br>
  <tr><input name="luogo" size="100" type="text" id="luogo" value="<?php echo stripslashes($luogo);//***?>">  
  </p>  
  <p>  
    <input name="mod" type="submit" id="mod" value="modifica">  
</p>  
</form>
lascia il mysql_real_escape_string e il var_dump e riverifica.
penso che l'inghippo sia li in quanto leggi il valore proveniente dal db e che ha quindi gia gli slash, quindi se non li togli ne aggiunge ancora
mai ha dato il suggerimento quello che hai detto "con insert ok, con up ko"
 
Ciao,

forse io non ho spiegato bene la situazione.

1) apro inserisci_evento.php

scrivo la data : 23-03-2013 .
scrivo l'evento : Congresso Nazionale di Avellino "Il cuore oggi e domani".
scrivo il luogo : Hotel Avellino "Excelsior".

2) apro la pagina degli eventi:

e mi compare :
Data : 23-03-2013
Evento : Congresso Nazionale di Avellino "Il cuore oggi e domani".
luogo : Hotel Avellino "Excelsior".

Fin qui tutto ok!


3) Vorrei modificare l'evento...

apro modifica.php

e nel form di modifica mi compaiono i seguenti dati:

Data : 23-03-2013
Evento : Congresso Nazionale di Avellino
luogo : Hotel Avellino
__________________________________________________________

Ad inserire gli eventi ... tutto apposto...

è quando li voglio modificare che nel form non mi compare il testo tra le virgolette precedentemente inserito.
 
ciao
forse gli apici doppi ti chiudono il value
PHP:
value="<?php echo $evento; ?>"
prova con apici singoli
PHP:
value='<?php echo $evento; ?>'
eventualmente dovrai ripulire la stringa dagli apici singoli magari trasormandoli in doppi
PHP:
value='<?php echo str_replace("'", "\"", $evento); ?>'
 
ciao
forse gli apici doppi ti chiudono il value
PHP:
value="<?php echo $evento; ?>"
prova con apici singoli
PHP:
value='<?php echo $evento; ?>'
eventualmente dovrai ripulire la stringa dagli apici singoli magari trasormandoli in doppi
PHP:
value='<?php echo str_replace("'", "\"", $evento); ?>'


Fatto e risolto...

Allora voglio spiegarvi :

la prima modifica è stata quella di sostutuire le virgolette con gli apici singoli...

Risultato: Mi compariva il testo tra le virgolette ... ma se nelle stesse virgolette c'era un apostrofo ... dopo di esso non si visualizzava più niente.

Esempio :

Data : 23-03-2013
Evento : Congresso Nazionale di Avellino " Il cuore nell'uomo anziano".
luogo : Hotel Avellino "Excelsior dell'anno".

In fase di modifica compariva:

Data : 23-03-2013
Evento : Congresso Nazionale di Avellino " Il cuore nell'
luogo : Hotel Avellino "Excelsior dell'

________________________________________

infine ho usato questi codici:

value='<?php echo str_replace("'", "\"", $evento); ?>'
value='<?php echo str_replace("'", "\"", $luogo); ?>'


e tutto funziona a meraviglia!

Grazie Grazie Grazie a tutti!
 
Ciao a tutti!

a distanza di tempo mi ritrovo sullo stesso progetto (il quale è stato abbandonato per un lungo periodo) e purtroppo ci sono ancora problemi di codice.




Se inserisco un evento, tutto ok! (Tramite la pagina inserisci_evento.php)

Se invece lo voglio modificare fa i capricci. (Tramite il form modifica_cancella.php)




vi spiego meglio:




Mettiamo il caso che io tra i miei eventi ne ho già uno ERRONEAMENTE chiamato così:


index.php pagina di stampa degli eventi
__________________________________________________________
Data : 11-11-2013

Evento: EVENTO e Corso 11 Novembre - Azienda \"IV° CONGRESSO dell\'ASSOCIAZIONE \" PRESIDENTE .Dottore Pinco Pallino.

Luogo : ROMA COLOSSEO
__________________________________________________________

Naturalmente i codici \" e \' non piacciono a nessuno, ne tantomeno a me.

Quindi cosa faccio???



Clicco su "modifica" e mi compare un form di modifica con già i dati all'interno pronti ad essere modificati:

(notate come è cambiato il contenuto dell'evento da index.php a modifica_cancella.php)


modifica_cancella.php pagina di modifica
__________________________________________________________
Data : 11-11-2013

Evento: EVENTO e Corso 11 Novembre - Azienda "IV° CONGRESSO dell"ASSOCIAZIONE " PRESIDENTE .Dottore Pinco Pallino.

Luogo : ROMA COLOSSEO
__________________________________________________________







e correggo l'evento così:


__________________________________________________________
Data : 11-11-2013

Evento: EVENTO e Corso 11 Novembre - Azienda "IV° CONGRESSO dell'ASSOCIAZIONE" PRESIDENTE .Dottore Pinco Pallino.

Luogo : ROMA COLOSSEO
__________________________________________________________


Salvo le modifiche...




e nella pagina degli eventi (index.php) NON è cambiato assolutamente niente e compare così:

__________________________________________________________
Data : 11-11-2013

Evento: EVENTO e Corso 11 Novembre - Azienda \"IV° CONGRESSO dell\'ASSOCIAZIONE \" PRESIDENTE .Dottore Pinco Pallino.

Luogo : ROMA COLOSSEO
__________________________________________________________



Vi posto i codici :

inserisci_evento.php

PHP:
<?php

include ("config.php");
include ("connect.php");
$data_ = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['data'])))));
 if ( !empty ($data_)) { $data = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['data'])))));}
 elseif (empty ($data_)){die ( "<p style=\" font-weight:bold; text-align:center;\">Errore nella compilazione dei dati. <br />Non hai indicato la data.<br /><br />
<a href=\"javascript:history.go(-1)\" title=\"Torna indietro\">Torna indietro.</a></p>");}
 

$evento_ = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['evento'])))));
 if ( !empty ($evento_)) { $evento = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['evento'])))));}
 elseif (empty ($evento_)){die ( "<p style=\"font-weight:bold; text-align:center;\">Errore nella compilazione dei dati. <br />Non hai indicato l'evento.<br /><br />
<a href=\"javascript:history.go(-1)\" title=\"Torna indietro\">Torna indietro.</a></p>");}  


$luogo_ = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['luogo'])))));
 if ( !empty ($luogo_)) { $luogo = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['luogo'])))));
 
 
 }
 elseif (empty ($luogo_)){die ( "<p style=\"font-weight:bold; text-align:center;\">Errore nella compilazione dei dati. <br />Non hai indicato il luogo.<br /><br />
<a href=\"javascript:history.go(-1)\" title=\"Torna indietro\">Torna indietro.</a></p>");}
   
 
   
   
htmlentities ( $data, $evento, $luogo,   ENT_NOQUOTES );
 
$strsql = "INSERT INTO eventi (data, evento, luogo) VALUES ('$data', '$evento', '$luogo')";
$rs=@mysql_query ("$strsql") or die ("Errore di Connessione" .mysql_error());
header("location: ./index.php");  

echo "<meta http-equiv='Refresh' content='3; URL=./index.php'>";

?>


____________________________________________________________

modifica_cancella.php

PHP:
<?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 = mysql_real_escape_string($_POST['evento']); 
              $luogo = mysql_real_escape_string($_POST['luogo']);    
              $q="UPDATE eventi SET data='$data', evento='$evento', luogo='$luogo' WHERE ID='$id'";    
              var_dump($q); 
              $ris=mysql_query($q);  
             echo "<h4>Il record $id e' stato modificato con successo!</h4>";   
             //qui il ritorno automatico alla pag stampa_eventi.php  
             echo "<meta http-equiv='Refresh' content='3; URL=./index.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=stripslashes($riga['evento']);  // qui    
    $luogo=stripslashes($riga['luogo']);  // qui   
    //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   
?>   


<body >
<br /><br />
<div align="center">


<form method="POST" name="test" enctype="multipart/form-data"  action="modifica_cancella.php">
                  
<input name="id" type="hidden" id="id" value="<?php echo $id;?>">

Seleziona  la  DATA : <br> <input type="text" name="data" id="data" value="<?php echo $data;?>" size="50" ><input type="reset" value=" Calendario "
onclick="return showCalendar('data', '%Y-%m-%d');">



    <tr>
     <br><br>
    Modifica il TITOLO EVENTO:
    <tr><br>
    <tr><input name="evento" size="200" type="text" id="evento" value='<?php echo str_replace("'", "\"", $evento); ?>' maxlength="300">
    <tr><br><br>
    Modifica il LUOGO:
    <tr><br>
  <tr><input name="luogo" size="200" type="text" id="luogo" value='<?php echo str_replace("'", "\"", $luogo); ?>' maxlength="300">  
  </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="./index.php" onClick="return(confirm('ATTENZIONE: le eventuali modifiche non verranno salvate'))" >[ESCI senza salvare le modifiche]</a> 
 
<?php   
}elseif(isset($_GET['del'])){//hai cliccato su ELIMINA   
    ($_GET['del']);//**** primo  
    $id=addslashes(htmlspecialchars($_GET['del']));//con un po' di protezione al get  
    $q="DELETE FROM eventi WHERE ID='$id'"; 
    ($q);//**** secondo  
    $ris=mysql_query($q); 
     ($ris);//**** terzo  
    echo "<h4>Il record $id e' stato cancellato con successo!</h4>";   
    //qui il ritorno automatico alla pag stampa_eventi.php  
    echo "<meta http-equiv='Refresh' content='2; URL=./index.php'>";   
}
?>


_____________________________________________________________

index.php

PHP:
<?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 data DESC")  
or die(mysql_error());   

echo "<table width='100%' border='1' align='center' >"; 
echo "<tr> <th>Data<br>AAAA - MM - GG</th> <th>Evento</th> <th>Luogo</th><th>MODIFICA</th><th>CANCELLA</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 width='10%'>". $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 align='center'><a href=\"modifica_cancella.php?mod=$id\">[modifica]</a></td>"; 
    echo"<td><a href=\"modifica_cancella.php?del=$id\" onclick=\"return(confirm('stai eliminando evento del ".$row['data']."'))\" >[cancella]</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>"; 
?>



Aiutatemi voi! :crying::crying::crying:
 
Ultima modifica:
Ciao,

precisamente quello che non va l'ho scritto qui : #67



In sintesi lo script modifica_cancella.php non funziona come dovrebbe...
 

Discussioni simili