ajouter conditions dans while

Avatar du membre
Eléphant du PHP | 60 Messages

26 janv. 2019, 16:25

Bonjour,
je suis en train d'essayer de créer un petit forum sans prétention pour mon site ce qui est très instructif car j’apprends beaucoup du coup.
Voici là ou je bloque pour le moment ;
La page avec le code ci-dessous affiche bien les commentaires dans un tableau mais le soucis c'est que ça affiche les commentaires de toutes les catégorie et pas uniquement celle qui est en cours d'affichage.
Je pense qu'il faut ajouter des conditions quelques part mais lesquelles et où ?
J'ai pourtant réussi un début de piste avec ce code
// test affichage selon condition
if ($infos2->id = $infos3->categorie)
echo "afficher tous les messages suivant la catégorie $infos2->titre";
// fin du test
qui affiche bien le nom de la catégorie dans laquelle on est mais j'arrive pas à reproduire le truc dans le tableau qui affiche les messages.
ça fait 2 jours que je suis dessus et je suis sûr que c'est tout bête....
Donc merci d'avance pour le coup de main.
<?php
define('include',NULL);
include('../core.php');

include('../header.php');
include('../sidebar.php');

$sqlinfos = $db->prepare('SELECT euros, credits, pseudo, avatar FROM membres WHERE id = :id');
$sqlinfos->execute(array(':id' => $_SESSION['membre']));  
$infos = $sqlinfos->fetch(PDO::FETCH_OBJ);

$avatar = ($infos->avatar == '') ? '/theme/images/noavatar.png' : $infos->avatar;

//On vérifie qu'une variable GET à été transmise
if(isset($_GET['id']))
{
  //On se sert de la variable GET pour récupérer l'entrée dans la table correspondant au membre choisi
  $query = "SELECT * FROM forum_cat WHERE id = ".$_GET['id'];
  //Tu éxécute la requête, et fait un affichage classique...
$sqlinfos2 = $db->prepare('SELECT * FROM forum_cat WHERE id = :id');
$sqlinfos2->execute(array(':id' => $_GET['id']));  
$infos2 = $sqlinfos2->fetch(PDO::FETCH_OBJ);

if(isset($_POST['envoyer']))
{
	$message=($_POST['message']);
	$auteur=($_POST['auteur']);
	$categorie=($_POST['categorie']);
	$date=($_POST['date']);
}

$insert = $db->prepare('INSERT INTO forum_commentaire SET message = :message, auteur = :auteur, categorie = :categorie, date = :date');
$insert->execute(array(':message'=>$_POST['message'], ':auteur'=>$_POST['auteur'], ':categorie'=>$_POST['categorie'], ':date'=>time()));


$sqlinfos3 = $db->prepare('SELECT * FROM forum_commentaire ORDER BY id DESC');
$sqlinfos3->execute(array(':id' =>id));
$infos3 = $sqlinfos3->fetch(PDO::FETCH_OBJ);

// test affichage selon condition
if ($infos2->id = $infos3->categorie)
echo "afficher tous les messages suivant la catégorie $infos2->titre";
// fin du test



echo '
<div id="content" class="float_r"><div class="center topart"><h3>'.$infos2->titre.'</h3><div class="sidehead2"><div class="sidehead3"></div></div></div>
<div class="center padding">
'.$infos2->description.'<br><br>

<div class="center"><a href="index"><button type="button" class="btn">Retour au forum</button></a></div><br>



<form method="post" action="/forum/categorie.php?id='.$infos2->id.'"> 
<input type="hidden" value="'.$infos->pseudo.'" name="auteur" />
<input type="hidden" value="'.$infos2->id.'" name="categorie" />
<input type="hidden" value="time" name="date" />

<table class="table"><tr class="tr"><td style="width: 90%" class="center"><b>Ajouter votre commentaire</b></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><textarea rows="6" cols="45" class="input" name="message" id="message" placeholder="Ecrivez ici votre commentaire..." required></textarea></td></tr>
<tr style="background: white;"><td style="width: 90%" class="center"><input type="submit" value="Envoyer" name="envoyer" class="btn" /></td></tr>
</table></form><br /><br />


<table class="table">
<tbody>
<tr class="tr"><td style="width:55%">Commentaire</td><td class="center" style="width:20%">Auteur</td><td class="center" style="width:25%">Date</td></tr>
</tbody>
</table>';



$sqlforum_commentaire = $db->query('SELECT * FROM forum_commentaire ORDER BY id DESC');
while($forum_commentaire = $sqlforum_commentaire->fetch(PDO::FETCH_OBJ)){

echo '<table class="table">
<tbody>
<tr style="background: white;">
<td style="width:55%">'.$forum_commentaire->message.'</td><td class="center" style="width:20%">'.$forum_commentaire->auteur.'</td><td class="center" style="width:25%">'.jour_date($forum_commentaire->date).'</td></tr>
</tbody>
</table>';


}

echo '<br><div class="center"><span style="color:green"><b>Mini Forum créé par bibou51</b></span></div><br>



</div><br />

</div>';



}


include('../footer.php');
?>

Mammouth du PHP | 2703 Messages

26 janv. 2019, 20:51

= pour affecter
== pour comparer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 janv. 2019, 23:38

= pour affecter
== pour comparer
=== pour comparer la valeur et le type de variable (ça limite les risques d'erreur en général)
Quand tout le reste a échoué, lisez le mode d'emploi...