Back-end: modifica dati mysql da form php

RedWarrior

Nuovo Utente
17 Giu 2009
15
0
1
Come da titolo sto creando la parte riservata agli admin di un sito. il mio intento è visualizzare la lista di tutti gli utenti con relativi dettagli e quelli che possono essere soggetti a eventuale modifica inseriti come valore di un campo testo. Il problema nasce quando creo il pulsante di modifica... funziona, si, ma troppo bene! Mi fa l'update degli attributi con quel nome di tutti gli utenti!
Vi posto il codice, magari così è più chiaro:

PHP:
<?PHP
//Connessione
mysql_connect('localhost', '*******', '********')
or die('Connessione non riuscita: ' . mysql_error());
if(!mysql_select_db('lpw'))
die('Selezione database fallita!');
function elenca() {


$e="SELECT * FROM users";
$e2=mysql_query($e) or die (mysql_error());
while($row = mysql_fetch_array($e2))
{ 
echo "<form name='' action='' method=POST>"; echo $row['Id']; echo "<input type='hidden' name='id' value='"; echo $row

['id']; echo "'/> - Nickname: "; echo $row['Nick']; echo " - Nome: "; echo $row['Nome']; echo " - Cognome: "; echo $row['Cognome']; 

echo " - Data di nascita: "; echo $row['DataNascita']; echo " - Luogo di nascita: "; echo $row['LuogoNascita']; echo " - E-mail: "; echo " 

<input type='text' name='mail' value='"; echo $row['Email']; echo"'/><input type='submit' name='mod' 

value='Modifica'></form><br/>";
}
}
IF (isset($_POST['mod'])){
$id=$_POST['id'];
$mail=$_POST['mail']; 
$sql="UPDATE users SET Email = '$mail' WHERE Id = ".id."";
mysql_query($sql) or die("Errore:".mysql_error());
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
 <title>Obiettivi Creativi - Amministrazione</title>
 <meta name="description" content="" />
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name="keywords" content="" />
 <link rel="stylesheet" media="screen, projection" type="text/css" href="stile.css" />
</head> 

<body>
<div id="logo"><img src="image/ObiettiviCre.gif"></img></div>
<div id="contenuti">
<? elenca(); ?>
</div>
</body>
</html>

Da quel che ho capito il problema è nel WHERE... ma come apportare una modifica ai valori di un unico id senza where?
Grazie a tutti quelli che vorranno darmi una mano...
 
ciao
lotus mi ha preceduto.
ha ragione al 99%

WHERE Id = '".$id."'";

dimenticavo: una volta scrivi ['id'] e poi ['Id'] per php sono due cose deverse, casesensitive


p.s.
una nota per tutti quelli che inviano script (prendete noto anche oh voi moderatori):
scrivete in modo che ci sia solo lo scorrimento verticale
 
Ultima modifica:
Grazie per le risposte. Si ho notato anche io gli errori e avevo provveduto a correggerli... (erano dovuti ai vari tentativi che avevo fatto in precedenza). Comunque ho risolto spostando la parte di codice interessata in un altro file php e passandogli i parametri tramite GET, con codice incorporato nella stessa pagina anche correggendo gli errori da voi indicati non voleva saperne di funzionare, mi modificava l'attributo a tutti gli utenti. Ah, grazie anche per il suggerimento su come postare il codice, la prossima volta eviterò la barra orizzontale.Grazie ancora.:fonzie:
 
ciao, anche se hai risolto volevo segnalarti una cosa che, a mio parere è errata, e quindi, forse, può servire per la prossima volta.
tu metti in un ciclo while tutto il form quindi ti ritove N form che hanno TUTTI lo stesso nome di pulsante submit (tutti = a 'mod') lo stesso dicasi per gli altri input tutti sempre con lo stesso nome.
in questo modo

IF (isset($_POST['mod'])){
$id=$_POST['id'];
$mail=$_POST['mail']
ecc.....

come fa lo script a sapere da quale form e da quale invii e quale è il campo che hai modificato?

per verificare metti dentro l'if

var_dump($_POST['mod']);
var_dump($_POST['id']);
var_dump($_POST['mail']);
 

Discussioni simili