Problème de requête MYSQL avec plusieurs limit
Bonjour tout le monde,
J'ai un petit souci avec le Limit Mysql.
J'effectue plusieurs requêtes qui me permettent d'obtenir plusieurs colonnes de résultat.
Je fais donc une première requête pour compter le nombre de résultats. Je divise ce nombre de résultat par 4, et je crée 4 requêtes avec LIMIT qui me permette normalement de découper le résultat en 4 sous groupe.
Voici la page sur laquelle ca ne fonctionne pas (vous pouvez voir clairement les requête dans le contenu de la page.
Sinon pour ceux qui n'ont pas le temps de cliquer sur ce lien, voici la requete qui compte le nombre de résultats :
Code:
1 2 3 4
| $compt_req = "SELECT id FROM pun_1users WHERE group_id = '1' OR group_id = '2' OR group_id = '7';";
$compt_res = mysql_query($compt_req);
$counte=mysql_num_rows($compt_res); |
Puis je découpe le nombre de résultat :
Code:
$quart = ceil($counte / 4);
Puis je créer mes 3 autres variable pour mes limit de requete :
Code:
1 2
| $double_quart = ceil(2 * $quart);
$triple_quart = ceil(3 * $quart); |
Ainsi je crée mes 4 requêtes mysql :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| $condition = "SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit";
$list_memb_req = $condition." 0, ".$quart.";";
$list_memb_res = mysql_query($list_memb_req);
$list_memb_req_1 = $condition." ".$quart.", ".$double_quart.";";
$list_memb_res_1 = mysql_query($list_memb_req_1);
$list_memb_req_2 = $condition." ".$double_quart.", ".$triple_quart.";";
$list_memb_res_2 = mysql_query($list_memb_req_2);
$list_memb_req_3 = $condition." ".$triple_quart.", ".$counte.";";
$list_memb_res_3 = mysql_query($list_memb_req_3); |
Voici les requêtes une fois éxecuté pour être le plus clair possible :
Code:
1 2 3 4
| SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 0, 8;
SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 8, 16;
SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 16, 24;
SELECT id, username, use_avatar, date_naissance FROM pun_1users WHERE (group_id = '1' OR group_id = '2' OR group_id = '7') ORDER BY username ASC limit 24, 29; |
Ensuite je retourne mes résultats dans mon contenu html :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <div class="colonne_gauche">
<ul class="gestion">
<?php while($list_memb = mysql_fetch_assoc($list_memb_res)){ require('row.php'); } ?>
</ul>
</div>
<div class="colonne_gauche">
<ul class="gestion">
<?php while($list_memb = mysql_fetch_assoc($list_memb_res_1)){ require('row.php'); } ?>
</ul>
</div>
<div class="colonne_gauche">
<ul class="gestion">
<?php while($list_memb = mysql_fetch_assoc($list_memb_res_2)){ require('row.php'); } ?>
</ul>
</div>
<div class="colonne_droite">
<ul class="gestion">
<? while($list_memb = mysql_fetch_assoc($list_memb_res_3)){ require('row.php'); } ?>
</ul>
</div> |
Et bizarrement, les LIMIT sont soit mal interprété ou autre, mais il va me mettre 8 résultat dans ma première colonne, 16 dans la deuxième, 16 dans la troisième, et me remettre les 8 derniers résultats dans ma dernière colonne (alors qu'il y était dans ma troisième colonne).
Cela fait quelques heures que je tourne en rond sans rien comprendre.
Merci pour votre aide !
Bien cordialement,
Sylvain