Problème requete update et boucle for

Résolu/Fermé
peter55 - 16 juil. 2010 à 13:07
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 - 19 juil. 2010 à 13:18
Bonjour,

Voici mon problème, j'essaye de mettre a jour le champ 'men_pla' de ma table 'menu'. J'essaye de le faire avec une boucle for.
Je compte le nombre d'entrées de me table et je fais une boucle autant de fois que ce nombre avec ma requete update dans la boucle. J'aimerais qu'a chaque tour le nombre de la variable $i remplace la valeur du champ 'men_pla'.

Le problème est que la requete envoye le nombre total de la boucle (par ex 5) dans le champ et pas un nombre a chaque tours (par ex 1 2 3 4 5 ).

Voic mon code:

<?php
$query = 'SELECT COUNT(*) FROM menu';
$result = mysql_query($query);
$nombre = mysql_fetch_array($result);
$nb=$nombre[0];

for($i=1;$i<=$nb;$i++){
$update=("UPDATE menu SET men_pla='$i' ");
mysql_query($update);

?>

A voir également:

1 réponse

Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
16 juil. 2010 à 13:13
au nom de tout le monde, je vais dire ... "hein?"

en fait je ne comprends pas réellement ce que tu veux faire... la tu exécute nb fois la meme requete

"UPDATE menu SET men_pla='1' "
"UPDATE menu SET men_pla='2' "
...
"UPDATE menu SET men_pla='5' "

au final ton champs men_pla de ta table menu contiendra "5"

donc je vois pas l'utilité de faire une bouble for.


pour la parti
"Le problème est que la requete envoye le nombre total de la boucle (par ex 5) dans le champ et pas un nombre a chaque tours (par ex 1 2 3 4 5 ).
"
la je comprend pas ce que tu veux faire...
0
Salut krysstof,

merci de répondre si vite, en fait j'aimerais avoir un nombre différant pour chaques entrées du champ men_pla et qui se suivent

mon problème est que si j'utilise l'id il y a des trous lorsqu'on fait une requete delete, les id ne se suivent plus après une requete delete.

j'aimrai a la suite d'une requete delete renomer ce chap men_pla dans toute la table pour attribuer a chaques entrées un nombre et que ces nombre se suivent.

peut etre as tu une idée?
0
Bonjour,

Voilà j'ai pu réaliser ce que je voulais, créer un champ dans ma table qui correspond au numéro de chaque ligne et ceci de manière continue et sans trous pour connaitre leur position. Les id lors de supression se suivent mais avec des écarts dans leurs suites. Grace a toi je me suis rendu compte que je devais compléter ma requete update avec une condition WHERE, les requetes update sans condition attribue la même valeur donnée a toutes les entrées. J'ai utilisé un while plutot qu'une boucle for.
J'ai besoin de connaitre la position des lignes pour pouvoir les déplacer dans la table, peut être que je m'y prend mal mais c'est la solution que j'ai trouvé pour l'instant.

Merci encore pour ton aide qui ma permis d'avancer.


                     $n=0;
	$name='SELECT men_nom FROM menu ORDER BY men_pla ASC';
	$result2=mysql_query($name);	
	while ($row = mysql_fetch_assoc($result2)) 

	   {   
	       $n=$n+1;
	       $men_nom=$row['men_nom'];		
	       $update="UPDATE menu SET men_pla='$n' WHERE men_nom='$men_nom'";
	       mysql_query($update);
	   }
0
Krysstof Messages postés 1483 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 23 août 2010 294
19 juil. 2010 à 13:18
Bonjour

désolé de ne pas avoir répondu plus tot, le weekend j'ai pas le temps d'aller sur CCM :)

ta solution me parait très correcte vu ce que tu veux faire, j'allais suggérer l'ajout d'un champe ordinal pour la numération vu que se basé sur l'index autoincrémenté n'est pas une bonne solution, je vois que c'est ce que tu as fait, donc j'ai rien à rajouter :)
0