modifica dati in tabella mysql

iperboreo

Utente Attivo
21 Giu 2012
126
0
16
Buongiorno a tutti,

ho il seguente form di modifica dati in una tabella mysql:
PHP:
 <?php
session_start();
  $id_utente = $_SESSION['id'];

  @include 'configa.php';

 $nome = @addslashes($_POST['nome']);
 $cognome = @addslashes($_POST['cognome']); 
 $telefono = @addslashes($_POST['telefono']);
 $email = @addslashes($_POST['e-mail']);
 

$query = "UPDATE clienti SET nome='".$_POST['nome']."', cognome='".$_POST['cognome']."',telefono='".$_POST['telefono']."',email='".$_POST['email']."'WHERE id_utente='".$_SESSION['id']."'";

    $res = @mysql_query($query) or die (mysql_error());
    @mysql_close($cn);

}
?>
</font>
</p> 

<html>
<body>

<table border="0" cellspacing="2" cellpadding="1">

<br>
<tr>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<td>Nome:</td><td><input type="text" name="nome" size="55" AUTOCOMPLETE="Off" value=""></td>
</tr>
<tr>
<td>Cognome:</td><td><input type="text" name="cognome" size="55" AUTOCOMPLETE="Off" value=""></td>
</tr>
<tr>
<td>Telefono:</td><td><input type="text" name="telefono" size="55" AUTOCOMPLETE="Off" value=""></td>
</tr>
<tr>
<td>E-mail:</td><td><input type="text" name="e-mail" size="55" AUTOCOMPLETE="Off" value=""></td>
</tr>
<tr>
<td><p align="right"><input type="submit" type="submit"value="Conferma"style="background-color:yellowgreen"/>

</td>
</tr>
</form>
VORREI che se un cliente vuol modificare i dati, appaiano i suoi vecchi dati in questo form, in modo che se vuol cambiare solo il telefono, gli altri campi restino invariati, invece cosi se lascio un campo bianco mi va a
sostituire nel DB il dato precedente con un campo bianco.

esiste una soluzione?

grazie 1000
 
Ultima modifica di un moderatore:
ciao Borgo, scusami sto provando e riprovando,
ho fatto un select from...ecc.
Ma come lo metto nel value del form?
Per la select uso la session_id che ho gia.

Grazie
 
ciao

PHP:
<td>Cognome:</td><td><input type="text" name="cognome" size="55" AUTOCOMPLETE="Off" value="<?php echo $come_la_chiami['cognome']; ?>"></td>

eventualmente posta la parte di scrip dove ha fatto la select + il form
 
ciao Borgo, scusami sto provando e riprovando,
ho fatto un select from...ecc.
Ma come lo metto nel value del form?
Per la select uso la session_id che ho gia.

Grazie
 
ciao
guarda qui e eventualmente aggiusta come ti serve,
però stai attento che, secondo me, mancano diversi controlli sulla validità dei dati immessi
dai un occhio ai commenti
PHP:
<?php
session_start();
//qui ti conviene mettere un controllo sulla sessione perchè se non c'è l'utente o un pinco pallino qualsiasi può accedere fraudolentemente
//digitando l'url della pagina
if(!isset($_SESSION['id'])){//la sessione non esiste e quindi riinvio ad una pag che voglio
	header("location:nome_pag_che_vuoi.php");
	exit();
}else{//la sessione esiste e quindi faccio aggiornare
	if(isset($_POST['conferma'];
		$id_utente = $_SESSION['id'];
		include 'configa.php';//non mettere i silent (@) gli errori vanno eliminati NON nascosti
 		$nome = @addslashes($_POST['nome']);
		$cognome = @addslashes($_POST['cognome']); 
		$telefono = @addslashes($_POST['telefono']);
		$email = @addslashes($_POST['e-mail']);
		$query = "UPDATE clienti SET nome='".$_POST['nome']."', cognome='".$_POST['cognome']."',telefono='".$_POST['telefono']."',email='".$_POST['email']."'WHERE id_utente='".$_SESSION['id']."'";
		$res = mysql_query($query) or die (mysql_error());
		//mysql_close($cn);//questo non serve, ci pensa php a chiudere in automatico quando serve
		//qui ti converrebbe mettere un avviso
		echo "i tuoi dati sono stati aggiornati";
		//e un link di ritorno e/o uscita
	}else{
?>
<!-- che ci stanno a fare due tag chiusi prima del tag <html>?
</font>
</p> 
-->
<html>
<body>
<!-- il tag form non puo essere compreso dentro il tag table, devi fare il contrario-->
<br>
<?php
	$q=mysql_query("SELECT * FROM clienti WHERE  id_utente='".$_SESSION['id']."'");
	$dati_vecchi=mysql_fetch_array($q);
	$h_nome=$dati_vecchi['nome'];
	$h_cognome=$dati_vecchi['cognome'];
	$h_telefono=$dati_vecchi['telefono'];
	$h_email=$dati_vecchi['email'];
?>
<!-- anche qui ci vorrebbe un link per uscire altrimenti come fa l'utente se cambia idea e non vule più aggiornare?-->
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<table border="0" cellspacing="2" cellpadding="1">
<tr><td>Nome:</td><td><input type="text" name="nome" size="55" AUTOCOMPLETE="Off" value="<?php echo $h_nome;?>"></td>
</tr>
<tr>
<td>Cognome:</td><td><input type="text" name="cognome" size="55" AUTOCOMPLETE="Off" value="<?php echo $h_cognome;?>"></td>
</tr>
<tr>
<td>Telefono:</td><td><input type="text" name="telefono" size="55" AUTOCOMPLETE="Off" value="<?php echo $h_telefono;?>"></td>
</tr>
<tr>
<td>E-mail:</td><td><input type="text" name="e-mail" size="55" AUTOCOMPLETE="Off" value="<?php echo $h_email;?>"></td>
</tr>
<tr>
<td>
<!-- avevei scritto due volete type uno dei due da mettere name -->
<p align="right"><input type="submit" name="conferma" value="Conferma"style="background-color:yellowgreen"/>
</td>
</tr>
</table>
</form>
</body>
</html>
<?php
	}//fine if/else premuto il submit
}//fine if/else verifica esistenza sessione
?>
 
Ciao Borgo,
sto provando da ore ma non esce il valore del campo in mysql,
mi riporta anzichè il nome una scritta echo,

ho provato come mi hai scritto tu, ma non va devo sbagliare qualcosa non so dove ma non in questa pagina.

ora ho inserito la seguente stringa per far apparire il nome nel campo nome:

PHP:
<td>Nome:</td><td><input type="text" name="nome" size="55" AUTOCOMPLETE="Off" value=" echo $nome ."<br />"
 "></td>
</tr>

ma non va nenache cosi. dove sbaglio? è in questa riga?
grazie
 
Ultima modifica di un moderatore:
ciao
ti sei dimenticato i tag php

PHP:
<tr><td>Nome:</td><td><input type="text" name="nome" size="55" AUTOCOMPLETE="Off" value="<?php echo $h_nome;?>"></td>
</tr>
 
Ciao Borgo,
ci sono riuscito finalmente, posto la stringa di codice funzionante:

PHP:
<td>Nome:</td><td><input type="text" name="nome" size="55" AUTOCOMPLETE="Off" value="<?php echo $nome;?>"<br /></td>

GRAZIE infinite per la pazienza, alla prossima

iperboreo
 

Discussioni simili