Voilà j'ai dernièrement essayé d'ajouter une requête dans une autre requête. C'est une modification d'un forum qui permet de coupler un message avec un événement. Je récupère donc les messages avec la première requête et pour le premier post uniquement je regarde s'il y a pas des infos concernant un événement à afficher (en corrélation avec le message du topic donc).
Voici le code :
<?php
$result = $db->query('SELECT t.subject, t.closed, t.num_replies, t.sticky, t.agenda, t.agenda_id, t.news, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, s.user_id AS is_subscribed FROM '.$db->prefix.'topics AS t INNER JOIN '.$db->prefix.'forums AS f ON f.id=t.forum_id LEFT JOIN '.$db->prefix.'subscriptions AS s ON (t.id=s.topic_id AND s.user_id='.$pun_user['id'].') LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$pun_user['g_id'].') WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id='.$id.' AND t.moved_to IS NULL') or error('Unable to fetch topic info', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($result))
message($lang_common['Bad request']);
$cur_topic = $db->fetch_assoc($result);
//[...]
$PdS_result = $db->query('SELECT * FROM agenda WHERE id=\''.$cur_topic['agenda_id'].'\'') or error('Unable to fetch topics info : acces agenda PdS impossible', __FILE__, __LINE__, $db->error());
if (!$db->num_rows($PdS_result))
message($lang_common['Bad request']);
$PdS_cur_agenda = $db->fetch_assoc($PdS_result);
//[...]
?>
Mon problème arrive lorsque il y a plusieurs posts dans le topic (un premier message puis des messages de réponses à celui-ci). Seul le premier message s'affiche, comme si la seconde requête empêchait les autres messages de s'afficher.
D'où pourrait venir le problème ? Comment le régler ?
Merci
Pour ton problème, je ne connais pas les détails d'implémentation de ta classe "db" mais j'ai fors l'impression qu'en réutilisant
la même instance de ton objet "db" tu vas perdre le resultset de ta première requête...et tu ne pourras plus "boucler" sur les résultats de ta première requête: le tampon étant "remplacé" par les résultats de la seconde => fait ta seconde requête avec une autre instance de ton objet "db"?!
++
2 requêtes une dans l'autre
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.