Comment faire un truc comme ca ?

Comment faire un truc comme ca ? - SQL/NoSQL - Programmation

Marsh Posté le 09-08-2003 à 11:56:28    

Hello à tous :hello:
 
J'ai un petit pb la, je pense pas que se soit tres compliqué, mais je bloque :/
 
En fait, j'ai une table qui content 150 enregistrements :)
 
J'ai un SELECT ... LIMIT $machin,30
 
Ce que je veux :
 
Si la place de l'enregistrement est comprise entre 0 et 30, alors j'UPDATE le champ PAGE en lui donnant la valeur 1.
 
Si la place de l'enregistrement est comprise entre 31 et 60, alors j'UPDATE le champ PAGE en lui donnant la valeur 2.
 
Etc etc :)
 
J'insiste bien sur la place de l'enregistrement, pas sur l'ID de l'enregistrement :)
 
J'espere avoir été clair :??:
 
Merci a tous ;) :jap:

Reply

Marsh Posté le 09-08-2003 à 11:56:28   

Reply

Marsh Posté le 09-08-2003 à 12:23:10    

c'est quoi que tu appelles "la place" ?

Reply

Marsh Posté le 09-08-2003 à 12:27:28    

Oué, j'ai pas été très clair ;)
 
Alors :
SELECT id FROM bidule LIMIT 0,30 par exemple.
 
Ca me ressort les ID de 65 a 95 on va dire :)
 
L'ID 65 a la place 1, le 75 la place 10, ... , le 95 la place 30 :)


Message édité par Max Evans le 09-08-2003 à 12:27:56
Reply

Marsh Posté le 09-08-2003 à 12:28:11    

On ne maintient pas le numéro de page dans la base de donnée. Il faut le calculer à chaque fois
 
Car sinon tu auras des pages de tailles différentes, etc...  
Quand tu annuleras un id, il te faudra décaler le tout, etc...
 
$query  = "SELECT * FROM matable ORDER BY id DESC LIMIT (($pagecourante+1) *5), 5 " ;
 
J'espère que tu piges l'astuces. Il faut donner au LIMIT le début à partir duquel, et la quantité.
 
si $pagecourate vaut 4, ça fait donc LIMIT 25, 5 soit l'élément 25,26,27,28,29


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:33:19    

JagStang a écrit :

On ne maintient pas le numéro de page dans la base de donnée. Il faut le calculer à chaque fois
 
Car sinon tu auras des pages de tailles différentes, etc...  
Quand tu annuleras un id, il te faudra décaler le tout, etc...
 
$query  = "SELECT * FROM matable ORDER BY id DESC LIMIT (($pagecourante+1) *5), 5 " ;
 
J'espère que tu piges l'astuces. Il faut donner au LIMIT le début à partir duquel, et la quantité.
 
si $pagecourate vaut 4, ça fait donc LIMIT 25, 5 soit l'élément 25,26,27,28,29
 


 
J'avoue ne pas avoir compris le rapport avec mon truc :??:

Reply

Marsh Posté le 09-08-2003 à 12:35:56    

je résume pour toi alors
 
Ne maintiens pas la page dans la base de donnée


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:37:23    

Ca marche très bien avec un champ PAGE, je ne vois pas le pb :??:

Reply

Marsh Posté le 09-08-2003 à 12:38:02    

Tu passe des variables dans les pages
du style page.php?p=4
 
tu récupère cette valeur dans la requete et voilà
Je peux pas être plus clair


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:38:34    

Sur 1 000 000 d'enregistrements, ce n'est pas le plus rapide ...

Reply

Marsh Posté le 09-08-2003 à 12:39:35    

Max Evans a écrit :

Ca marche très bien avec un champ PAGE, je ne vois pas le pb :??:


 
MAINTENIR
 
tu annules le premier de la page 1, tu dois te tapper un trigger (qui n'existe pas en MySQL) pour corriger les autres derrières
 
Pour rappel, on ne stock dans une bd uniquement ce que ne peut PAS calculer !!!
 
par exemple, on ne stock pas le total d'une facture, etc


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:39:35   

Reply

Marsh Posté le 09-08-2003 à 12:40:27    

JagStang a écrit :


 
MAINTENIR
 
tu annules le premier de la page 1, tu dois te tapper un trigger (qui n'existe pas en MySQL) pour corriger les autres derrières
 
Pour rappel, on ne stock dans une bd uniquement ce que ne peut PAS calculer !!!
 
par exemple, on ne stock pas le total d'une facture, etc


 
Ca marche EXTREMEMENT BIEN chez moi vu que la page de l'enregistrement ne change pas par la suite !

Reply

Marsh Posté le 09-08-2003 à 12:41:11    

Max Evans a écrit :

Sur 1 000 000 d'enregistrements, ce n'est pas le plus rapide ...


 
aucun problème avec le LIMIT crois-moi


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:42:14    

Gros pb de LIMIT au contraire :)
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
 
PS : Ce n'est pas exactement la meme requete, mais le principe est la :)

Reply

Marsh Posté le 09-08-2003 à 12:43:57    

Max Evans a écrit :

Gros pb de LIMIT au contraire :)
 
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
 
PS : Ce n'est pas exactement la meme requete, mais le principe est la :)


 
Le problème vient que l'index n'est pas ordonné. pas du limit


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:44:31    

JagStang a écrit :


 
Le problème vient que l'index n'est pas ordonné. pas du limit
 


 
C'est la meme chose ici donc ;)
Mais bon, ca marche tres bien, le pb n'est pas la :D

Reply

Marsh Posté le 09-08-2003 à 12:46:17    

Max Evans a écrit :


 
C'est la meme chose ici donc ;)
Mais bon, ca marche tres bien, le pb n'est pas la :D


 
Alors tant mieux pour toi et désolé de t'avoir aidé  :kaola:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 12:47:38    

:pt1cable:  
 
Le pb n'était pas situé a ce niveau !
Mais tjs un souci pour recuperer la place des enregistrements :)

Reply

Marsh Posté le 09-08-2003 à 13:08:41    

titre pourri  [:taz]

Reply

Marsh Posté le 09-08-2003 à 13:10:23    

Taz a écrit :

titre pourri  [:taz]  


 
 :whistle:

Reply

Marsh Posté le 09-08-2003 à 13:38:04    

c'est pour la page des sujets ? si tu supprimes un sujet, tu te retrouves avec une page avec un sujet en moins, donc comment tu fais ?

Reply

Marsh Posté le 09-08-2003 à 14:36:59    

Y'a pas un truc genre "rownum" comme avec Oracle ?
-> Ca retourne un autoincrément pour chaque ligne, correspondant à la position dans le résultat

Reply

Marsh Posté le 09-08-2003 à 14:37:51    

Limit a écrit :

c'est pour la page des sujets ? si tu supprimes un sujet, tu te retrouves avec une page avec un sujet en moins, donc comment tu fais ?


 
Non non, page des posts :)

Reply

Marsh Posté le 09-08-2003 à 14:38:00    

MagicBuzz a écrit :

Y'a pas un truc genre "rownum" comme avec Oracle ?
-> Ca retourne un autoincrément pour chaque ligne, correspondant à la position dans le résultat


 
Connais po ca :(

Reply

Marsh Posté le 09-08-2003 à 14:48:38    

Max Evans a écrit :


 
Non non, page des posts :)

et bien, imagine ton message a 5pages. qqn supprime son message dans la page 2, alros la page 2 a un message en moins ?

Reply

Marsh Posté le 09-08-2003 à 14:49:30    

Limit a écrit :

et bien, imagine ton message a 5pages. qqn supprime son message dans la page 2, alros la page 2 a un message en moins ?


 
Ha merde, pas con  [:psychokwak]

Reply

Marsh Posté le 09-08-2003 à 15:59:50    

Citation :


et bien, imagine ton message a 5pages. qqn supprime son message dans la page 2, alros la page 2 a un message en moins ?


 
 
cf ma première intervention...
 

Citation :


Car sinon tu auras des pages de tailles différentes, etc...  
Quand tu annuleras un id, il te faudra décaler le tout, etc...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 09-08-2003 à 17:09:04    

JagStang a écrit :

Citation :


et bien, imagine ton message a 5pages. qqn supprime son message dans la page 2, alros la page 2 a un message en moins ?


 
 
cf ma première intervention...
 

Citation :


Car sinon tu auras des pages de tailles différentes, etc...  
Quand tu annuleras un id, il te faudra décaler le tout, etc...




 
Autant pour moi, je n'avais pas bien compris :(
 
Toutes mes excuses, encore une fois,désolé ;)

Reply

Marsh Posté le 11-08-2003 à 15:04:38    

je sais pas si tu pourras faire ce que tu veux en 1 seule requête, mais en 2, voilà ce que tu peux faire :*
- 1 première requête pour récupérer dans une variable les ID à modifier,
- 1 seconde requête pour mettre à jour les ID contenu dans ta variable tableau.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed