IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec fputs($fp et if(!empty(


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 38
    Points
    38
    Par défaut Problème avec fputs($fp et if(!empty(
    Bonjour à tous, je dois réaliser un petit exercice avec fichier, mais malheureusement :
    -Je n'ai pas le retour à la ligne dans "fichier.txt"
    -Sur le serveur, ma commande if(!empty($_POST['$commentaire'])) reste sur : CLIQUEZ ICI... Alors que je voulais : 'Vous devez remplir les champs' lorsque le textarea est vide et 'CLIQUEZ ICI.' lorsque le texte a été soumis.
    Vous comprendrez mieux avec le code...
    (J'ai pourtant suivi des indications précises et je ne vois pas pourquoi ça ne va pas...)
    Merci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
     
    <textarea style="width:400px; height:30px"; name="commentaire">
    <?
    $fp = fopen("fichier.txt","a+"); // Ouverture fichier a+
    fputs($fp, "\n"); // A la ligne
    fputs($fp, "$commentaire"); // On écrit
    fclose($fp);  // Fermeture
    ?>
    </textarea>
    <input type="submit" value="Valider">
    </form><br/>
     
    <?php
    if(!empty($_POST['$commentaire']))
    {
    print 'Vous devez remplir les champs';
    }
    else
    {
    echo 'CLIQUEZ <a href="">ICI </a>';
    }   
    ?>

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Salut,
    Je penses que tu as de gros souchi de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <? $Tab=file($File); ?>
     
    <form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post">
     
    <textarea style="width:400px; height:30px"; name="commentaire">
    <?
       foreach ($Tab as $key => $Row) {
           echo $Row;
       }
    ?>
    </textarea>
    <input type="submit" value="Valider">
    </form><br/>
     
    <?php
    if($_POST['$commentaire']=='')
    {
    print 'Vous devez remplir les champs';
    }
    else
    {
    echo 'CLIQUEZ <a href="">ICI </a>';
    }   
    ?>

    Guigo

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    B'in en fait ça me donne 2 erreurs
    Warning: file() [function.file]: Filename cannot be empty in /web/..../....on line 1
    et
    <br />
    <b>Warning</b>: Invalid argument supplied for foreach() in <b>/web/.../.../....php</b> on line <b>7</b><br />
    dans le textarea.
    Help ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il fait une écriture, pas une lecture ... (quoique le mode d'ouverture a+ permettrait les deux, mais il n'y a que des fputs)

    Bref, il faudrait surtout virer le $ dans le nom de la clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_POST['$commentaire']))
    Mettre l'écriture de fichier dans ce test plutôt (partie else).
    Et remplacer $commentaire par $_POST['commentaire'] à moins d'avoir les register_globals à On (fortement déconseillé et cette fonctionnalité est obsolète).

    Pour le saut de ligne, ça dépend du(des) système(s). Si on se réfère au serveur, le plus simple c'est d'utiliser la constante PHP_EOL.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Merci @ julp pour tes infos.
    Pourtant quand tu dis Mettre l'écriture de fichier dans ce test plutôt (partie if) je suis pas sûr d'avoir pigé.
    Pour le retour à la ligne c'est ok, il fallait noter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fputs($fp, "\r\n");// A la ligne
    Reste le problème du message à afficher si le commentaire est vide.
    j'ai essayé pas mal de choses (sans succès)
    j'ai viré le $ de $commentaire puis voici le dernier essai (ne fonctionne toujours pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $commentaire = $_POST['commentaire'];
    if(empty($commentaire))
    {
    print("Vous devez remplir les champs"); 
    exit();
    }
    else 
    { 
    print("$titre : <a href=\"$url\">$url</a>"); 
    }
    ?>

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Une erreur sur le formulaire ? Et il me semble, qu'avec votre code de départ, $_POST['commentaire'] ne serait jamais réellement vide au départ car contiendrait les sauts de ligne et indentation situé entre les balises <textarea></textarea>.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <form action="" method="post">
        <textarea style="width:400px; height:30px" name="commentaire"></textarea>
        <input type="submit" value="Valider">
    </form>
    <br/>
     
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if(empty($_POST['commentaire'])) {
            die('Vous devez remplir les champs');
        } else {
            file_put_contents('fichier.txt', $_POST['commentaire'] . PHP_EOL, FILE_APPEND);
            echo 'CLIQUEZ <a href="">ICI </a>';
        }
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 64
    Points : 38
    Points
    38
    Par défaut
    Oops, merci !
    Pendant ce temps j'avais trouvé ça pour le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $commentaire = $_POST['commentaire'];
    if(!empty($commentaire))
    {
     echo 'Vous avez noté, '.$commentaire.' Vous pouvez revenir sur la page <a href="#">Page</a>';
     }
     else {
     echo 'vous n\'avez pas rempli tous 
     les champs';
     }
    ?>
    En même temps mon code est un peu bricolé, je vais essayer le tiens.
    A ++
    Pour moi c'est résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2010, 20h01
  2. problème avec \thispagestyle{empty}
    Par RO_student dans le forum Mise en forme
    Réponses: 8
    Dernier message: 06/05/2008, 16h08
  3. problème avec fputs
    Par une_tite_question dans le forum Bibliothèque standard
    Réponses: 11
    Dernier message: 06/02/2008, 09h20
  4. Problème avec la fonction fputs
    Par GDMINFO dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2007, 11h10
  5. petit problème avec fputs
    Par takai dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo