8791 sujets

Développement web côté serveur, CMS

Salut à tous,

Je rame depuis plusieurs jours sur un problème pour un blog alors merci d'avance de votre aide.
Sachant que j'ai testé aussi bien en local avec Wampserver et Easy Php que sur le réseau (1&1)...en vain
En gros :
1/J'ai une page qui récupère des articles de ma base de données (blog.php)
2/une page commentaires.php qui me permet de voir les commentaires propres à chaque article, mais il y a aussi un formulaire pour déposer un commentaire
3/ une page cible.php pour envoyer les données du formulaire
4/ 2 bdd, 1 pour les articles, l'autre pour les commentaires

Mon problème est que lorsque je remplis le formulaire, les données sont bien enregistrées dans ma bdd mais les commentaires n'apparaissent pas. Or si j’intègre les données directement dans ma base de données, ils apparaissent bien Smiley confus
En fait l'id_billet est toujours = 0 alors qu'elle devrait être associer à l'article !

Alors merci d'avance de votre aide Smiley cligne

la page blog.php


<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '', $pdo_options);
    $req = $bdd->query('SELECT id, titre, contenu, contenu2, sstitre, auteur, DATE_FORMAT(date_creation, \'%d/%m/%Y\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT 0, 5');
    
    while ($donnees = $req->fetch())
    {
    ?>
<div class="news">
<span class="pos-date">le <?php echo $donnees['date_creation_fr']; ?></span><br />
<h3><a class="permalink" href="ici" title="Permalink to <?php echo htmlspecialchars($donnees['titre']); ?>" rel="bookmark"><?php echo htmlspecialchars($donnees['titre']); ?></a></h3>

<h3 class="sstitre"><?php echo nl2br(htmlspecialchars($donnees['sstitre']));?></h3>
<h3 class="auteur"><?php echo nl2br(htmlspecialchars($donnees['auteur']));?></h3>
<p class="contents"><?php echo nl2br(htmlspecialchars($donnees['contenu']));?></p>


<h3 class="depot"><a class="posdepot" href="commentaires.php?billet=<?php echo ''. $donnees['id'] .''; ?>#formulaire">Déposer</a></h3><br class="clear" />
<a class="suite" href="commentaires.php?billet=<?php echo ''. $donnees['id'] .''; ?>"> Lire la suite <img src="img/fleche2.png" width="14" height="10" /></a>
<h4 class="count"><?php // Je compte les commentaires
$reponse = $bdd->query('SELECT COUNT(*) AS auteur FROM commentaires');
while ($donnees = $reponse->fetch())
{
	echo $donnees['auteur'];
}
$reponse->closeCursor();
?></h4>
<span class="pos-count">Commentaires</span>
</div>
<?php
    } // Fin de la boucle des billets
    $req->closeCursor();
    
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>


la page commentaires.php

<?php
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '', $pdo_options);
    
    $req = $bdd->prepare('SELECT id, titre, sstitre, contenu, contenu2, DATE_FORMAT(date_creation, \'%d/%m/%Y \') AS date_creation_fr FROM billets WHERE id = ?');
    $req->execute(array($_GET['billet']));
    $donnees = $req->fetch();
    ?>
<div class="news2">
<span class="pos-date">le <?php echo $donnees['date_creation_fr']; ?></span>
<h2><strong><?php echo htmlspecialchars($donnees['titre']); ?></strong></h2>
<h3 class="sstitre"><?php echo htmlspecialchars($donnees['sstitre']); ?></h3>
<p class="contents2"><?php echo nl2br(htmlspecialchars($donnees['contenu2'])); ?></p>
</div>
<h3> Vos commentaires</h3>
<?php $req->closeCursor(); 
    $req = $bdd->prepare('SELECT auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaires WHERE id_billet = ? ORDER BY date_commentaire');
    $req->execute(array($_GET['billet']));
    
    while ($donnees = $req->fetch())
    {
    ?>
<div id="deposee">
	<span class="pos-date2"><?php echo $donnees['date_commentaire_fr']; ?></span>
    <p><?php echo nl2br(htmlspecialchars($donnees['commentaire'])); ?></p>
    <p><?php echo htmlspecialchars($donnees['auteur']); ?></strong> </p>
</div>

    <?php
    } 
    $req->closeCursor();

}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>
<h3> Déposer un commentaire</h3>
<p class="champs">(*) champs obligatoire</p>
<div id="formulaire">

<form action="cible.php" method="post">
<p><label for="auteur">Pseudo * :</label>  <input type="text" name="auteur" id="auteur" /><br />
<label for="commentaire">Email * :</label>   <input type="text" name="email" id="email" /><br />
<label for="site">Site web :</label>   <input type="text" name="site" id="site" /><br /><br />
<label for="commentaire">Votre message * :</label>  <br />
<textarea name="commentaire" rows="6" id="commentaire"></textarea><br />
<input type="hidden" name="id_du_billet" value="$_GET['billet']" />
<input type="submit" value="Envoyer" id="button"/>
</form>
</p>

la page cible.php

<?php
// Connexion à la base de données
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=blog', 'root', '', $pdo_options);
    
    // Insertion du message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO commentaires (id_billet, auteur, commentaire, email, site) VALUES(?, ?, ?, ?, ?)');
    $req->execute(array($_POST['id_du_billet'], $_POST['auteur'], $_POST['commentaire'],$_POST['site'], $_POST['email']));
    
    // Redirection du visiteur vers la page du minichat
    header('Location: blog.php');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
?>



Merci.
Bye
Zed1
Modifié par Zed1 (22 Aug 2011 - 21:17)
Salut Zed1, je pense avoir trouvé ton problème dans : commentaires.php

<input type="hidden" name="id_du_billet" value="$_GET['billet']" />


La variable $_GET n'est pas interprétée par php mais comme une chaîne de caratères.

il faut la remplacer par :

<input type="hidden" name="id_du_billet" value="<?php echo $_GET['billet'];?>" />


Ca devrait marcher mieux Smiley cligne
Modifié par G3ronim0 (22 Aug 2011 - 20:26)
Yes yes yes !!!
Un grand merci de ma part mais aussi de mon écran qui était sur le point d'exploser à force de recevoir mes coups de poing Smiley cligne
Encore merci
Bye bye
Zed