Problème exécution de deux requettes simultanée - PHP - Programmation
Marsh Posté le 17-02-2006 à 15:22:41
deux choses:
- tu fais +1 à la cote X ( celle-ci devient donc X'=X+1) et ensuite tu fais -1 à la cote qui vaut X+1 soit X'
- c'est normal que ça soit des strings tes cotes et pas des int?
Marsh Posté le 17-02-2006 à 15:24:10
Tu met temporairement un des id à -1 (théoriquement tu dois pas avoir -1 dans ta bdd).
Marsh Posté le 17-02-2006 à 15:29:48
- c'est normal que ça soit des strings tes cotes et pas des int?
Heu ... quel est la différence ?
Pour ce qu'il est des cotes, sur papier j'ai trouvé que pour une cote X le no. de celle-ci devient X+1
Par la suite la cote suivante no. X+1 son no devient X-1
Un exmple concret : descente de la cote 1 en 2
- le no de la cote 1 devient X+1 donc 2
- le no de la cote 2 devient X-1 donc 1
Vue que les cotes sont classées par no., la cote deux serait donc bien à la place de la 1.
Je sais pas ou je me trompe, mais ca fait deux heures que j'essaye n'importe qu'elle technique et le resultat est le meme. J'ai meme essayé de passer le no. de cote en cour et celui suivant dans l'url pour m'en reservir dans les requettes mais rien n'y fait ...
Marsh Posté le 17-02-2006 à 15:31:25
Tu met temporairement un des id à -1 (théoriquement tu dois pas avoir -1 dans ta bdd).
C'est ce que j'suis entrain de faire, mais j'aurais bien aimé savoir ou je m'étaits trompé avant, car oau début je pensais que ce serait simple !!!
Marsh Posté le 17-02-2006 à 15:40:54
mc_cut_killer a écrit : - c'est normal que ça soit des strings tes cotes et pas des int? |
la doc ça roxxe:
http://dev.mysql.com/doc/refman/4. [...] rview.html
http://dev.mysql.com/doc/refman/4. [...] rview.html
Quoi qu'il en soit, même s'en savoir ce quoi la différence, comment se fait-il que les deux requetes ne soit pas similaires?
mc_cut_killer a écrit : |
oui enfin la tu noteras bien que tu as 2 cotes qui valent 2 ...
Regarde j'ai les quotes X=1 et Y=2.
Tu fais X=X+1 => X=2
Ensuite
Pour la cote = 2 tu fais -1, d'accord mais la quote=2 c'est X ET Y
Marsh Posté le 17-02-2006 à 15:42:03
Voici, quelque chose qui marche en mettant temporairement -1 au no de tranche en cour :
Code :
|
Cela ne fait pas inpeu lourd ? Il existe pas un moyen plus simple pour obtenir ce resultat ?
Marsh Posté le 17-02-2006 à 15:46:19
et puis tu dois pouvoir tout faire en une seule requete un truc dans le genre
Code :
|
Marsh Posté le 17-02-2006 à 15:48:03
Regarde j'ai les quotes X=1 et Y=2.
Tu fais X=X+1 => X=2
Ensuite
Pour la cote = 2 tu fais -1, d'accord mais la quote=2 c'est X ET Y
Effectivement, j'avais été un peu vite dans l'étude du problème.
J'ai fini par opté pour le mise à -1 temporaire du no de cote à descendre, car je ne voi pas comment faire en partant de l'autre principe.
Marsh Posté le 17-02-2006 à 15:54:01
Je viens d'essayer la requette au dessus de mon dernier poste de anapajari.
Celle-ci renvoie encore une fois le meme no pour les cotes concernées domage j'aurais bien aimez n'utiliser qu'une requette au lieu de 3!
Je vais essayer de trouver comme faire avec une requette, mais je croi bien que c'est au dessus de mes compétences
Marsh Posté le 17-02-2006 à 16:03:40
mc_cut_killer a écrit : Je viens d'essayer la requette au dessus de mon dernier poste de anapajari. |
Nan nan elle marche bien la requête
J'ai créé la table suivante pour tester:
Code :
|
Donc je me retrouve dans la table avec:
Citation : |
Ensuite je fais cette requete ( j'ai remplace ton $no_cote par 3 pour l'exemple):
Code :
|
et le contenu de ma table devient:
Citation : |
Marsh Posté le 17-02-2006 à 16:19:47
J'doi vraiment etre un bourrin lol
Moi ca marche pas, faut dire que je me contente d'utiliser des requettes simple pour l'instant
Je vais garder ce post pour m'en servir lors d'une prochaine évolution.
Quoi qu'il en soit je vous remercie pour votre aide car maintenant ca marche, certes avec trois requettes mais bon ...
Moi j'utilise cette table, et $no_cote est récupéré dans l'url par un $_GET
Code :
|
Avec ces trois valeurs de test :
Code :
|
Marsh Posté le 17-02-2006 à 16:49:30
nan nan même avec ta table ça marche
Code :
|
puis ( $no_cote=1 dans l'exemple)
Code :
|
enfin
Code :
|
Marsh Posté le 17-02-2006 à 16:57:53
Effectivement ca marche !
Encore falait-il que je pense à faire le premier select
Du coup je te remercie vraiment pour ton aide, car ca fait carément plus propre et plus efficace que ma première technique
@bientot et bon week end ...
Marsh Posté le 22-02-2006 à 11:15:29
Bon je reviens sur mon problème
Effectivement j'ai cru que ca marchais et après mon petit week de 4 jours, je teste tranquilement et ... c'est le drame !
Voici la requette que j'utilise avec mes paramètres :
Code :
|
Lorsque je l'exécute une première fois, ca marche nickel la cote 1 obtient le no.2 et inversement pour la 2.
Par la suite je tente donc de déscendre la cote 1 devenue 2 en 3, et la ca marche plus du tout !
La cote 3 obtient le no. 0 et la cote 2 et 1 on toutes deux le numéro 1
Je voie pas du tout où est le problème car je ne possède pas encore le niveau pour utiliser de telles requettes
Alors sans abuser, si on pouvais m'indiquer l'érreur ca serait vraiment bien
Marsh Posté le 22-02-2006 à 16:39:11
"no_cote = no_cote+1 - (no_cote-1)*2"
C'est pas pour dire, mais cette partie me semble être basé sur un super cas particulié. En bref, en temps normal, ca ne marche pas.
En plus, la partie where de ta requette semble faite pour ne permette l'inversion que de deux éléments contigue.
En plus générique :
Tu véras que comme ça, ca marchera trés bien et même si t'as besoin d'inverser des éléments trés éloigné, tu le feras sans rien avoir à changer.
PS : je te l'ai écrit sous forme d'algorythme, a toi de le coder sous forme d'une requette sql et d'un peu de php.
PS2 : Voilà les indices calculé par ta formule avec le calcul sous la forme : incide de départ => (indice de départ-1) - ((indice de départ+1)*2) = résultat
0 => 1 - (-2) = 3
1 => 2 - 0 = 2
2 => 3 - 2 = 1
3 => 4 - 4 = 0
4 => 5 - 6 = -1
4 => 6 - 8 = -2
....
Marsh Posté le 22-02-2006 à 17:11:20
OK, je regarde ca demain
Mais dans tout les cas l'inversion se fera toujours sous forme contigue. En fait j'ai ajouté deux images de fleches à la suite de l'apercu (une qui monte et qui descent), de cette façon l'inversion se fait toujours avec l'élément (le no.) du dessus, ou du dessous pour l'opération inverse.
Marsh Posté le 23-02-2006 à 12:06:34
omega2 a écrit : "no_cote = no_cote+1 - (no_cote-1)*2" |
Tout a fait cela ne marche que si les deux élements se suivent ... Sinon
Mais c'est comme ça que j'avais compris le problème! et c'est bien ce que semble dire mc_cut_killer.
Si ça merde c'est parce qu'à un endroit j'avais remplacé $no_cote par 1 et que tu as laissé 1, il fallait faire:
Code :
|
Et là tu n'auras plus (enfin ne devrais plus avoir) de problème.
Marsh Posté le 24-02-2006 à 11:07:27
Excelent
J'avais laissé un 1, du coup avec la dernière requette ca marche nickel
Un grand merci à anapajari pour son aide et sa patience ...
Marsh Posté le 17-02-2006 à 15:19:16
Bonjour à tous,
je bloque actuellement sur un problème (simple à résoudre ?) concernant l'exécution de deux requettes.
Je trouvail sur une table cote numérotée. Du genre cote no.1 ... no.n, j'ai rajouté deux boutons pour pouvoir monter au descendre les cotes en changeant leur no.
Théroriquement c'est simple : si l'utilisateur veut que la cote no.1 devient la no.2 il clique sur le bouton de la fleche qui descent donc : il faut ajouter +1 au no.1 qui devient 2 et inversement -1 au no.2 qui devient 1.
Voici mon script :
Si j'exécute les requettes séparément pas de problème, mais dès que je les ajoutes ca marche plus ... j'obtient toujours le meme resultat, le même numéro de cote !
Quelqu'un pourais me donner une petite soluce ???