Bonjour,
Alors mon problème n'est pas très compliqué et relève plus des mathématiques qu'autre chose, je m'explique, j'affiche dans une <div> une liste de tuple extraite de ma base de donnée, 15 par page, seulement, je veux empiler deux résultats différents provenant de la meme table, trié sur un critère..
Facile vous vous dites, ORDER BY et puis voila! Mais non... car puisque j'en affiche 15 par page, il y a donc une LIMIT et le LIMIT prend le dessus sur le ORDER BY c'est a dire que si je veux mes ligne "L1", puis collé derriere mes lignes "L2" et si j'ai plus de 15 ligne L1 mais réparti aleatoirement dans ma table le limit va prendre les 15 premier enregistrement sans prendre en compte le tri, puis seulement les trier.. Avec donc comme résultat a la premiere page par exemple : 14 L1, 1 L2 et a la deuxieme page 1 L1 qui se balade et le reste en L2.
Je sais pas si c'est compréhensible jusque la, bref je continue, donc j'ai voulu construire une fonction qui créer mes requêtes en fonction de mon besoin :
Si il y a moins d'enregistrement L1 que de billet par page, alors je récupere également les L2 et je concatene les tableaux.
Si il y a plus d'enregistrement que de ligne, je recupere uniquement les L1 pour la page en cour et, et je fait l'opération précédente pour la page suivante et ainsi de suite...
Seulement, je ne m'en sort pas du tout !
Voici un bout de script que j'ai tapé, il fonctionnait à peu pres au début mais les effets de bords m'ont bien indiqué que je me plantait royalement!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 if($nd>0){ if(($p*15+15) <= $nd){ $q1 = "SELECT * FROM appel WHERE TO_DAYS(NOW()) - TO_DAYS(appel_date) = 0 AND appel_operateur_depanne IS NULL "; $l1 = "id ASC LIMIT ".($p*15).",15"; }else{ $q1 = "SELECT * FROM appel WHERE TO_DAYS(NOW()) - TO_DAYS(appel_date) = 0 AND appel_operateur_depanne IS NULL "; $l1 = "id ASC LIMIT ".($p*15).",".; $q2 = "SELECT * FROM appel WHERE TO_DAYS(NOW()) - TO_DAYS(appel_date) = 0 AND appel_operateur_depanne IS NOT NULL "; $l2 = "id ASC LIMIT ".($p-$nd).",15"; }
Je suis sur qu'un brave homme bourré de bon sens et de logique va me comprendre, en effet la je demande la solution.. ou de solides pistes, j'ai passé trop de temps pour si peu !
Cordialement.
Partager