modification base de données

Eléphant du PHP | 170 Messages

18 janv. 2008, 07:24

Bonjour a tous,
depuis un formulaire multiple je voudrais modifier ma base de données. Depuis ce formulaire je choisi le prix de l'objet et l'ID de la ligne de base de données.
Voici mon code qui ne fonctionne pas, j'ai une erreure de type:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files\EasyPHP 2.0b1\www\majtraitement.php on line 6
mysql_query("UPDATE bdd SET prix = '".$_POST['prix']."' WHERE id='".$_POST['nannonce']"'") or die(mysql_error());
merci de votre aide

Mammouth du PHP | 19672 Messages

18 janv. 2008, 07:53

Tu as oublié un point de concaténation. D'autre part, je conseille toujours de préparer la requête avant la commende d'exécution, ça permet de la faire afficher pour débogage au besoin :
/* Création de la requête */
$sql = "UPDATE bdd SET prix = '". $_POST['prix'] ."' WHERE id='". $_POST['nannonce'] ."'";
/* Affichage de débogage */
//echo("<pre>\n");
//var_dump($sql);
//echo("</pre>\n");
/* Exécution */
mysql_query($sql) or die(mysql_error());
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 3300 Messages

18 janv. 2008, 07:58

Bonjour a tous,
depuis un formulaire multiple je voudrais modifier ma base de données. Depuis ce formulaire je choisi le prix de l'objet et l'ID de la ligne de base de données.
Voici mon code qui ne fonctionne pas, j'ai une erreure de type:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\Program Files\EasyPHP 2.0b1\www\majtraitement.php on line 6
mysql_query("UPDATE bdd SET prix = '".$_POST['prix']."' WHERE id='".$_POST['nannonce']"'") or die(mysql_error());
merci de votre aide
mysql_query('UPDATE bdd SET prix = '.(int)$_POST['prix'].' WHERE id='.(int)$_POST['nannonce'].';') or die(mysql_error());
en assumant que prix et nannonce soit des entiers ca devrait fonctionner
j'ai aussi viré les " et remplacer ça par des ' parceque c'est mieux

Pour finir je pense que tu as cliqué résolu par erreur vu que personne n'avait encore répondu, ça n'aurait pas aidé mais je passais par la justement :)
Fait du php depuis que ca existe ou presque :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 janv. 2008, 09:37

Si "prix" et "nannonce" sont des entiers, alors les guillemets/apostrophes sont même à retirer.

@Nagol : le cast en (int) il n'est pas utile. En effet, tu récupères un string dans $_POST, que tu castes explicitement en (int) avant que php ne le reconvertisse en string pour le concaténer à la chaine de ta requête SQL... autant le laisser manipuler des chaines d'un bout à l'autre ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...