Siron > Personellement, avec mysql, j'utilise un
Code :
- SELECT patati FROM matable LIMIT (numerodepage-1)*nbpostparpage,nbpostparpage
|
et ca marche trés bien même s'il y a des trous, et ca me permet de garder l'autoincrément. (on lui indique combien en sauter et combien on en veut)
Avec acces, c'est un truc du genre
Code :
- SELECT TOP (numerodepage*nbpostparpage) patati FROM matable
|
Je me rapelle plus si le TOP est juste aprés le SELECT ou juste avant le FROM. En tout cas, ca marche tout aussi bien à par qu'il faut sauter les (numerodepage-1)*nbpostparpage premier résultat retourné vu qu'ils ne font pas parti de la page courante. (on lui indique combien on en veut en comptant ceux qu'on veut sauter)
Avec postgressql c'est
Code :
- SELECT patati FROM matable LIMIT nbpostparpage, OFFSET (numerodepage-1)*nbpostparpage
|
ce qui revient exactement au même qu'avec mysql (on lui indique combien on en veut et combien en sauter)
Dans tous les cas, ca me permet d'utiliser les autoincrément et je touche jamais à la colone qui correspond vu que même s'il y a des trous, c'est invisible au niveau du code.
En fait, il ne faut pas réfléchir en (par exemple) "page 1 = posts numéro 1 à 25, page 2 = posts numéro 26 à 50 ..." mais en "page 1 = 25 premiers résultats de la requette, page 2 = 25 premiers résultats situé aprés les 25 premiers, page 3 = 25 premiers résultats aprés les 50 premiers (25 premiers aprés les numerodepage-1 * 25). Et en réfléchissant comme ça, on peut enfin laisser la base de données calculer qui sont les n premiers et en fait, lui laisser carément nous dire dans quel ordre sont les différents messages.
Tout ça pour dire que si t'arrives à réfléchir différement au probléme, alors tu n'auras plus à toucher à l'autoincrément et entre nous, ne pas l'utiliser pour éviter des trous d'id, c'est vraiment chercher des complications par la suite.
Par exemple, avec un indice manuel, comment tu feras quand tu devras censurer un message? Tu seras obligé de le suprimer définitivement ou de le stocker dans une table à part (ca rajoute des étapes) pour le stocker le temps de voir si c'est une censure définitive. Et si tu les suprimes, et qu'un jour tu te plante de message par ce que t'étais creuvé, tu vas faire comment pour recréer la super réponse pondus par un autre vu que t'as plus le texte du message nulle part?
Et si jamais des intervenants de ton forum veulent la possibilité de ne plus voir s'afficher les messages d'un gas qu'ils ont appris à détester, tu vas faire quoi? Tu vas leur répondre "a ben non, ca je peux pas faire par ce que ca fera des trous dans l'affichage!" ?
Quand à l'index que tu calcule à la main, si ton forum devient fréquenté (ce que je te souhaite), tu risques de te retrouver avec deux emssages qui auront le même index vu que tôt ou tard, une personne postera un message pendant que ton script traitera la réponse de la personne précédante (l'index n'étant pas encore incrémenté dans la base de donnée, le suivant essaiera de reprendre le même) ce qui veut complication du code pour gérer ce genre de cas tandisqu'avec un index autoincrémenté, c'est la base de donnée qui s'occupera de se genre de cas et elle elle s'en sortira toujours.
En bref, mieux vaut avoir un id dont certain numéro n'existent pas et laisser la base de donnée tout nous fournir comme il faut sur un plateau qu'un systéme à indice manuel nécessitant une grosse gestion d'erreur et qu'on ne poura jamais faire évoluer que difficilement car les évolutions entraineraient beaucoup de complication.