begin process at 2012 05 26 17:27:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

inverser 2 lignes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

inverser 2 lignes

mardi 21 février 2006 à 13:58:40 | inverser 2 lignes

mariobotta

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)");
   }

mercredi 22 février 2006 à 11:27:00 | Re : inverser 2 lignes

Mindiell

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


Mindiell Software
mercredi 22 février 2006 à 22:54:54 | Re : inverser 2 lignes

mariobotta

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'");
  }
   }

//redirection
   header("Location: ../index.php?lang=$lang&adm=menu&img=$img") ;


jeudi 23 février 2006 à 00:13:55 | Re : inverser 2 lignes

Mindiell

Réponse acceptée !
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) et voila ! ;o)


Cette discussion est classée dans : set, ordre, get, update, where


Répondre à ce message

Sujets en rapport avec ce message

UPDATE SET case WHERE.... Ca marche? [ par davidcian ] Bonjour, J'essaie cette requette mais ca n'a pas l'aire de marcher... [code=php] UPDATE abo_news_letter SET send = case send when'oui' then'' wh UPDATE de 2 tables [ par cnguyen ] Bonjour, j'aimerai savoir comment faire un update de 2 tables dans oracle :Je voudrais mettre ces 2 updates en un seul : UPDATE proact SET projet = @p Update SQL avec un where dynamique [ par imaram ] Bonjour à tous, je voudrai updater sur SQl server certains champ d'une table. j'ai une table produit, je veux modifier article, libelle article et pr [FIREBIRD] améliorer UPDATE ... WHERE VAR IN(SELECT...) [ par RV2931 ] Bonjour, J'effectue actuellement des requêtes imbriquées sous la forme [code=sql]UPDATE T1 SET T1.F1 = 'FOO' WHERE T1.ID IN ( SELECT T1.ID FROM T1 W requete update avec un max dans le where [ par t8024328 ] bonjour, Disons que c'est un systeme chez un medecin qui recoit des visites. J'ai une table t_consultation numauto;fnom;fprenom;fheure_debut;fheure_f update + recuperer dernier id [ par wally88 ] Bonjour, voila j'aimerais recuperer le dernier id de ma table lors d'un update, j'utilise cette requete ... :update bien set bien_image" + numImage + Update [ par fdouieb ] Bonjour,J'ai une procedure stockée sur mon serveur SQL Serveur 2003 ayant un update de ce type    create table #Data    (IdRow                    int Question sur le WHERE [ par mdemo ] Bonjour,Je suis sous Asp.net 2.0 et Sql server 2005, mais ma question est à priori indépendante de ça.J'ai un tableau sur lequel je souhaite faire des update [ par ehmarc ] salut a tous,je fonctionne sur une bdd oracle ma requete ici ne marche pas :update PS_tao1 SET cust_id = b.cust_id from ps_tao1 a, ps_tao2 b where Problème de select multiples dans plusieurs tables [ par superseb801 ] bonjour, J'ai un problème, je voudrais faire une requête sur plusieurs tables en même temps (3 pour être plus précis), et avec d'autres SELECT dans le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales