[PHP] Update in search.

cris8380

Moderatore
Membro dello Staff
MOD
3 Giu 2016
261
14
18
41
Salve amici del forum posso sapere dove sbaglio per favore mi da errore all'aggiornamento dei dati


$strSearch = $_POST["search_term"];
$objConnect = mysql_connect("localhost","","") or die("Error Connect to Database");
$objDB = mysql_select_db("");
$strSQL = "SELECT * FROM Profilo WHERE Tessera = $strSearch";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$Num_Rows = mysql_num_rows($objQuery);
$objQuery = mysql_query($strSQL);

?>
//QUI INVECE AGGIORNO

<?php


$query = "UPDATE Profilo SET Tessera='{$_POST['Tessera']}', Nome='{$_POST['Nome']}', Cognome='{$_POST['Cognome']}', Codice_fiscale='{$_POST['Codice_fiscale']}', Data_di_nascita='{$_POST['Data_di_nascita']}',Comune='{$_POST['Comune']}', Indirizzo='{$_POST['Indirizzo']}' ";

if (mysql_query ($query, $connessione))
echo ("Modifica dei dati avvenuta correttamente!");
 
Ultima modifica:
ciao
scusa il ritardo, ma ho visto il post solo oggi.
comunque hai risolto?
se non hai risolto intanto posta l'errore che ti da poi un paio di cose
da dove salta fuori quella variabile $connessione nella query di update?
devi aggiornare un particolare record o tutti? se solo uno manca il WHERE per dirgli quale
ultimo passa alle nuove istruziono php mysqli, le vecchie mysql sono deprecate
 
Grazie per la tua risposta, tranquillo, rispetto le regole del forum,
ho creato un altro script chè il seguente ma neanche questo funziona te lo posto
l'altro script di cui sopra non prenderlo piu in considerazione:

PHP:
<?php
 if(isset($_POST['update'])) {
 $dbhost = 'localhost';
 $dbuser = 'mia user';
 $dbpass = 'mia password';
 
 $conn = mysql_connect($dbhost, $dbuser, $dbpass);
 
 if(! $conn ) {
 die('Could not connect: ' . mysql_error());
 }
 
 $Tessera = $_POST['Tessera']; 
 $Codice_agenzia = $_POST['Codice_agenzia']; 
 $Agenzia = $_POST['Agenzia'];
 $Cognome = $_POST['Cognome'];
 $Nome = $_POST['Nome']; 
 $Cap = $_POST['Cap'];
 $Codice_fiscale = $_POST['Codice_fiscale'];
 $Codice_cliente = $_POST['Codice_cliente'];
 $Indirizzo = $_POST['Indirizzo']; 
 $Sesso = $_POST['Sesso'];
 $Comune = $_POST['Comune'];
 $Data_di_nascita = $_POST['Data_di_nascita'];
 $Indirizzo_email = $_POST['Indirizzo_email'];
 $Telefono = $_POST['Telefono'];
 $Username = $_POST['Username'];
 $Password = $_POST['Password']; 
 $Comune_di_nascita = $_POST['Comune_di_nascita']; 
 
$sql = "UPDATE Profilo ". "SET Tessera = $Tessera , Codice_agenzia = $Codice_agenzia , Agenzia = $Agenzia , Cognome = $Cognome ,Nome = $Nome , Codice_fiscale = $Codice_fiscale , Codice_cliente = $Codice_cliente , Indirizzo = $Indirizzo , Sesso = $Sesso , Comune = $Comune , Data_di_nascita = $Data_di_nascita , Indirizzo_email = $Indirizzo_email , Telefono = $Telefono , Username = $Username , Password = $Password ". "WHERE Tessera = $Tessera" ;

 mysql_select_db('mio_db');
 $retval = mysql_query( $sql, $conn );
 
 if(! $retval ) {
 die('Could not update data: ' . mysql_error());
 }
 echo "Aggiornamento avvenuto correttamente\n";
 
 mysql_close($conn);
 }else {
 ?>
 
ho provato ad aggiungere un'altra parentesi e ora si connette ma alla fine dell'aggiornamento di dice:
COULD NOT UPDATE:
 
ciao
prova a fare queste correzioni, leggi i commenti
PHP:
<?php
if(isset($_POST['update'])) {
     $dbhost = 'localhost';
     $dbuser = 'mia user';
     $dbpass = 'mia password';
     $conn = mysql_connect($dbhost, $dbuser, $dbpass) OR die('Could not connect: ' . mysql_error());
     //metti qui la selzione db
     mysql_select_db('mio_db') OR die('non trovato: ' . mysql_error());
    //ti conviene mettere dei controlli sui dati che ti provengono dal form
     $Tessera = $_POST['Tessera'];
     $Codice_agenzia = $_POST['Codice_agenzia'];
    //....non riscrivo tutti i $_POST ...
     $Comune_di_nascita = $_POST['Comune_di_nascita'];
     //gli apici sulle stringhe e a che ti serviva cuel concatenamento?
    //poi sarebbe meglio che il WHERE fosse eseguito sull'id del record
     $sql = "UPDATE Profilo SET Tessera = '$Tessera' , Codice_agenzia = '$Codice_agenzia' , Agenzia = '$Agenzia' , Cognome = '$Cognome' ,Nome = '$Nome' , Codice_fiscale = '$Codice_fiscale' , Codice_cliente = '$Codice_cliente' , Indirizzo = '$Indirizzo' , Sesso = '$Sesso' , Comune = '$Comune' , Data_di_nascita = '$Data_di_nascita' , Indirizzo_email = '$Indirizzo_email' , Telefono = '$Telefono' , Username = '$Username ', Password = '$Password' ". "WHERE Tessera = '$Tessera'" ;
     //qui metti un var_dump per vedere se la querystringa si forma come dovrebbe
    //o se manca qualcosa
     var_dump($sql);//poi lo togli
     $retval = mysql_query( $sql);//togli la $conn non serve
     if(! $retval ) {
         die('Could not update data: ' . mysql_error());
     }
     echo "Aggiornamento avvenuto correttamente\n";
     mysql_close($conn);
}else {//dopo immagino che ci sia il form
?>
 
else } l'ho eliminato perche il form si trova in un altro file

ma non ho capito come fare queste manovre cio provato ma forse nn so fare io!!! o_Oo_Oo_Oo_O:(:(:(
 
ciao
allora se il var_dump non ti riporta nulla vuol dire che probabilmente nessuna di quelle isturzioni viene eseguita.
da quello che hai detto hai diviso la pagina (metto i nomi a caso)
form.php dove hai il form di inserimento dati che punta alla pagina modifica.php
giusto?
per prima cosa allora togli l'if iniziale
if(isset($_POST['update'])) {
e la sua graffa di chiusura poi poi verificha esattamente che il form punti alla modifica.php (dove ti converra mettere un lik di ritorno al form o dove vuoi tu)
fatto questo verifica sempre conun var_dump che i dati siano inviati es
Codice:
<?php
//le righe da <pre> a </pre> poi le togli
//il <pre> sereve a organizzare meglio la visualizzazione del var_dump
echo "<pre>";
var_dump($_POST);
echo "</pre>";
$dbhost = 'localhost';
$dbuser = 'mia user';
$dbpass = 'mia password';
//ecc... tutto il reso di script
?>
e verifica che i dati vengano trasmessi e che anche tutti i nomi deli input, campi della tabella corrispondano esattamente
 
Ciao, ecco cosa mi stampa

array (0) {
}
Aggiornamento avvenuto con successo!
 
SI infatti il form è in un altro file
ti posto tutto il codice completo che ho modificato ancora per l'ennesima volta
PHP:
<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
   
    }

 $Tessera = addslashes($_POST['Tessera']); 
 $Codice_agenzia = addslashes($_POST['Codice_agenzia']); 
 $Agenzia = addslashes($_POST['Agenzia']);
 $Cognome = addslashes($_POST['Cognome']);
 $Nome = addslashes($_POST['Nome']); 
 $Cap = addslashes($_POST['Cap']);
 $Codice_fiscale = addslashes($_POST['Codice_fiscale']);
 $Codice_cliente = addslashes($_POST['Codice_cliente']);
 $Indirizzo = addslashes($_POST['Indirizzo']); 
 $Sesso = addslashes($_POST['Sesso']);
 $Comune = addslashes($_POST['Comune']);
 $Data_di_nascita = addslashes($_POST['Data_di_nascita']);
 $Indirizzo_email = addslashes($_POST['Indirizzo_email']);
 $Telefono = addslashes($_POST['Telefono']);
 $Username = addslashes($_POST['Username']);
 $Password = addslashes($_POST['Password']); 
 $Comune_di_nascita = addslashes($_POST['Comune_di_nascita']); 



$sql = "UPDATE Profilo ". "SET  Tessera = '$Tessera' , Codice_agenzia = '$Codice_agenzia' , Agenzia = '$Agenzia' , Cognome = '$Cognome' ,Nome = '$Nome' , Codice_fiscale = '$Codice_fiscale' , Codice_cliente = '$Codice_cliente' , Indirizzo = '$Indirizzo' , Sesso = '$Sesso' , Comune = '$Comune' , Data_di_nascita = '$Data_di_nascita' , Indirizzo_email = '$Indirizzo_email' , Telefono = '$Telefono' , Username = '$Username' , Password = '$Password' ". "WHERE Tessera = '$Tessera' " ;

if ($conn->query($sql) === TRUE) {
    echo "Aggiornamento avvenuto con successo!";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?>
 
ciao
vista così (ma poi la guardo meglio) non mi sembra di vedere errori, il var_dump del POST ti restituisce qualcosa?
poi un piccolo dubbio vedo che giustamente usi mysqli: hai abilitato mysqli su php.ini?
 
no ho ancora mysql

e mi restituisce questo

Ciao, ecco cosa mi stampa

array (0) {
}
Aggiornamento avvenuto con successo!
 
ciao
hai un errore di trasmissione dei dati se fosse corretto il var_dump dovrebbe restituirti
esempio
array(18) {//se hai riempito tutti i campi di input o il numero di quanti ne hai riempiti
["Tessera"]=>
string(2) "aa256bbhy"
["Codice_agenzia"]=>
string(2) "cia"
//i nomi e i valori di tutti gli altri input
["invia"]=>//e il nome e valore del submit
string(5) "Invia"
}
verifica l'esatta corrispondenza del/dei nome/i che hai nei vari campi di input e i nomi che hai scritto nei vari $_POST
 

Discussioni simili