Page 1 sur 1

souci update id auto increment

Posté : 27 févr. 2009, 14:13
par stefanelle
Bonjour,

j affiche mes tables et champ sous forme de tableau en php j ai a cote de chaque ligne indiquer une option modifier qui me renvoie sur une autre page la ligne selectionné et que je peux modifie r...

je veux modifier mon id, reference, artiste, album, format quand je fais mon update tout va bien sauf qu il met a jour mon champ id (auto increment) a zero alors qu il etait a 1, 2, 3 ... comment modifier pour le champ id reste le meme ?

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Catalogue</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body link="#000000" vlink="#444444" alink="#888888"> <div id="body"> <?php include ('config.php'); include ('connexion.php'); $id = $_GET["id"]; $sql = "SELECT id, reference, artiste, album, format FROM contenu WHERE id='".$_GET ['id']."'" ; $req = mysql_query($sql) or die( mysql_error() ) ; $total = mysql_num_rows($req); echo $sql2= "UPDATE contenu SET id='".$_POST['id']."', reference='".$_POST ['reference']."', artiste='".$_POST['artiste']."',album='".$_POST ['album']."',format='".$_POST['format']."' WHERE id ='".$_GET['id']."'" ; $req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error()); { echo '<form method ="post" action="modifier.php">'; echo '<table>'."\n"; echo '<tr>'; echo '<td ><b><u>id</u></b></td>'; echo '<td ><b><u>reference</u></b></td>'; echo '<td><b><u>artiste</u></b></td>'; echo '<td><b><u>album</u></b></td>'; echo '<td><b><u>format</u></b></td>'; echo '</tr>'."\n"; while($row = mysql_fetch_array($req)) { echo '<tr>'; echo '<td>'.$id.'</td>'; echo '<td><input type="text" name="reference" value="'.$row ["reference"].'"/></td>'; echo '<td><input type="text" name="artiste" value="'.$row["artiste"].'"/></td>'; echo '<td><input type="text" name="album" value="'.$row["album"].'"/></td>'; echo '<td><input type="text" name="format" value="'.$row["format"].'"/></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; echo '<input type="submit" name="btOk" value="Modifier"/>'; echo '</form>'; if (isset($_POST['btOk'])) { if($req2) { echo ("L'insertion a été correctement effectuée") ; echo '<br><a href="http://arm- info.hd.free.fr/handsandarms/label_modif.php">Retour sur les labels</a></br>'; } else { echo("L'insertion à échouée") ; } } } ?> </body></html> <?php mysql_close(); ?>

Posté : 27 févr. 2009, 14:44
par guilt92
Enleve le SET id='".$_POST['id'] tout simplement...
$sql2= "UPDATE contenu SET reference='".$_POST['reference']."', artiste='".$_POST['artiste']."',album='".$_POST['album']."',format='".$_POST['format']."' WHERE id ='".$_GET['id']."'" ;

Posté : 27 févr. 2009, 14:51
par stefanelle
le probleme c ets que quand je l enleve il me vide toute ma ligne :( j ai donc remplacer le SET id='".$_post['id']."' par id='".$_GET['id']."'
il me vide egalement la ligne j ai donc mis un echo et voila le resultat ...

UPDATE contenu SET id='', reference='ttttt', artiste='LUCIEVACARME ',album='Audioscope',format='7' WHERE id ='' comme si qu il ne prenait pas en compte mon GET ....

Posté : 27 févr. 2009, 14:55
par guilt92
C'est quoi l'url de la page ? Est tu sur qu'il y a un ?id=4 (par exemple) dans ton url ?

Pour éviter ce genre de probleme tu devrais protéger tout ton code par un
if(!empty($_GET["id"])) //si il y a une id dans l'url
{
//tout ton code qui a besoin de $_GET["id"]
}

else 
{
echo "Erreur"; //ou ce que tu veux faire si l id n est pas passée en parametre
}
Parce que si tu fais pas ca tu peux te retrouver avec un utilisateur qui enleve le id=4 dans l'url et ca va foutre en l'air tes entrées...

Posté : 27 févr. 2009, 14:57
par stefanelle
voila l url de la page ...

Code : Tout sélectionner

<a href="modifier.php?id='.$resultat['id'].'">Modifier</a>

Posté : 27 févr. 2009, 14:58
par guilt92
Ok mais quand tu cliques sur ce lien, l'url dans ton navigateur quelle est elle ?

Posté : 27 févr. 2009, 15:10
par stefanelle
http://......../handsandarms/modifier.php?id=2

Posté : 27 févr. 2009, 15:23
par guilt92
2UPDATE contenu reference='', artiste='',album='',format='' WHERE id=('2')Erreur SQL !UPDATE contenu reference='', artiste='',album='',format='' WHERE id=('2')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '='', artiste='',album='',format='' WHERE id=('2')' at line 1
Tu as pas oublié le SET ?

Fais voir la version actuelle du code pliz

Posté : 27 févr. 2009, 15:27
par stefanelle
voila le code dans cette configuration il me modifie tous les champs mais me met l id a zero

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Catalogue</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body link="#000000" vlink="#444444" alink="#888888"> <div id="body"> <?php include ('config.php'); include ('connexion.php'); echo $id = $_GET["id"]; $sql = "SELECT id, reference, artiste, album, format FROM contenu WHERE id='".$_GET ['id']."'" ; $req = mysql_query($sql) or die( mysql_error() ) ; $total = mysql_num_rows($req); echo $sql2= "UPDATE contenu SET reference='".$_POST ['reference']."', artiste='".$_POST['artiste']."',album='".$_POST ['album']."',format='".$_POST['format']."' WHERE id ='".$_POST['id']."'" ; $req2= mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error()); { echo '<form method ="post" action="modifier.php">'; echo '<table>'."\n"; echo '<tr>'; echo '<td ><b><u>id</u></b></td>'; echo '<td ><b><u>reference</u></b></td>'; echo '<td><b><u>artiste</u></b></td>'; echo '<td><b><u>album</u></b></td>'; echo '<td><b><u>format</u></b></td>'; echo '</tr>'."\n"; while($row = mysql_fetch_array($req)) { echo '<tr>'; echo '<td>'.$id.'</td>'; echo '<td><input type="text" name="reference" value="'.$row ["reference"].'"/></td>'; echo '<td><input type="text" name="artiste" value="'.$row["artiste"].'"/></td>'; echo '<td><input type="text" name="album" value="'.$row["album"].'"/></td>'; echo '<td><input type="text" name="format" value="'.$row["format"].'"/></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; echo '<input type="submit" name="btOk" value="Modifier"/>'; echo '</form>'; if (isset($_POST['btOk'])) { if($req2) { echo ("L'insertion a été correctement effectuée") ; echo '<br><a href="http://arm- info.hd.free.fr/handsandarms/label_modif.php">Retour sur les labels</a></br>'; } else { echo("L'insertion à échouée") ; } } } ?> </body></html> <?php mysql_close(); ?>

Posté : 27 févr. 2009, 15:29
par guilt92
Sur cette page tu n'as pas de $_POST...

Remplace le
WHERE id ='".$_POST['id']."'" ;
par
 WHERE id ='".$_GET['id']."'" ; 

Posté : 27 févr. 2009, 15:33
par stefanelle
il me supprime encore les champs :-(