souci update id auto increment

Eléphant du PHP | 61 Messages

27 févr. 2009, 14:13

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(); ?>

Mammouth du PHP | 1353 Messages

27 févr. 2009, 14:44

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']."'" ;
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 61 Messages

27 févr. 2009, 14:51

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 ....

Mammouth du PHP | 1353 Messages

27 févr. 2009, 14:55

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 61 Messages

27 févr. 2009, 14:57

voila l url de la page ...

Code : Tout sélectionner

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

Mammouth du PHP | 1353 Messages

27 févr. 2009, 14:58

Ok mais quand tu cliques sur ce lien, l'url dans ton navigateur quelle est elle ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 61 Messages

27 févr. 2009, 15:10

http://......../handsandarms/modifier.php?id=2

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:23

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
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 61 Messages

27 févr. 2009, 15:27

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(); ?>
Modifié en dernier par stefanelle le 27 févr. 2009, 15:31, modifié 1 fois.

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:29

Sur cette page tu n'as pas de $_POST...

Remplace le
WHERE id ='".$_POST['id']."'" ;
par
 WHERE id ='".$_GET['id']."'" ; 
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 61 Messages

27 févr. 2009, 15:33

il me supprime encore les champs :-(