While + Requête



  • Bonjour,

    J'aurais aimé savoir si on pouvait exécuté une requête dans une boucle while.

    En fait j'ai un souci depuis que j'ai mis une requête dans une boucle. Cela n'affecte plus que le premier enregistrement.

    Voici au cas où le code que j'ai écrit

    $query= 'SELECT ami_news.id_news, ami_news.contenu_news, ami_utilisateur.nom_utilisateur, 
            DATE_FORMAT(ami_news.date_news, "News écrite le %d/%m/%Y à %H:%i" ) as DATE_NEWS
            FROM ami_news
            inner join ami_utilisateur on ami_news.id_user=ami_utilisateur.id_user
    		where ami_utilisateur.id_group='.$id_group.' or ami_utilisateur.id_group=1
            ORDER BY ami_news.DATE_NEWS DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage 
            ;
    
    $reponse = mysql_query($query) or die("Erreur SQL : $query<br/>".mysql_error());
    
    while ($row = mysql_fetch_array($reponse)){
    	$ID_NEWS = $row[0];
    
    	/*nl2br permet de faire un saut de ligne si l'utilsateur a appuyé sur enter lors de l'écriture de la news. 
    	Cela permet d'éviter de mettre la balise <br> dans la news
    	*/
    
    	$CONTENU_NEWS = nl2br($row[1]);
    
    	$ID_USER = $row[2];
    
    	$DATE_NEWS = $row[3];
    
    	$query='select count(*) from ami_commentaire where ami_commentaire.id_reference='.$ID_NEWS;
    
    	$reponse=mysql_query($query) or die ("Erreur SQL : $query<br/>".mysql_error());
    
    	$data=mysql_fetch_array($reponse);
    
    	$nbrCommentaire=$data[0];
    
    	echo "
    		<h3>
    		$DATE_NEWS par $ID_USER
    		</h3>
    
    		<p class='news'>
    		$CONTENU_NEWS
    		</p>
    		<a href="commentaire.php?type=1&reference=$ID_NEWS">Commenter cette news ($nbrCommentaire Commentaire(s))</a>
    	";
    
    }
    

    Merci d'avance pour votre aide :)



  • J'aurais aimé savoir si on pouvait exécuté une requête dans une boucle while.

    Oui, c'est déconseiller, mais tu peux.

    Remplace une fois les $row[nombre] par $rows['nom du champ'].

    Vérifie aussi le contenu de tes tableaux ;)



  • Tout d'abord merci pour ta réponse Phénix.

    Mais je ne vois pas trop l'intérêt d'utiliser un tableau associatif à la place du tableau classique. Si c'est pour s'assurer que les variables sont les bonnes, c'est ok car c'est un ancien module qui fonctionnait très bien avant et je viens d'y ajouter une fonction, à savoir les commentaires.

    S'il n'est pas conseillé de mettre une requête à l'intérieur d'une boucle while, qu'est il alors conseillé pour pouvoir utilisé des variables d'une boucle dans une requête?

    Merci d'avance pour votre aide



  • Alors j'ai résolu le problème.

    Le problème provenait du fait que ma deuxième query ainsi que son traitement portait les mêmes noms de variables.

    Je pense même que le problème provenait de $reponse qui en fait était reinitialisé dans la boucle et donc la boucle s'arretait en toute logique.

    Dès que j'ai un peu de temps je vais essayer de faire cela en une seule requête. Avec des jointures et des group by, il doit y avoir moyen.

    Bon codage à tous


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.