sql UPDATE non mi modifica i dati

  • Creatore Discussione Creatore Discussione Kirsolo
  • Data di inizio Data di inizio

Kirsolo

Utente Attivo
17 Gen 2013
171
0
0
Ho realizzato questo:

PHP:
<?php
if(isset($_POST['invia'])){ 
$err="";
	// ....*******CNTRLLI TESTO ********
if ($err==""){
$sql = mysql_connect("localhost", "root", "");
			mysql_selectdb("nameDB",$sql);
            $query="UPDATE immobile SET nickname=$nome, denominazione=$denominazione, indirizzo=$indirizzo, localita=$localita, descrizione=$descrizione, estensioneTerreno=$estensioneterreno, estensioneSupAbit=$estensionesupabit, tipo=$tipo, status=$stato,classeEner=$classeEner, referente=$referente, nCamere=$ncamere, nBagni=$nbagni, prezzo=$prezzo, speseCondominiali=$spesecondominiali, giardino=$giardino,data=$data, ins_mail=$mail, boxauto=$boxauto WHERE codice = '$c'" ;
           //  var_dump($query); 
            mysql_query($query); 
echo "<p><span class=\"gold\">Grazie per averli modificati.</span></p>";
			echo "<meta http-equiv='Refresh' content='10; URL=\"Pannello-Admin.php\"'>";

  }else{ 
     echo "<meta http-equiv='Refresh' content='60; URL=\"Pannello-Modifica.php?codice=$codice\"'>";
     echo $err;
	}			
}//fine submit 
?>

dove ho sbagliato? nel database non me li cambia..
 
ciao
correggi così
PHP:
<?php
//....
 $query="UPDATE immobile SET nickname='$nome', denominazione='$denominazione', indirizzo='$indirizzo', localita='$localita', descrizione='$descrizioneì', estensioneTerreno='$estensioneterreno', estensioneSupAbit='$estensionesupabit', tipo='$tipo', status='$stato',classeEner='$classeEner', referente='$referente', nCamere='$ncamere', nBagni='$nbagni', prezzo='$prezzo', speseCondominiali='$spesecondominiali', giardino='$giardino',data='$data', ins_mail='$mail', boxauto='$boxauto' WHERE codice = '$c'" ;
//...
?>
solo se il valore è un intero gli apici non ci vanno
 
ciao
correggi così
PHP:
<?php
//....
 $query="UPDATE immobile SET nickname='$nome', denominazione='$denominazione', indirizzo='$indirizzo', localita='$localita', descrizione='$descrizione', estensioneTerreno='$estensioneterreno', estensioneSupAbit='$estensionesupabit', tipo='$tipo', status='$stato',classeEner='$classeEner', referente='$referente', nCamere='$ncamere', nBagni='$nbagni', prezzo='$prezzo', speseCondominiali='$spesecondominiali', giardino='$giardino',data='$data', ins_mail='$mail', boxauto='$boxauto' WHERE codice = '$c'" ;
//...
?>
solo se il valore è un intero gli apici non ci vanno

ora sbaglio altro, undefinited 'c' ....

In pratica tramite un function ho stampato la lista degli immobili del mio database, ogni immobile ha un link "modifica dati" il quale riporta ad una form con i dati rispettivi di ogni imombile presi dal db.

Questa è la function che prende i dati del db e mette nella form..
PHP:
function modificaImmobile($c){
    $conn = dbConnect();
    $sql ="SELECT * FROM immobile WHERE codice = '$c'";  
    $risposta = mysql_query($sql) or die ("Errore nella query: ".$sql."\n". mysql_error());
    while ($riga = mysql_fetch_array($risposta)) {
    echo "<form>";
    echo........
 
ciao
devi guardare dove usi la funzione perchè da quello che vedo l'errore non è li

Ti spiego un pò meglio:

functions.php ( creato la funzione che mi stampa l'elenco degli immobili in database)
PHP:
function leggiImmobiliMOD(){
    $conn = dbConnect();
    $sql ="SELECT * FROM immobile ORDER BY codice desc ";
    $risposta = mysql_query($sql) or die ("Errore nella query: ".$sql."\n". mysql_error());
    while ($riga = mysql_fetch_array($risposta)) {
        $codice=$riga['codice'];
        echo "<table class=\"bordato\">";
		echo "<tr class=\"tr_mini\">";
        echo "<td class=\"td_photo_mini\"><a href=\"scheda-immobile.php?codice=$codice\">
        <img src=".$riga['immagine']." width='175' height='137'/></a></td>";
        echo "<td class=\"td_description_mini\"> ";
        echo "<p class=\"p_tab_den\"><span class=\"blue\">".$riga['codice']."-".$riga['denominazione']."</p>";
		echo "<p class=\"p_tab_den\"><span class=\"gold\">Nome: ".$riga['nickname']."</p>";
        echo  "<p class=\"p_tab\"><span class=\"blue\">Status: <span class=\"gold\">".$riga['status']."</p></td>";
		echo "<td class=\"td_link_mini\"><p class=\"p_mini\"><a class=\"p_mini\" href=\"Pannello-Modifica.php?codice=$codice\"><span class=\"dblue\">Modifica dati immobile</span></a></td>";
        echo '</tr></table>';
	}//fine del while
}//fine della function

quando schiaccio Modifica dati immobile di un qualunque immobile, mi stampa la form che richiama i record , ho creato anche qui una apposita funzione su functions.php
PHP:
function modificaImmobile($c){
    $conn = dbConnect();
    $sql ="SELECT * FROM immobile WHERE codice = '$c'";  
    $risposta = mysql_query($sql) or die ("Errore nella query: ".$sql."\n". mysql_error());
    while ($riga = mysql_fetch_array($risposta)) {
	$codice= $riga['codice'];
	$nome= $riga['nickname'];
	$denominazione= $riga['denominazione'];
        $stato= $riga['status'];
        echo "<form id=\"form-mod-immob\" action=\"controllo-modifica-imm.php\" method=\"post\" enctype=\"multipart/form-data\">
		<p><span class=\"gold\"><bold>(*) campo obbligatorio</bold></span></p>";
	echo "<p><label for=\"nome\">Nome <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"nome\" value=\"$nome\" id=\"nome\" /></p>";
	echo "<p><label for=\"denominazione\">Titolo inserzione <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"denominazione\" id=\"denominazione\" value=\"$denominazione\" /></p>";
	echo "<p><label for=\"status\">Status immobile: <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"status\" id=\"status\" value=\"$stato\" />";
        echo "   <p> <input type=\"submit\" id=\"inviaMODbutton\" name=\"invia\"/></p>";
	echo "</form>";
	}
}

ora qui i controll della form, controllo-modifica-imm.php
PHP:
if(isset($_POST['invia'])){ 
	//******* QUI CNTR TESTO ********
	$err="";//metti a vuoto una stringa  
    $nome=trim($_POST['nome']);  
   
    if($nome == ""){
        $err.="non hai inserito il nome <br />";} 
        $denominazione=trim($_POST['denominazione']);
    if($denominazione == ""){//verifico che siano solo lettere min 2 max 40 
        $err.="<strong>Errore</strong>: non hai inserito il titolo esatto<br /><br />"; } 
	
    if(isset($_POST['status'])) { 
      $stato=$_POST['status'];
    } else {
      $stato=0;
      $err.="<strong>Errore</strong>: non hai selezionato lo stato<br /><br />";	 } 

if ($err==""){
$sql = mysql_connect("localhost", "root", "");
			mysql_selectdb("namedb",$sql);
            $query="UPDATE immobile SET nickname='$nome', denominazione='$denominazione', status='$stato'' WHERE codice = '$c' " ;
             var_dump($query); 
            mysql_query($query); 
            echo "<p><span class=\"gold\">Grazie per averli modificati.</span></p>";
	    echo "<meta http-equiv='Refresh' content='10; URL=\"Pannello-Admin.php\"'>";
} else {
           echo "<meta http-equiv='Refresh' content='60; URL=\"Pannello-Modifica.php?codice=$codice\"'>";
           echo $err;
	}			
}//fine submit
 
Ti spiego un pò meglio:

functions.php ( creato la funzione che mi stampa l'elenco degli immobili in database)
PHP:
function leggiImmobiliMOD(){
    $conn = dbConnect();
    $sql ="SELECT * FROM immobile ORDER BY codice desc ";
    $risposta = mysql_query($sql) or die ("Errore nella query: ".$sql."\n". mysql_error());
    while ($riga = mysql_fetch_array($risposta)) {
        $codice=$riga['codice'];
        echo "<table class=\"bordato\">";
		echo "<tr class=\"tr_mini\">";
        echo "<td class=\"td_photo_mini\"><a href=\"scheda-immobile.php?codice=$codice\">
        <img src=".$riga['immagine']." width='175' height='137'/></a></td>";
        echo "<td class=\"td_description_mini\"> ";
        echo "<p class=\"p_tab_den\"><span class=\"blue\">".$riga['codice']."-".$riga['denominazione']."</p>";
		echo "<p class=\"p_tab_den\"><span class=\"gold\">Nome: ".$riga['nickname']."</p>";
        echo  "<p class=\"p_tab\"><span class=\"blue\">Status: <span class=\"gold\">".$riga['status']."</p></td>";
		echo "<td class=\"td_link_mini\"><p class=\"p_mini\"><a class=\"p_mini\" href=\"Pannello-Modifica.php?codice=$codice\"><span class=\"dblue\">Modifica dati immobile</span></a></td>";
        echo '</tr></table>';
	}//fine del while
}//fine della function

quando schiaccio Modifica dati immobile di un qualunque immobile, mi stampa la form che richiama i record , ho creato anche qui una apposita funzione su functions.php
PHP:
function modificaImmobile($c){
    $conn = dbConnect();
    $sql ="SELECT * FROM immobile WHERE codice = '$c'";  
    $risposta = mysql_query($sql) or die ("Errore nella query: ".$sql."\n". mysql_error());
    while ($riga = mysql_fetch_array($risposta)) {
	$codice= $riga['codice'];
	$nome= $riga['nickname'];
	$denominazione= $riga['denominazione'];
        $stato= $riga['status'];
        echo "<form id=\"form-mod-immob\" action=\"controllo-modifica-imm.php\" method=\"post\" enctype=\"multipart/form-data\">
		<p><span class=\"gold\"><bold>(*) campo obbligatorio</bold></span></p>";
	echo "<p><label for=\"nome\">Nome <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"nome\" value=\"$nome\" id=\"nome\" /></p>";
	echo "<p><label for=\"denominazione\">Titolo inserzione <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"denominazione\" id=\"denominazione\" value=\"$denominazione\" /></p>";
	echo "<p><label for=\"status\">Status immobile: <span class=\"gold\">(*)</span></label>
		<input type=\"text\" name=\"status\" id=\"status\" value=\"$stato\" />";
        echo "   <p> <input type=\"submit\" id=\"inviaMODbutton\" name=\"invia\"/></p>";
	echo "</form>";
	}
}

ora qui i controll della form, controllo-modifica-imm.php
PHP:
if(isset($_POST['invia'])){ 
	//******* QUI CNTR TESTO ********
	$err="";//metti a vuoto una stringa  
    $nome=trim($_POST['nome']);  
   
    if($nome == ""){
        $err.="non hai inserito il nome <br />";} 
        $denominazione=trim($_POST['denominazione']);
    if($denominazione == ""){//verifico che siano solo lettere min 2 max 40 
        $err.="<strong>Errore</strong>: non hai inserito il titolo esatto<br /><br />"; } 
	
    if(isset($_POST['status'])) { 
      $stato=$_POST['status'];
    } else {
      $stato=0;
      $err.="<strong>Errore</strong>: non hai selezionato lo stato<br /><br />";	 } 

if ($err==""){
$sql = mysql_connect("localhost", "root", "");
			mysql_selectdb("namedb",$sql);
            $query="UPDATE immobile SET nickname='$nome', denominazione='$denominazione', status='$stato'' WHERE codice = '$c' " ;
             var_dump($query); 
            mysql_query($query); 
            echo "<p><span class=\"gold\">Grazie per averli modificati.</span></p>";
	    echo "<meta http-equiv='Refresh' content='10; URL=\"Pannello-Admin.php\"'>";
} else {
           echo "<meta http-equiv='Refresh' content='60; URL=\"Pannello-Modifica.php?codice=$codice\"'>";
           echo $err;
	}			
}//fine submit

dove sbaglio ?
 
stampa gli eventuali errori di mysql : ti aiutano a capire dove sbagli
PHP:
if (!mysql_query($query)) {
    echo "Errore: " . $query . "<br/>" . mysql_error();
}
 
stampa gli eventuali errori di mysql : ti aiutano a capire dove sbagli
PHP:
if (!mysql_query($query)) {
    echo "Errore: " . $query . "<br/>" . mysql_error();
}

non mi da errori di quel genere.
Ma: Undefined index: codice in controllo-modifica-imm.php....cioè la riga che ho aggiunto ->$c=$_GET['codice'];
non riesco a capire xkè
 
forse sono orbo ma non vedo
PHP:
$c=$_GET['codice']
nel codice che hai postato
io cmq intendevo di cambiare
PHP:
mysql_query($query)
con
PHP:
if (!mysql_query($query)) {
    echo "Errore: " . $query . "<br/>" . mysql_error();
}
in questo modo se la query va in errore ti stampa sia la query che l'errore
 
ciao
tu fai
PHP:
<?php
//....
echo "<td class=\"td_link_mini\"><p class=\"p_mini\"><a class=\"p_mini\" href=\"Pannello-Modifica.php?codice=$codice\"><span class=\"dblue\">Modifica dati immobile</span></a></td>";
//...
?>
cioè chiami la pagina Pannello-Modifica.php trasmettendo la querystringa ?codice=$codice
allora la pagina Pannello-Modifica.php deve essere fatta schematicamente
PHP:
<?php
function modificaImmobile($c){
    /*
	tutto il corpo della funzione
	acciungendo questo prima del submit
	*/
	echo "<input name=\"codice\" type=\"hidden\" value=\"$c\">";
} 
if(isset($_GET['codice'])){$code=$_GET['codice'];{//e ci andrebbero altri controlli sul get 
	modificaImmobile($code);
}else{
	//ritorni dove vuoi
}
?>
poi nella pagina del form controllo-modifica-imm.php
prelevi con $_POST il valore del codice e lo metti nel WHERE della query di uppaggio.

p.s.
una domanda: in quante pagine diverse usi es la funzione modificaImmobile($c)?
se la tua risposta è in una sola: perche ti complichi la vita facendo delle funzioni?
 
ciao
tu fai
PHP:
<?php
//....
echo "<td class=\"td_link_mini\"><p class=\"p_mini\"><a class=\"p_mini\" href=\"Pannello-Modifica.php?codice=$codice\"><span class=\"dblue\">Modifica dati immobile</span></a></td>";
//...
?>
cioè chiami la pagina Pannello-Modifica.php trasmettendo la querystringa ?codice=$codice
allora la pagina Pannello-Modifica.php deve essere fatta schematicamente
PHP:
<?php
function modificaImmobile($c){
    /*
	tutto il corpo della funzione
	acciungendo questo prima del submit
	*/
	echo "<input name=\"codice\" type=\"hidden\" value=\"$c\">";
} 
if(isset($_GET['codice'])){$code=$_GET['codice'];{//e ci andrebbero altri controlli sul get 
	modificaImmobile($code);
}else{
	//ritorni dove vuoi
}
?>
poi nella pagina del form controllo-modifica-imm.php
prelevi con $_POST il valore del codice e lo metti nel WHERE della query di uppaggio.

p.s.
una domanda: in quante pagine diverse usi es la funzione modificaImmobile($c)?
se la tua risposta è in una sola: perche ti complichi la vita facendo delle funzioni?

proprio una sola, cioè una per ogni immobile se si vogliono cambiare tutti gli immobili.
Come potrei cambiare altrimenti rendendo piu facile?
 
ciao
ecco uno schema della pagina Pannello-Modifica.php

PHP:
<?php
if(isset($_GET['codice'])){$code=$_GET['codice'];}
//dati di connessione al db, usa un require non stare a riscriverli ogni volta in tutte le pagine
if(isset($_POST['invia'])){
	$cod=$_POST['code'];
	$denominazione=$_POST['denominazione'];
	//tutto il controllo degli errori
	if($err==""){
		$query="UPDATE immobile SET nickname=$nome,..... WHERE codice = '$cod'";
		if(mysql_query($query)){
			echo "immobile aggiornato";
		}else{
			echo "errore di connessione riprova più tardi";
		}
	}
	//e rimandi dove vuoi
}else{
$query=mysql_query("SELECT * FROM immobili WHERE codice='$code'");
$riga=mysql_fetch_array($query);
//nel form non sto a scriverti tutti i dati, ma quello che metto per uno vale per gli altri che vuoi far modificare
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>denominazione 
    <input name="denominazione" type="text" id="denominazione" value="<?php echo $iga['denominazione']; ?>">
    <br>
    <input name="code" type="hidden" id="code" value="<?php echo $code; ?> ">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
</p>
</form>
<?php
}
?>

p.s.
fai che l'utente modifichi anche il suo user e sua pass? io non lo farei, o almeno non lo farei qui, anche perche potresti trovare lo stesso utente con nick e oass diversi per più immobili
 
ciao
ecco uno schema della pagina Pannello-Modifica.php

PHP:
<?php
if(isset($_GET['codice'])){$code=$_GET['codice'];}
//dati di connessione al db, usa un require non stare a riscriverli ogni volta in tutte le pagine
if(isset($_POST['invia'])){
	$cod=$_POST['code'];
	$denominazione=$_POST['denominazione'];
	//tutto il controllo degli errori
	if($err==""){
		$query="UPDATE immobile SET nickname=$nome,..... WHERE codice = '$cod'";
		if(mysql_query($query)){
			echo "immobile aggiornato";
		}else{
			echo "errore di connessione riprova più tardi";
		}
	}
	//e rimandi dove vuoi
}else{
$query=mysql_query("SELECT * FROM immobili WHERE codice='$code'");
$riga=mysql_fetch_array($query);
//nel form non sto a scriverti tutti i dati, ma quello che metto per uno vale per gli altri che vuoi far modificare
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <p>denominazione 
    <input name="denominazione" type="text" id="denominazione" value="<?php echo $iga['denominazione']; ?>">
    <br>
    <input name="code" type="hidden" id="code" value="<?php echo $code; ?> ">
</p>
  <p>
    <input name="invia" type="submit" id="invia" value="invia">
</p>
</form>
<?php
}
?>

p.s.
fai che l'utente modifichi anche il suo user e sua pass? io non lo farei, o almeno non lo farei qui, anche perche potresti trovare lo stesso utente con nick e oass diversi per più immobili

L'avevo progettato così:
pagina login.php , metti la psw ed entri in un pannello con 3 pulsanti.
schiacci il pulsante modifica e ti compare l'elenco immobili come da foto, fatta con una funzione su functions.php
provaModifica.jpg
poi se schiacci modifica dati immobile, la form che ti ripesca i dati dalla tabella:
provaModifica2.png
una volta che hai modificato i dati, schiacci sul pulsanti invia infondo alla form e li modifica.

tu che dici?
 
ciao
nel complesso mi sembra ok.
l'unico appunto è la modifica del nome, è quello dell'utente che ha inserito l'annuncio?
se si non vedo perche debba modificare il nome, tra l'altro verifichi che possa modificare/eliminare solo chi ha inserito l'annuncio?
secondo me è una cosa importante
se l'utente ha una sua password (dopo raccomandazione di conservarla con cura) dovresti verificare che a quel nome corrisponda la password e se non corrisponde non devi far modificare/eliminare
altra cosa, tu dici che l'utente deve loggarsi e qui ok, ma nella pagina non vedo la verifica del log
cioe se qualche maleintenzionato viene a conoscrere l'url della pagina può accedervi senza loggarsi, ma può essere che questa cosa mi sia sfuggita
 
ciao
nel complesso mi sembra ok.
l'unico appunto è la modifica del nome, è quello dell'utente che ha inserito l'annuncio?
se si non vedo perche debba modificare il nome, tra l'altro verifichi che possa modificare/eliminare solo chi ha inserito l'annuncio?
secondo me è una cosa importante
se l'utente ha una sua password (dopo raccomandazione di conservarla con cura) dovresti verificare che a quel nome corrisponda la password e se non corrisponde non devi far modificare/eliminare
altra cosa, tu dici che l'utente deve loggarsi e qui ok, ma nella pagina non vedo la verifica del log
cioe se qualche maleintenzionato viene a conoscrere l'url della pagina può accedervi senza loggarsi, ma può essere che questa cosa mi sia sfuggita

allora questa parte, non è linkata nel sito, può entrarci solo l'admin con la sua password, tramite un url ben preciso, questa parte è già apposto.
Mi serve solo la parte della modifica:
su Pannello-Modica.php ho messo così, per stampare la lista di immobili con il link Modifica dati:
PHP:
<?php include("functions.php");?>
<h1 class="h1_header"><span class="green"> Modifica dati immobili</span></h1>
<?php echo leggiImmobiliMOD(); ?>

ora devo implementare il passo dopo, tu mi hai detto di nn fare una funzione per richiamare ogni volta la form con i dati ripescati del db. Come?
 
ciao

se guardi lo script precedente è quello della modifica.

non riesco a farlo andare, cioè non capisco la procedura...non capisco il select che hai messo, io già faccio un select per mostrare tutto il database, al click del link modifica immobile,
richiamo una pagina in questo modo:
PHP:
<?php 
require_once("functions.php");
$codice=$_GET['codice']; 
modificaImmobile($codice); 
?>
modificaImmobile mi stampa la form con i dati dei record....
la form ha un action con i controlli, li che dovrei scrivere?!
 
non so perchè però mi dice sempre undefined index: codice.....sul controllo della form. Per il resto penso sia tutto giusto
 

Discussioni simili