mariobotta
Messages postés57Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention12 septembre 2009
-
21 févr. 2006 à 13:58
Mindiell
Messages postés558Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention 5 septembre 2007
-
23 févr. 2006 à 00:13
bonjour,
Je cherche un moyen pour ordoner mon menu grace à un lien du type "up"/"down" suivant le cas.
Mais pour cela je pense devoir inverser 2 ligne pour incrémenter de 1 ou -1 l'ordre.
J'ai essayer cette methode mais mon problème est que ma première requete ne s'exécute pas
quelqu'un aurait il une idée?
merci d'avance
if($_GET['mod'] == 'plus') {
//celui qui monte UPDATE `tickets` SET ordre=3 WHERE ordre= 2
mysql_query("UPDATE $matable SET ordre =(".$_GET['ordre']."+1) WHERE ordre=".$_GET['ordre']);
//celui qui descend UPDATE `tickets` SET ordre=2 WHERE ordre= 3
mysql_query("UPDATE $matable SET ordre=".$_GET['ordre']." WHERE ordre=(".$_GET['ordre']."+1)");
}
if($_GET['mod'] == 'moins') {
//celui qui descend UPDATE `tickets` SET ordre=3 WHERE ordre= 2
mysql_query("UPDATE $matable SET ordre =(".$_GET['ordre']."+1) WHERE ordre=".$_GET['ordre']);
//celui qui monte UPDATE `tickets` SET ordre=2 WHERE ordre= 3
mysql_query("UPDATE $matable SET ordre=".$_GET['ordre']." WHERE ordre=(".$_GET['ordre']."+1)");
}
Mindiell
Messages postés558Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention 5 septembre 20071 23 févr. 2006 à 00:13
Par ID, je voulais dire le champ ordre, bien entendu ;o)
la solution existe :
Tu passes l'ancien ordre au negatif nouveau,
puis tu passes le nouveau a l'ancien,
puis tu passes le negatif nouveau au nouveau,
Exemple : a 2 / b 3
UPDATE $img SET ordre_page -($ordre+1) WHERE ordre_page $ordre
UPDATE $img SET ordre_page $ordre WHERE ordre_page ($ordre+1)
UPDATE $img SET ordre_page $ordre+1 WHERE ordre_page -($ordre+1)
Mindiell
Messages postés558Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention 5 septembre 20071 22 févr. 2006 à 11:27
Ta première requete s'execute bien :
Départ :
a - 2
b - 3
Premiere requete :
a - 2
b - 2
Deuxieme requete :
a - 3
b - 3
Puisque tu te bases uniquement sur l'ordre...
a mon avis, le mieux serait soit de baser ta requete sur l'id. exemple :
"remonter b"
Départ
a - 2
b - 3
Premiere requete : je modifie l'id 3
a - 2
b - 2
Deuxieme requete : je modifie l'id 2 de tout ce qui n'est pas b
a - 3
b - 2
Ou alors passer par la valeur -1 :
Départ
a - 2
b - 3
Premiere requete : je modifie la valeur3
a - 2
b - (-1)
Deuxieme requete : je modifie la valeur 2
a - 3
b - (-1)
Troisieme requete : je modifie la valeur -1
a - 3
b - 2
mariobotta
Messages postés57Date d'inscriptionsamedi 30 avril 2005StatutMembreDernière intervention12 septembre 2009 22 févr. 2006 à 22:54
bonsoir,
merci pour ton aide et cette réflexion
j'ai une table avec plusieurs id primaire et toucher à l'id est assez lourd pour moi à maneuvrer.
Donc j'ai trouver une astuce en créant un champs pour l'ordre temporaire pcq j'ai essayer 2 requetes uniquement mais impossible à faire tourner sans ecraser la valeur
voici ce que j'ai fait (à optimiser surement) et je cherche toujours le moyen pour eviter le champs temporaire je vais encore essayer avec l'id car il y a surement moyen de conserver l'ordre en mémoire pour les requetes
si tu trouves une meilleur solution fais le moi savoir sinon j'espère que ce code pourra t'aider ou aider quelqu'un car sur goo par exemple j' ai pas trouver de solution de ce type.
encore merci pour ton aide
Enfin soit:
if($_GET){
$ordre=$_GET['ordre'];//2
$img=$_GET['img'];//table
$lang=$_GET['lang'];//lang
}
if($_GET['mod'] == 'plus') {
$ordre1=$ordre+1;//3
$ordre2=$ordre;//2
mysql_query("UPDATE $img SET ordre_page ='$ordre1' WHERE ordretemp='$ordre'");
mysql_query("UPDATE $img SET ordre_page='$ordre' WHERE ordretemp='$ordre1'");
$requete= mysql_query('SELECT `ordre_page` FROM '.$img);
while($result = mysql_fetch_array($requete))
{
$ordre = $result['ordre_page'];
$sql=mysql_query("UPDATE $img SET ordretemp ='$ordre' WHERE ordre_page='$ordre'");
}
}
if($_GET['mod'] == 'moins') {
$ordre1=$ordre-1;//3
$ordre2=$ordre;//2
mysql_query("UPDATE $img SET ordre_page ='$ordre1' WHERE ordretemp='$ordre'");
mysql_query("UPDATE $img SET ordre_page='$ordre' WHERE ordretemp='$ordre1'");
$requete= mysql_query('SELECT `ordre_page` FROM '.$img);
while($result = mysql_fetch_array($requete))
{
$ordre = $result['ordre_page'];
$sql=mysql_query("UPDATE $img SET ordretemp ='$ordre' WHERE ordre_page='$ordre'");
}
}