Salut à tous,

J'ai un peu de mal à faire fonctionner ce code.

La boucle est surement mal écrite. Il doit manquer des " ou des . ou alors le ; . J'ai un peut tout essayé et je mouline.

Et en virant cette ligne tout fonctionne. Mais bon je veux quand même afficher tout les commentaires :)

Merci par avance

<?php
$comments ="
<h2>Vos commentaires</h2>
while($d = $aff_comments->fetch())
        {
      <div> 
        <p>Posté par {$d"pseudo"]}le ".date("j/n/Y à G:i",strtotime($d"date"]))."</p>
        <p>{$d"comments"]}</p>     
      </div>             
        } 
<form method=\"post\" action=\"traitements/add_comments\"/>
<fieldset>

<legend><h3>Laissez un commentaire</h3></legend>
<p class=\"champs\"> 
<label for=\"nom\" title=\"Inserez votre nom\" class=\"oblig\">Nom</label>
<input type=\"text\" id=\"nom\" name=\"nom\" title=\"Inserez votre nom\" tabindex=\"1\"></input>
</p>
<p class=\"champs\"> 
<label for=\"mail\" title=\"Inserez votre Email\" class=\"oblig\">E-mail</label>
<input type=\"text\" id=\"mail\" name=\"mail\" title=\"Inserez votre email\" tabindex=\"1\"></input>
</p>
<p class=\"champs\"> 
<label for=\"site\" title=\"Inserez votre site web\" class=\"oblig\">Inserez votre site web</label>
<input type=\"text\" id=\"site\" name=\"site\" title=\"Inserez votre site web\" tabindex=\"1\"></input>
</p>
<p class=\"textarea\">
<label for=\"comments\" title=\"Votre commentaire\" class=\"oblig\">Commentaire</label></p>
<textarea name=\"comments\" id=\"comments\" ></textarea>

</fieldset>
 <input class=\"insert\" type=\"submit\" value=\"Envoyer\">
</form>";
?>

3 réponses


PaulB319
Réponse acceptée

Effectivement, mieux vaut utiliser ob_start() et ob_get_clean().

<?php ob_start() ?>
<h2>Vos commentaires</h2>
<?php while($d = $aff_comments->fetch()): ?>
    <div> 
        <p>Posté par <?php echo $d"pseudo"] ?> le <?php echo date("j/n/Y à G:i",strtotime($d"date"])) ?></p>
        <p><?php echo $d"comments"]; ?></p>
    </div>             
<?php endwhile; ?>
<form method="post" action="traitements/addcomments">
    <fieldset>
    <legend>Laissez un commentaire</legend>
    <p class="champs"> 
        <label for="nom" title="Inserez votre nom" class="oblig">Nom</label>
        <input type="text" id="nom" name="nom" title="Inserez votre nom" />
    </p>
    <p class="champs"> 
        <label for="mail" title="Inserez votre Email" class="oblig">E-mail</label>
        <input type="text" id="mail" name="mail" title="Inserez votre email" />
    </p>
    <p class="champs"> 
        <label for="site" title="Inserez votre site web" class="oblig">Inserez votre site web</label>
        <input type="text" id="site" name="site" title="Inserez votre site web" />
    </p>
    <p class="textarea">
        <label for="comments" title="Votre commentaire" class="oblig">Commentaire</label>
        <textarea name="comments" id="comments"></textarea>
    </p>    
    </fieldset>
    <input class="insert" type="submit" value="Envoyer" />
</form>
<?php $comments = ob_get_clean(); ?>

Je t'ai supprimé les \ et corrigé les fautes de syntaxe... Tu devrais te rendre sur le Site du zéro pour réviser tes bases en HTML/PHP :)

Salut !

Tu n'as mis aucune ouverture ou fermeture du php sur le html déjà... commence peut-être par là.
Ensuite je ne comprends pas trop : ce que tu affiches là, pourquoi est-il stocké ainsi dans une variable ? Pourquoi ne fais-tu pas plutôt une function que tu appelles ?

Merci ça marche très bien.

Donc si je comprends bien.
La fonction ob_start() stocke tout les informations qui suivent.
Et ob_get_clean affiche le tout dans la variable $comments.

Pour ma syntaxe je regarderais nos deux code pour comprendre.
J'apprends tout doucement, ça fait seulement quelque mois que je code.