Comment faire un truc comme ca ? - SQL/NoSQL - Programmation
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
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
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 |
J'avoue ne pas avoir compris le rapport avec mon truc
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
Marsh Posté le 09-08-2003 à 12:37:23
Ca marche très bien avec un champ PAGE, je ne vois pas le pb
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
Marsh Posté le 09-08-2003 à 12:38:34
Sur 1 000 000 d'enregistrements, ce n'est pas le plus rapide ...
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
Marsh Posté le 09-08-2003 à 12:40:27
JagStang a écrit : |
Ca marche EXTREMEMENT BIEN chez moi vu que la page de l'enregistrement ne change pas par la suite !
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
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
Marsh Posté le 09-08-2003 à 12:43:57
Max Evans a écrit : Gros pb de LIMIT au contraire |
Le problème vient que l'index n'est pas ordonné. pas du limit
Marsh Posté le 09-08-2003 à 12:44:31
JagStang a écrit : |
C'est la meme chose ici donc
Mais bon, ca marche tres bien, le pb n'est pas la
Marsh Posté le 09-08-2003 à 12:46:17
Max Evans a écrit : |
Alors tant mieux pour toi et désolé de t'avoir aidé
Marsh Posté le 09-08-2003 à 12:47:38
Le pb n'était pas situé a ce niveau !
Mais tjs un souci pour recuperer la place des enregistrements
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 ?
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
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
Marsh Posté le 09-08-2003 à 14:38:00
MagicBuzz a écrit : Y'a pas un truc genre "rownum" comme avec Oracle ? |
Connais po ca
Marsh Posté le 09-08-2003 à 14:48:38
Max Evans 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 ?
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
Marsh Posté le 09-08-2003 à 15:59:50
Citation : |
cf ma première intervention...
Citation : |
Marsh Posté le 09-08-2003 à 17:09:04
JagStang a écrit :
|
Autant pour moi, je n'avais pas bien compris
Toutes mes excuses, encore une fois,désolé
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.
Marsh Posté le 09-08-2003 à 11:56:28
Hello à tous
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