par
zeus » 26 févr. 2010, 00:35
Au cas où le message de stealth35 ne soit pas suffisamment clair (sic), si tu regardes le message d'erreur, tu pourras voir la requête qu'il a exécuté. Et, dans cette requête, à la fin, dans le WHERE, l'id n'est pas présent.
Cela signifie que lors de la construction de ta requête, l'id n'a pas été ajouté.
Le gros conseil que je te donne, c'est d'utiliser une vrai concaténation pour construire tes requêtes, voir mieux encore, les masques d'interprétations :
// pas bien
$sql="UPDATE catalogue SET titre='$titre', prix='$prix', visibilite='$visibilite', type='$type', description='$description' WHERE id={$_POST['id']}";
// mieux
$sql='UPDATE catalogue SET titre="'.$titre.'", prix="'.$prix.'", visibilite="'.$visibilite.'", type="'.$type.'", description="'.$description.'" WHERE id='.$_POST['id'];
// encore mieux. Je te laisse consulter la doc de sprintf pour comprendre comment marche cette fonction
$sql = sprintf("UPDATE catalogue SET titre='%s', prix='%s', visibilite='%s', type='%s', description='%s WHERE id=%s",
$titre, $prix, $visibilite, $type, $description, $_POST['id']);
C'est vrai que PHP propose de parser le contenu des chaines encadrées par des ", mais non seulement, c'est lourd en temps d'exécution, mais en plus, tu as des soucis d'interprétation, comme dans le cas présent.
Ah, oui, et au fait, dernière chose, quand on a un soucis avec une requête SQL générée en PHP, la 1ère étape pour débugger, c'est de faire afficher cette requête
echo $sql
et d'essayer de l'exécuter depuis PhpMyAdmin, pour voir si ça viens réellement du SQL.
Au cas où le message de stealth35 ne soit pas suffisamment clair (sic), si tu regardes le message d'erreur, tu pourras voir la requête qu'il a exécuté. Et, dans cette requête, à la fin, dans le WHERE, l'id n'est pas présent.
Cela signifie que lors de la construction de ta requête, l'id n'a pas été ajouté.
Le gros conseil que je te donne, c'est d'utiliser une vrai concaténation pour construire tes requêtes, voir mieux encore, les masques d'interprétations :
[php]
// pas bien
$sql="UPDATE catalogue SET titre='$titre', prix='$prix', visibilite='$visibilite', type='$type', description='$description' WHERE id={$_POST['id']}";
// mieux
$sql='UPDATE catalogue SET titre="'.$titre.'", prix="'.$prix.'", visibilite="'.$visibilite.'", type="'.$type.'", description="'.$description.'" WHERE id='.$_POST['id'];
// encore mieux. Je te laisse consulter la doc de sprintf pour comprendre comment marche cette fonction
$sql = sprintf("UPDATE catalogue SET titre='%s', prix='%s', visibilite='%s', type='%s', description='%s WHERE id=%s",
$titre, $prix, $visibilite, $type, $description, $_POST['id']);
[/php]
C'est vrai que PHP propose de parser le contenu des chaines encadrées par des ", mais non seulement, c'est lourd en temps d'exécution, mais en plus, tu as des soucis d'interprétation, comme dans le cas présent.
Ah, oui, et au fait, dernière chose, quand on a un soucis avec une requête SQL générée en PHP, la 1ère étape pour débugger, c'est de faire afficher cette requête
[php]echo $sql[/php]
et d'essayer de l'exécuter depuis PhpMyAdmin, pour voir si ça viens réellement du SQL.