Probleme pour les posts (PHP)

Résolu
Bonjour,
j'ai essayé de créer un forum rudimentaire en php , il marche enfin presque , il y a un probleme :
quand je remplis une zone de texte comme ca par exemple:

ceci est un texte
je suis a la ligne

il y aura marqué :

ceci est un texte je suis a la ligne

alors comment pn peut faire pour eviter ça? il y a deja une fonction ou je dois la créer moi même?
help svp ^^
Configuration: Windows Vista
Firefox 2.0.0.9

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. j'ai trouvé

    $in_topic = str_replace('
    ', "<br/>
    ", $in_topic);

    c'était pas sorcier^^
    1. Modérateur
      '\n' est différent de "\n"
      '\n' c'est la chaine \n alors que "\n" symbolise le caractère de retour à la ligne.
      Dans ton str_replace, mets des guillemets doubles comme j'ai mis dans mon exemple au dessus.
      1. ca marche toujours pas :s

        bon voici mon code php:

        <?php
        if (isset($_POST['name_topic']) and $_POST['name_topic'] != "" and isset($_POST['name']) and $_POST['name'] != "")//si le nom du topic et le pseudo existent et si il y quelque chose
        {
        $name_topic = $_POST['name_topic'];// on créer la variable nom du topic
        $name_topic = str_replace('\n', "<br/>", $name_topic);
        $in_topic = $_POST['in_topic'];// on créer la variable contenu du topic
        htmlspecialchars ($in_topic);
        $name = $_POST['name'];// on créer la variable du pseudo pour le cookie
        htmlspecialchars($name);
        setcookie(name,$name,time() + 60*60*24*30*12); // on créer le cookie qui contien le pseudo
        $topics = fopen("file:///C:/datawamp/topics.html","a");// on ouvre le fichier des topics
        fputs($topics, "<li>par ".$name." le".date('d/m/Y à H:i:s ')." <a href='".$name_topic.".php'>".$name_topic."</a></br>");//on écrit le lien du topic dans la liste des topics
        fclose($topics);// on ferme le fichier
        $topic = fopen("file:///C:/wamp/www/".$name_topic.".php","a");// on créer le fichier topic
        fputs($topic, "<center><h2>".$name_topic."</h2></center></br>");// on écrit le nom du topic en haut de la page
        fputs($topic,$in_topic);// on écrit le contenu du topic
        fclose($topic);//on ferme le fichier
        echo '<title>message posté</title>';
        echo '<center><h2>votre message a bien été posté</h2></br>';
        echo 'cliquez <a href="forum.php">ici</a> pour revenir au forum</center>';
        }
        else //sinon
        {
        if (isset($_POST['name']) and $_POST['name'] == "")//verifie si le pseudo est vide
        {echo "vous n'avez pas mit de pseudo!</br>";}//si oui affiche un message d'erreur
        if (isset($_POST['name']) and $_POST['name_topic'] == "")//verifie si le pseudo est vide
        {echo "vous n'avez pas mit de nom de sujet!";}//si oui affiche un message d'erreur
        ?>
        <title>poster un message</title>
        <center><h2>poster un message</h2></center>
        <form action="poster.php" method="post">
        pseudo:<input type="text" name="name" value="<?php echo $_COOKIE['name'] ?>" /></br>
        nom du topic:<input type="text" name="name_topic" /><br />
        <textarea name="in_topic" rows="8" cols="45">
        </textarea></br>
        <input type="submit" value="Poster" />
        </form>
        <?php
        }
        include ("file:///C:/datawamp/ip.php");
        ?>

        il y a une erreur quelque part mais ou svp?
        1. Modérateur
          Prends l'habitude de voir les détails sur les fonctions sur le site officiel: php.net. Ce site est la bible du Php.
          http://fr3.php.net/manual/fr/function.str-replace.php
          $chaine = str_replace("sous chaine à remplacer", "sous chaine de remplacement", $chaine);
          =>
          $chaine = str_replace("\n", "<br/>", $chaine);
          1. Modérateur
            Salut,

            Il faut que tu remplaces les "\n" (saut de ligne standard) en "<br/>" (saut de ligne html).
            Tu peux utiliser str_replace pour ça.
            1. merci mais quelle est la syntaxe exacte ce cette instruction?