Possible de mettre une requete dans une autre ?

Résolu
chumbodu31 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
TucSky Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je suis entrain de me faire un petit script pour rajouter des articles dans la BDD directement depuis la page du site prévue a cette effet.
jusqu'à maintenant tout s'est bien passer, mais je souhaite (bien évidement) l'améliorer.
ce que je souhaite c'est faire apparaître les 3 dernier commentaires dans la boucle qui affiche les article, seulement je pense pas pouvoir mettre une nouvelle requête entre celle-ci et sa fin ( $req->closeCursor(); )
je voulait savoir si c'est possible ou pas ? et si oui comment faire s'il vous plaît ?

<?php

// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=site_imcn', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// On récupère les 5 derniers articles
$req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, '%d/%m/%Y à %Hh%imin%ss') AS date_creation_fr FROM article_articles ORDER BY date_creation_fr DESC LIMIT 0, 5') ;
?>
<center>
<form action="articles_post.php" method="post">
<p>
<label for="message">Titre</label> : <input type="text" name="titre" id="titre" /><br />
<label for="message">Article</label> : <input type="text" name="article" id="article" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
</center>
<?php
while ($donnees = $req->fetch())
{
?>
<div class="news">
<h3>
<?php echo htmlspecialchars($donnees['titre']); ?>
<em>le <?php echo $donnees['date_creation_fr']; ?></em>
</h3>
<p>
<?php
// On affiche le contenu du article
echo $donnees['contenu'];
?>
<br />
<em><a href="commentaires.php?article=<?php echo $donnees['id']; ?>">Commentaires</a></em>
</p>
</div>
<?php
} // Fin de la boucle des articles
$req->closeCursor();
?>

Je vous remercie de vouloir prendre du temps pour m'aider
Bonne journée/soirée
                                        Chumboss

3 réponses

TucSky Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour :-)

Je ne connais pas PDO pour les bases de données, mais je suis sûr que pour ça, c'est la même chose que MYSQL.

Alors oui tu peut, sauf que exécuter une requête dans une boucle c'est pas top, en fonction du nombre de résultat et donc du nombre de répétition de ta boucle, ça peut faire beaucoup de requête (bon ici y en a que 5 mais quand même)

Il vaut mieux minimiser le nombre de requête BDD quand on peut ;-)

Donc moi je te proposerai de faire une requête dans la table commentaire au même niveau que celle des articles, de stocker en $key les id des articles auquel ils correspondent et de mettre en $value, un array qui définit l'auteur, la date, le message du commentaire enfin ça c'est toi qui fait avec se que tu as.

en gros : $comments[*ID ARTICLE*] = array("date"=>"*DATE COMMENT*", "message"=>"*MESSAGE*");

Ensuite ben dans la boucle des articles tu affiche les commentaires dont la $key = $donnees['id'] (en veillant à se qu'il n'y ait que 3 commentaires par articles)
0
chumbodu31 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Ok je test sa de suite .

Merci pour ta réponse et pour ce qui est du "bourrage" des requête dû aux nombre d'article,

j'y avait pensé c'est pour cela que je l'ai limiter a 5 et pour ce qui est de la table commentaire elle est déjà faite avec tout ce qu'il faut dedans puisque je veux afficher un "avant-goût" des commentaire (les 3 derniers)

Encore merci et passe une bonne journée.

                                                   Chumboss


Je vien de test sa marche Merci beaucoup ! je passe en résolu.
                                                   Chumboss
0
TucSky Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   1
 
Bon après c'est possible de le faire, et pour 5 requête, c'est pas dramatique je pense (ça dépend de l'affluence, du serveur etc...)
0