PACMaN2002 | Salut,
J'ai fait une requête qui retire des messages de mon phpbb, mais le problème, c'est qu'à la fin, j'ai mis "ORDER BY topic_id DESC" et le serveur de mon hébergeur payant était presque HS...
Voici la requête en question :
Code :
- "SELECT phpbb_topics.forum_id, phpbb_topics.topic_id, phpbb_topics.topic_title, phpbb_topics.topic_time, phpbb_posts_text.post_text,phpbb_posts_text.bbcode_uid,phpbb_users.username FROM phpbb_topics, phpbb_posts,phpbb_posts_text, phpbb_users WHERE
- phpbb_topics.article = 1
- AND phpbb_topics.topic_poster = phpbb_users.user_id
- AND phpbb_topics.topic_id = phpbb_posts.topic_id
- AND phpbb_posts.post_id = phpbb_posts_text.post_id
- AND phpbb_users.user_id = phpbb_topics.topic_poster
- AND phpbb_topics.forum_id = '1'
- OR phpbb_topics.forum_id = '2'
- OR phpbb_topics.forum_id = '3'
- OR phpbb_topics.forum_id = '21'
- ORDER BY phpbb_topics.topic_id DESC
- LIMIT 0,15"
|
J'ai vu la fonction array multisort() qui à ce qu'il parait, permet de faire comme order by.
Alors, voici ce que je pensais faire :
Code :
- $requete = "SELECT phpbb_topics.forum_id, phpbb_topics.topic_id, phpbb_topics.topic_title, phpbb_topics.topic_time, phpbb_posts_text.post_text, phpbb_posts_text.bbcode_uid, phpbb_users.username FROM phpbb_topics,phpbb_posts,phpbb_posts_text,phpbb_users WHERE
- phpbb_topics.article = 1
- AND phpbb_topics.topic_poster = phpbb_users.user_id
- AND phpbb_topics.topic_id = phpbb_posts.topic_id
- AND phpbb_posts.post_id = phpbb_posts_text.post_id
- AND phpbb_users.user_id = phpbb_topics.topic_poster
- AND phpbb_topics.forum_id = '1'
- OR phpbb_topics.forum_id = '2'
- OR phpbb_topics.forum_id = '3'
- OR phpbb_topics.forum_id = '21'
- DESC
- LIMIT 0,15";
|
Après je fais :
Code :
- $row = mysql_fetch_array($requete);
- foreach ($arr as $key => $row) {
- $topic_id[$key] = $row["topic_id"];
- }
- array_multisort($topic_id, SORT_DESC, $arr);
|
Mais après je ne sais pas trop comment faire pour pouvoir afficher les 15 enregistrements que j'ai demandé et qui ont été classés.
Par exemple, ca pourrait etre ca :
Code :
- <?php
- // on ouvre une connexion sql
- $requete = "SELECT phpbb_topics.forum_id, phpbb_topics.topic_id, phpbb_topics.topic_title, phpbb_topics.topic_time, phpbb_posts_text.post_text, phpbb_posts_text.bbcode_uid, phpbb_users.username FROM phpbb_topics,phpbb_posts,phpbb_posts_text,phpbb_users WHERE
- phpbb_topics.article = 1
- AND phpbb_topics.topic_poster = phpbb_users.user_id
- AND phpbb_topics.topic_id = phpbb_posts.topic_id
- AND phpbb_posts.post_id = phpbb_posts_text.post_id
- AND phpbb_users.user_id = phpbb_topics.topic_poster
- AND phpbb_topics.forum_id = '1'
- OR phpbb_topics.forum_id = '2'
- OR phpbb_topics.forum_id = '3'
- OR phpbb_topics.forum_id = '21'
- DESC
- LIMIT 0,15";
- $row = mysql_fetch_array($requete);
- foreach ($arr as $key => $row) {
- $topic_id[$key] = $row["topic_id"];
- }
- WHILE (array_multisort($topic_id, SORT_DESC, $arr))
- {
- // la on affiche les enregistrements
- }
- ?>
|
Alors, je sais pas si ce code est juste, d'ailleurs ca m'étonnerait... Donc si vous avez des solutions, je suis preneur!
Sinon, à votre avis, c'est order by ou desc qui fait bloquer ?
@+ et merci d'avance! Message édité par PACMaN2002 le 06-06-2004 à 13:24:01
|