Problème affichage boucle suite à un SELECT

Eléphant du PHP | 372 Messages

17 janv. 2018, 08:09

Salut tout le monde.
Voilà j'essai de mettre en place un système de commentaires sur les news du site.
Ca marche nickel sauf depuis que j'ai rajouté le SELECT pour afficher les commentaies, depuis j'ai seulement la première news qui s'affiche et je ne vois pas le problème.
	   // Commentaores
	if(!empty($_POST['contenu'])){
	$req = $bdd->prepare('INSERT INTO comment (pseudo,id_simply_user,id_loisirs,contenu) VALUES(:pseudo, :id_simply_user, :id_loisirs, :contenu)');			
	$req->execute(array(
		 'pseudo'=>$_POST['pseudo'],
		 'id_simply_user'=>$_POST['id_simply_user'],
		 'id_loisirs'=>$_POST['id_loisirs'],
		 'contenu'=>$_POST['contenu']
	
 ));}
 
 
   	$comm = ("SELECT * FROM comment WHERE id_loisirs = ".$ligne["id_loisirs"]."");
	$req = $bdd->query($comm);  
	while($comment = $req->fetch(PDO::FETCH_ASSOC)){  
	$commentaires = $comment["contenu"];
	$name = $comment["pseudo"];
	}
 	
	
	// Si Différent d'un restaurant
	if (!empty ($ligne['tracker']) && $ligne['id_type_loisirs'] <> '1') {
	echo '
			
					<article>              
						  <div class="control-block-button post-control-button">
                                    <a href="voir.php?id='.$ligne["id_loisirs"].'" class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
                                    <a  href="#" class="btn btn-control"><i class="icon_set_1_icon-88"></i></a>
                                </div> 
                                <div class="post__author author vcard inline-items">
                                     <img src="../img/avatar2.jpg" alt="author">
                                    <div class="author-date">
                                        <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
                                        <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
                                        <div class="post__date">
                                            <time class="published" datetime="2017-03-24T18:18">
                                                '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'
                                            </time>
                                        </div>
                                    </div>
                                </div>
                        
                                <div class="post-video">
                                    <div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
                                    <div class="video-content"><p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p></div>
                                </div>
                                <div> 
									 <a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
										<div class="commentaires">
											<form method="post">
											<textarea name="contenu"></textarea>
											<input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
											<input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
											<input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
											<button class="post-comment" type="submit">OK</button>
											</form>	
										   '.$name.' / '.$commentaires.' <br>			
                               			 </div>	 
							</article>';
}
Merci pour votre aide

Mammouth du PHP | 2703 Messages

17 janv. 2018, 14:37

while($comment = $req->fetch(PDO::FETCH_ASSOC)){
$commentaires = $comment["contenu"];
$name = $comment["pseudo"];
}

il n'y a aucun affichage dans la boucle donc cela ne peut pas afficher plusieurs commentaires.

Mammouth du PHP | 643 Messages

17 janv. 2018, 19:28

a la fin de mon code j'ai:
    '.$name.' / '.$commentaires.' <br>			
                               			 </div>	 
              </article>';
}
Donc ça m'affiche bien les commentaires.
Mais le problème c'est que ça ma'affiche plus qu'une seul news et si je supprimé la partie commentaires les news apparaissent correctement

Pour rapel le code entier:
	while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  
	

		
	// Afficher les commentaires selon l'annonce	
$comm = ("SELECT * FROM comment WHERE id_loisirs = ".$ligne["id_loisirs"]."");
  $req = $bdd->query($comm);  
  while($comment = $req->fetch(PDO::FETCH_ASSOC)){  
  $commentaires = $comment["contenu"];
  $name = $comment["pseudo"];
  }
	

	// Poster un commentaire selon l'annonce
	if(!empty($_POST['contenu'])){
	$req = $bdd->prepare('INSERT INTO comment (pseudo,id_simply_user,id_loisirs,contenu) VALUES(:pseudo, :id_simply_user, :id_loisirs, :contenu)');			
		$req->execute(array(
			 'pseudo'=>$_POST['pseudo'],
			 'id_simply_user'=>$_POST['id_simply_user'],
			 'id_loisirs'=>$_POST['id_loisirs'],
			 'contenu'=>$_POST['contenu']
		));
 	}
 
 
	if (!empty ($ligne['tracker']) && $ligne['id_type_loisirs'] <> '1') {
		
		
	echo '<article>              
		  <div class="control-block-button post-control-button">
          <a href="voir.php?id='.$ligne["id_loisirs"].'" class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
          <a href="#" class="btn btn-control"><i class="icon_set_1_icon-88"></i></a>
          </div> 
          <div class="post__author author vcard inline-items">
          <img src="../img/avatar2.jpg" alt="author">
          <div class="author-date">
          <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
          <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
          <div class="post__date">
          <time class="published" datetime="2017-03-24T18:18"> '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'</time>
          </div>
          </div>
          </div>
                        
         <div class="post-video">
         	<div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
			 <div class="video-content">
				<p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p>
			 </div>
         </div>
		 
         <div> 
		 	<a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
			 <div class="commentaires">
				 <form method="post">
					 <textarea name="contenu"></textarea>
					 <input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
					 <input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
					 <input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
					 <button class="post-comment" type="submit">OK</button>
				 </form>	
					 '.$ligne["pseudo"].'
		 </article>';
						

Mammouth du PHP | 2703 Messages

17 janv. 2018, 22:03

cela va afficher tous les commentaires :
while($comment = $req->fetch(PDO::FETCH_ASSOC)){
$commentaires = $comment["contenu"];
$name = $comment["pseudo"];
echo $commentaires;
}

Mammouth du PHP | 643 Messages

17 janv. 2018, 22:13

Re,
Donc en fait ça je sais mon problème est que je ne peut pas integrer ce bout de code tel quel. vu la structure de mon code.
Le tout noyé dans un echo ça bug forcément.

Mon problème est la.
	while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  
	
	  // Afficher les commentaires selon l'annonce	
	$comm = ("SELECT * FROM comment WHERE id_loisirs = ".$ligne["id_loisirs"]."");
  $req = $bdd->query($comm);  
  while($comment = $req->fetch(PDO::FETCH_ASSOC)){  
  $commentaires = $comment["contenu"];
  $name = $comment["pseudo"];
  }
  

	// Poster un commentaire selon l'annonce
	if(!empty($_POST['contenu'])){
		$req = $bdd->prepare('INSERT INTO comment (pseudo,id_simply_user,id_loisirs,contenu) VALUES(:pseudo, :id_simply_user, :id_loisirs, :contenu)');			
			$req->execute(array(
				 'pseudo'=>$_POST['pseudo'],
				 'id_simply_user'=>$_POST['id_simply_user'],
				 'id_loisirs'=>$_POST['id_loisirs'],
				 'contenu'=>$_POST['contenu']
			));
		}
 
 
	 	
	// Si Différent d'un restaurant
	if (!empty ($ligne['tracker']) && $ligne['id_type_loisirs'] <> '1') {	
	echo '<article>              
		  <div class="control-block-button post-control-button">
          <a href="voir.php?id='.$ligne["id_loisirs"].'" class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
          <a href="#" class="btn btn-control"><i class="icon_set_1_icon-88"></i></a>
          </div> 
          <div class="post__author author vcard inline-items">
          <img src="../img/avatar2.jpg" alt="author">
          <div class="author-date">
          <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
          <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
          <div class="post__date">
          <time class="published" datetime="2017-03-24T18:18"> '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'</time>
          </div>
          </div>
          </div>
                        
         <div class="post-video">
         	<div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
			 <div class="video-content">
				<p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p>
			 </div>
         </div>
		 
         <div> 
		 	<a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
			 <div class="commentaires">
				 <form method="post">
					 <textarea name="contenu"></textarea>
					 <input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
					 <input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
					 <input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
					 <button class="post-comment" type="submit">OK</button>
				 </form>	
					 
					 // le bout de code en question avec le while .... pour afficher tous les commentaires
					 
		 </article>';
							
					
		// ¨Posté par un internaute
		}elseif 
// Bref encore du code ...

Mammouth du PHP | 643 Messages

18 janv. 2018, 08:06

Si c'est plus clair en fait je souhaite affchicher le resultat de mon SELECT à la fin de mon code ou j'ai result['contenu'].
 $comm = "SELECT * FROM comment WHERE id_loisirs = ".$ligne["id_loisirs"]."";
	 $hop = $bdd->query($comm);
	 if($hop->rowCount() > 0) {           
	 while($result = $hop->fetch(PDO::FETCH_ASSOC)){ 
	 $commentaire = $result['contenu'];
	  }  	
	}


	// Poster un commentaire selon l'annonce
	if(!empty($_POST['contenu'])){
		$req = $bdd->prepare('INSERT INTO comment (pseudo,id_simply_user,id_loisirs,contenu) VALUES(:pseudo, :id_simply_user, :id_loisirs, :contenu)');			
			$req->execute(array(
				 'pseudo'=>$_POST['pseudo'],
				 'id_simply_user'=>$_POST['id_simply_user'],
				 'id_loisirs'=>$_POST['id_loisirs'],
				 'contenu'=>$_POST['contenu']
			));
		}
		
		
 
 
	 	
	// Si Différent d'un restaurant
	if (!empty ($ligne['tracker']) && $ligne['id_type_loisirs'] <> '1') {	
	echo '<article>              
		  <div class="control-block-button post-control-button">
          <a class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
          <a href="#" class="btn btn-control"><i class="icon_set_1_icon-82"></i></a>
          </div> 
          <div class="post__author author vcard inline-items">
          <img src="../img/avatar2.jpg" alt="author">
          <div class="author-date">
          <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
          <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
          <div class="post__date">
          <time class="published" datetime="2017-03-24T18:18"> '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'</time>
          </div>
          </div>
          </div>
                        
         <div class="post-video">
         	<div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
			 <div class="video-content">
				<p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p>
			 </div>
         </div>
		 
         <div> 
		 	<a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
			 <div class="commentaires">
				 <form method="post">
					 <textarea id="contenu" name="contenu"></textarea>
					 <input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
					 <input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
					 <input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
					 <button class="post-comment" type="submit">OK</button>
				 </form>	
					 
					 '.$result['contenu'].'
					 
		 </article>';
}elseif (empty ($ligne['tracker'])){ 
// ....

Avatar du membre
Mammouth du PHP | 1609 Messages

19 janv. 2018, 16:18

Salut yoann38, peut être que je me trompe mais le problème à priori c'est que tu utilises la variable $req pour les 2 requêtes alors que la deuxième boucle est imbriquée dans la première.
Développeur web depuis + de 20 ans

Mammouth du PHP | 643 Messages

21 janv. 2018, 16:38

Salut,
J'ai renommé mon SELECT pour les commentaires, mis ds la boucle qui affiche mes news.
Mais ça ne m'affiche que le dernier commentaires posté de chaque news au lieu de m'afficher tous les commentaires des news.
while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  

  
  // Commentaores
  if(!empty($_POST['contenu'])){
  $req = $bdd->prepare('INSERT INTO comment (pseudo,id_simply_user,id_loisirs,contenu) VALUES(:pseudo, :id_simply_user, :id_loisirs, :contenu)');			
  $req->execute(array(
     'pseudo'=>$_POST['pseudo'],
     'id_simply_user'=>$_POST['id_simply_user'],
     'id_loisirs'=>$_POST['id_loisirs'],
     'contenu'=>$_POST['contenu']
  
 ));}
 
 
 
 	
  
  // Si Différent d'un restaurant
  if (!empty ($ligne['tracker']) && $ligne['id_type_loisirs'] <> '1') {
	  
  $comm = ("SELECT * FROM comment WHERE id_loisirs = ".$ligne["id_loisirs"]."");
  $search = $bdd->query($comm);  
  while($comment = $search->fetch(PDO::FETCH_ASSOC)){  
  $commentaires = $comment["contenu"];
  $name = $comment["pseudo"];
  }
	  
  echo '
      
          <article>              
              <div class="control-block-button post-control-button">
                                    <a href="voir.php?id='.$ligne["id_loisirs"].'" class="btn btn-control"><i class="icon_set_1_icon-85"></i></a>
                                    <a  href="#" class="btn btn-control"><i class="icon_set_1_icon-88"></i></a>
                                </div> 
                                <div class="post__author author vcard inline-items">
                                     <img src="../img/avatar2.jpg" alt="author">
                                    <div class="author-date">
                                        <a class="h6 post__author-name fn" href="../'.simplification($ligne["titre"]).'/'.$ligne["id_loisirs"].'.html" title="'.ucfirst(strtolower($ligne['titre'])).' en '.ucfirst(strtolower($aLoisirs[$ligne["id_type_loisirs"]])).' à '.ucfirst(strtolower($ligne['city'])).'">'.ucfirst($ligne['titre']).'</a> -
                                        <a href="#">'.ucfirst($ligne['manufacturer']).'</a>
                                        <div class="post__date">
                                            <time class="published" datetime="2017-03-24T18:18">
                                                '.$ligne['date_debut_sortie'].' à '.str_replace(':', 'H',$ligne['horaire']).'
                                            </time>
                                        </div>
                                    </div>
                                </div>
                        
                                <div class="post-video">
                                    <div class="video-thumb"><img class="img-responsive post-img" src="'.$ligne['photo'].'" alt="'.ucfirst(strtolower($ligne['titre'])).'" title="'.strtolower($ligne['titre']).' - '.ucfirst(strtolower($ligne['city'])).'"></div>
                                    <div class="video-content"><p>'. ucfirst(strtolower(stripslashes(cutTexte($ligne['description'], 180, '...')))).'</p></div>
                                </div>
                                <div> 
                   <a href="#" class="MaClasse"><i class="icon_set_1_icon-85"></i> Commentaires</a>
                    <div class="commentaires">
                      <form method="post">
                      <textarea name="contenu"></textarea>
                      <input type="hidden" name="pseudo" value="'. $_SESSION['membre']['pseudo'].'">
                      <input type="hidden" name="id_simply_user" value="'.$_SESSION['membre']['id_simply_user'].'">
                      <input type="hidden" name="id_loisirs" value="'.$ligne["id_loisirs"].'">
                      <button class="post-comment" type="submit">OK</button>
                      </form>	
                       '.$commentaires.' <br>			
                               			 </div>	 
              </article>';
}
	}