Problème UPDATE

Absot Messages postés 819 Statut Membre -  
Absot Messages postés 819 Statut Membre -
Slt, je voudrais une requête UPDATE pour une de mes table mais elle ne fonctionne pas, j'ai beau changer certaines valeurs, quand je les réaffiches après, ce sont toujours les mêmes..

Voici ma requête:

$query = "UPDATE Processeur SET nom = '.$nom.', 
                                               categorie = '.$categorie.', 
					       constructeur = '.$constructeur.', 
					       socket = '.$socket.', 
					       coeur = '.$coeur.', 
					       photo = '.$photo.', 
					       prixTTC = '.$prixTTC.' 
		WHERE nom = '.$nom.'";


$result = mysql_query($query) or die("Première requête échouée");


Ce n'est pas bon si je traduis la requête "Mets à jour la table Processeur en modifiant le nom par $nom, le constructeur par $constructeur..... ou le nom = $nom?

Parce que c'est la table Processeur mais peut y avoir plusieurs processeur..
A voir également:

34 réponses

Harricote Messages postés 424 Statut Membre 41
 
Si tu essaye ca :
$query = "UPDATE Processeur SET nom='".$nom."', categorie='".$categorie."', constructeur='".$constructeur."', socket='".$socket."', coeur = '".$coeur."', photo='".$photo."', prixTTC='".$prixTTC."' WHERE nom = '".$nom."'";
$result = mysql_query($query) or die("Première requête échouée");

Au fait es-tu sûr que la table s'appelle Processeur et non processeur, par exemple ?
0
Absot Messages postés 819 Statut Membre 44
 
Ca ne fonctionne pas.. :/

J'ai déjà vérifié et apparemment mysql ne prend pas en compte la casse..
0
le père
 
Bonjour

mysql ne prend pas en compte la casse.. Dans mysql, les noms de tables sont des noms de fichiers, leur sensibilité à la casse dépend du système d'exploitation : insensible à la casse avec windows, sensible à la casse avec les dérivés d'UNIX.

Dans ta requête ton (SET) nom='$nom' ne sert à rien puisque tu as aussi WHERE nom='$nom'. Tu remplaces toujours la valeur du nom par lui-même, c'est inutile. Mais ça n'explique pas pourquoi les autres champs ne sont pas mis à jour.
As-tu un message d'erreur ?
Ta requête est-elle vraiment exécutée ?
après l'appel à la requête, ajoute
echo htmlentities($query); pour vérifier que la requête est bien celle que tu crois et
echo mysql_affected_rows(); pour savoir combien de lignes ont été mises à jour
0
Absot Messages postés 819 Statut Membre 44
 
Désolé de ne répondre que maintenant mais je travail qu'à mon stage donc pas le week-end..

Sinon, je n'ai aucun message d'erreur et elle n'est pas exécutée puisque quand je retourne voir les valeurs, elles n'ont pas été modifiées..

Voilà mon code:

$query = "UPDATE Processeur SET nom = '.$nom.', 
                                categorie = '.$categorie.', 
								constructeur = '.$constructeur.', 
								socket = '.$socket.', 
								coeur = '.$coeur.', 
								photo = '.$photo.', 
								prixTTC = '.$prixTTC.'";

/* execution de la requete */
$result = mysql_query($query) or die("Première requête échouée");
echo htmlentities($query); 
echo mysql_affected_rows();


J'ai le message d'erreur "Première requête échouée" alors qu'avec mon WHERE, ça ne me le mettait pas..

Donc j'en conclus que ma requête n'est pas bonne..

Je viens de faire un echo de toutes mes variables pour vérifier qu'elles sont bien transmises et elles sont bien là donc je suis sûr que le problème ne vient pas de là..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Harricote Messages postés 424 Statut Membre 41
 
Essaye ceci :
$query = "UPDATE Processeur SET nom = '".$nom."', 
                                categorie = '".$categorie."', 
								constructeur = '".$constructeur."', 
								socket = '".$socket."', 
								coeur = '".$coeur."', 
								photo = '".$photo."', 
								prixTTC = '".$prixTTC."'";

/* execution de la requete */
$result = mysql_query($query) or die("Première requête échouée");
echo htmlentities($query); 
echo mysql_affected_rows();

0
Absot Messages postés 819 Statut Membre 44
 
Ca ne fonctionne pas, j'ai mon message d'erreur Première requête échouée.. :/
0
Harricote Messages postés 424 Statut Membre 41
 
Alors vérifie bien que la table s'appelle bien Processeur, que les champs (coeur, photo...) sont bien écrits !
0
le père
 
Bonjour

Que t'affiche le echo htmlentities($query); ?
et au lieu de mettre or die("Première requête échouée"); qui ne t'aide pas beaucoup, mets plutôt or die (mysql_error());
0
Absot Messages postés 819 Statut Membre 44
 
J'ai compris d'où venait mon problème, quand j'affichais les prix, je mettais un "€", ce qui fait que ça coinçait pour mettre à jour..

Le problème maintenant est que ça me met tout à jour, j'entends par là que tout les produits sont au même prix, le même nom, même photo et autre..

Il faut que je rajoute quelque chose à ma requête?
0
le père
 
Tu as toujours WHERE nom = '".$nom."'" ? ça ne devrait pas te mettre tous tes produits à jour...
0
Absot Messages postés 819 Statut Membre 44
 
Non je n'ai pas plus WHERE nom = '".$nom."'.. :/

Voilà mon code complet:
/* requête à exécuter */
$query = "UPDATE Processeur SET nom = '".$nom."', 
                                categorie = '".$categorie."', 
								constructeur = '".$constructeur."', 
								socket = '".$socket."', 
								coeur = '".$coeur."', 
								photo = '".$photo."', 
								prixTTC = '".$prixTTC."'";

/* execution de la requete */
$result = mysql_query($query) or die(mysql_error());


/* requête à exécuter */
$query = "UPDATE Produit SET nom = '".$nom."', 
                             categorie = '".$categorie."', 
							 constructeur = '".$constructeur."', 
							 photo = '".$photo."', 
							 prixTTC = '".$prixTTC."'";

/* execution de la requete */
$result = mysql_query($query) or die(mysql_error());

Je mets deux table à jour et quand j'appel la table pour l'affichage, c'est la table PRODUIT..
0
le père
 
Pourquoi l'as-tu supprimé ? C'est ça qui fait que ta requête ne s'applique qu'aux enregistrement ayant le bon nom. Sino, ton UPDATE s'applique à toute la table.
0
Absot Messages postés 819 Statut Membre 44
 
C'est bien ce que je pensait mais on m'a dit si je me souviens bien que c'était inutile parce que je le répétait deux fois.

Je vais le remettre et voir si ça change..
0
Absot Messages postés 819 Statut Membre 44
 
C'est toujours pareil, ça me modifie toute la table.. :/
0
jeinny Messages postés 135 Statut Membre 26
 
oui c'était inutile mais pas celui dans le WHERE celui dans le SET !!!
0
jeinny Messages postés 135 Statut Membre 26
 
je ne sait pas si sa vien de cela mais je pense que tu devrai pluto écrir:
$query=("update .....");
les parenthèses
Je ne pense pas que ca vienne de la mais bon tu peut toujours essayer.
0
le père
 
->jeinny es parenthèses ne servent à rien, ça c'est sûr
-> AbsotC'est toujours pareil, ça me modifie toute la table pas, possible, peux-tu montrer ta requête ?
0
Harricote Messages postés 424 Statut Membre 41
 
Oui stp ! ^^
0
Absot Messages postés 819 Statut Membre 44
 
Voici ma requête:
/* requête à exécuter */
$query = "UPDATE Processeur SET nom = '".$nom."', 
                                categorie = '".$categorie."', 
								constructeur = '".$constructeur."', 
								socket = '".$socket."', 
								coeur = '".$coeur."', 
								photo = '".$photo."', 
								prixTTC = '".$prixTTC."'
			WHERE nom = '".$nom."'";

/* execution de la requete */
$result = mysql_query($query) or die(mysql_error());


/* requête à exécuter */
$query = "UPDATE Produit SET nom = '".$nom."', 
                             categorie = '".$categorie."', 
							 constructeur = '".$constructeur."', 
							 photo = '".$photo."', 
							 prixTTC = '".$prixTTC."'
			WHERE nom = '".$nom."'";

/* execution de la requete */
$result = mysql_query($query) or die(mysql_error());
0
Harricote Messages postés 424 Statut Membre 41
 
Tous les champs ont-t-ils le même nom ?
0
le père
 
Après sa tentative sans WHERE, oui. Mais j'espère qu'il a corrigé depuis !
0