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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Conception] Ecrire le contenu d'un formulaire dans un fichier


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut [Conception] Ecrire le contenu d'un formulaire dans un fichier
    Bonjour a tous,
    j'ai une page html avec un formulaire genre

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form id="form1" name="form1" method="post" action='upload.php' enctype='multipart/form-data'>  
    <label>my_texte
      <textarea name="textarea"></textarea>
      </label>
      <p>
        <label>
        <input type="submit" name="Submit" value="Submit" />
        </label>
      </p>
      <p>&nbsp;</p>
    </form>

    et je me demande comment faire un fichier upload.php qui écrirait le contenue du formulaire dans un fichier qui s'appellerait par exemple contenue.txt

    je n'ai qu'une petite base en php et vraiment ca me dépasse
    une âme charitable ?

    Merci

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ben tu peux tout simplement récupérer le contenu de ton formulaire puis créer ton fichier de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //Ouverture du répertoire de destination
    $fichierouvert = fopen ($dirname.$filename, "w+");
    //Copie du fichier
    if ( !fwrite($fichierouvert, $contenu)) {
      echo "Impossible d'écrire dans le fichier ($filename)";
      exit;
    }
    //Fermeture du fichier
    fclose ($fichierouvert);
    Avec $contenu qui contiendra la ligne à écrire dans le fichier txt, $dirname qui sera le répertoire, et je pense que le reste tu sauras

    Mais si tu as un soucis n'hésite pas

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 3
    Par défaut
    Merci beaucoup, ca fonctionne no 1 maintenant

    alors voici le code complet pour ceux que ca interesserait.

    voici le fichier avec le formulaire ou tu entre ton texte (qui s'appeller updatetxt.html dans ce cas ci).

    Code HTML : 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
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Untitled Document</title>
    </head>
    <body>
     
     
    <form id="form1" name="form1" method="post" action='updatetxt.php' enctype='multipart/form-data'>  
    <label><br />
    <br />
    <textarea name="textarea" cols="60" rows="10" ></textarea>
      </label>
      <p>
        <label>
        <input type="submit" name="Submit" value="Submit" />
        </label>
      </p>
      <p>&nbsp;</p>
    </form>
     
     
    </body>
    </html>

    et maintenant le formulaire updatetxt.php qui recupère le code et écrit le fichier inclure.txt sur le disque.

    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
     
    <?php
    // recuperation du nom du fichier
    $contenu = stripslashes(nl2br(htmlentities($_POST['textarea'])));
    //Ouverture du répertoire de destination
    $fichierouvert = fopen ("inclure.txt", "w+");
    //Copie du fichier
    if ( !fwrite($fichierouvert, $contenu)) {
      echo "Impossible d'écrire dans le fichier ($filename)";
      exit;
    }
    //Fermeture du fichier
    fclose ($fichierouvert);
    echo "Merci on as enregistrer le message <br>";
    echo "$contenu";
    ?>
    reste plus qu'as ajouter la ligne de code suivante dans une pages html (avec extension.php) pour avoir une partie du site modifiable par le clients.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    include ("updatetxt/inclure.txt");
    ?>
    et voila la base pour un petit site dynamique.
    Merci encore
    Omeada

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    voici ton code m'a bien servit

    j'ai l'intention d'écrire des .ini avec cette méthode (c'est pour configurer un application serveur avec une page admin)

    je voudrais que la page admin soit comme un formulaire
    pour ecrire les réponses dans le fichier c'est facile
    mais la deux problemes se posent :
    il me faut des morceau de text prédéfinis lors de l'écriture et aussi pouvoir sauter des lignes lors de l'écriture dans le fichier

    mon fichier .ini faut qu'il ressemble a ça :
    Pseudo :.....
    Id :...
    Option : ....

    comment faire ecrire avec les parametre saisie dans le formulaire les trois mots ci dessus avec la presentation de ci dessu (sauter des ligne)

    merci d'avance de votre aide

  5. #5
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par FracMaster
    comment faire ecrire avec les parametre saisie dans le formulaire les trois mots ci dessus avec la presentation de ci dessu (sauter des ligne)
    Vous avez la constante PHP_EOL en PHP qui représente le ou les caractères de nouvelle ligne du système où est installé PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $pseudo = $_POST['pseudo']; // A filtrer
    $id = $_POST['id']; // A filtrer
    $option = $_POST['option']; // A filtrer
     
    $fichierouvert = fopen ('config.txt', 'w'); // Mode w = fichier écrasé !!!
    if (!fwrite($fichierouvert, 'Pseudo: ' . $pseudo . PHP_EOL . 'Id: ' . $id . PHP_EOL . 'Option: ' . $option)) {
      die("Impossible d'écrire dans le fichier 'config.txt'");
    }
    fclose ($fichierouvert);
    echo "Paramètres enregistrés";
    ?>
    C'est juste un exemple (non testé), je vous laisse le soin de l'adapter à vos besoins.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    merci pour ton aide

    encore une petit question : voici j'ai mon fichier d'origine admin.ini et je voudrais remplir les champs de mon questionnaire avec les différents paramètre qui y sont dedans
    y a t il un moyen de le faire ??

  7. #7
    Membre expérimenté

    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
    Par défaut
    Il vous suffit de le lire et dans le cas d'un fichier ini, la fonction parse_ini_file devrait vous convenir.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    merci pour la fonction je commence juste en php
    donc pourrais tu me dire ou la placer car pour l'instant j'ai mon admin.htm (formulaire que je dois remplir avec les paramètres du fichier) et les updates.php (servant a écrire dans le fichier)

    d'ailleur je vois bien avec cette fonction comment récupérer les paramètres mais seulement tout les paramètres, je vois pas comment récupéré 1 paramètre parmis tout les paramètre en question, donc si quelqu'un pourrait m'expliquer?

  9. #9
    Membre expérimenté

    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
    Par défaut
    Cette fonction renvoie un tableau associant un nom à sa valeur. Vous connaissez les paramètres que vous devez récupérer donc il est facile de les exploiter :

    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
    <?php
    define('INI_FILE', 'mon_fichier.ini');
     
    $ini = parse_ini_file(INI_FILE);
    $pseudo = isset($ini['Pseudo']) ? trim($ini['Pseudo']) : '';
    $id = isset($ini['Id']) ? trim($ini['Id']) : '';
    $option = isset($ini['Option']) ? trim($ini['Option']) : '';
    ?>
     
    <form method="post" action="updates.php">
        Id : <input type="text" name="id" value="<?php echo $id; ?>" />
        <br />
        Pseudo : <input type="text" name="id" value="<?php echo $pseudo; ?>" />
        <br/>
        Option : <input type="text" name="id" value="<?php echo $option; ?>" />
        <br />
        <input type="submit" name="submit" value="Valider" />
    </form>
    Par contre si vous avez plusieurs sections dans votre fichier php.ini, il faudrait utiliser le deuxième paramètre optionnel de la fonction parse_ini_file et le fixer à TRUE (voir ajouter un formulaire pour choisir d'abord la section).

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    j'ai adapté ton code malheureusement dans les champs de mon formulaire il n'y a pas la valeur de la variable mais "<?php echo $id; ?>" pour tout les champ en changeant id par le nom de la variable marqué dans value.

    merci d'avance de ton aide

  11. #11
    Membre expérimenté

    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
    Par défaut
    Votre page ne porte pas l'extension html par hasard ? Si vous voyez les portions de code PHP c'est qu'elles ne sont pas interprétées.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    y a t il une différence entre htm et html???

    EDIT : voici je viens de voir la difference et ai résolu mon probleme

    merci pour ton aide

    maintenant me reste plus qu'a trouver comment ecrire dans le fichier . ini

  13. #13
    Membre expérimenté

    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
    Par défaut
    Je ferais comme ceci : recharger le fichier ini via parse_ini_file afin de récupérer son contenu sous la forme d'un tableau puis on effectue les modifications à faire (via le formulaire) et pour terminer on réécrit le fichier.

    Code updates.php : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    define('FICHIER_INI', 'mon_fichier.ini');
     
    function write_ini_file($nomFichier, $donnees) {
        $fp = fopen($nomFichier, 'w');
        flock($fp, LOCK_EX);
        foreach ($donnees as $k => $v) {
            if (is_array($v)) {
                fputs($fp, PHP_EOL . '[' . $k . ']' . PHP_EOL);
                foreach ($v as $subk => $subv) {
                    if (is_numeric($subv) or is_bool($subv) or is_null($subv)) {
                        fputs($fp, $subk . '=' . $subv . PHP_EOL);
                    } else {
                        fputs($fp, $subk . '= "' . $subv . '"' . PHP_EOL);
                    }
                }
            } else {
                if (is_numeric($v) or is_bool($v) or is_null($v)) {
                    fputs($fp, $k . '=' . $v . PHP_EOL);
                } else {
                    fputs($fp, $k . '= "' . $v . '"' . PHP_EOL);
                }
            }
        }
        flock($fp, LOCK_UN);
        fclose($fp);
    }
     
    if (isset($_POST['submit'])) {
        if (isset($_POST['id']) && isset($_POST['pseudo']) && isset($_POST['option'])) {
            $id = stripslashes($_POST['id']);
            $pseudo = stripslashes($_POST['pseudo']);
            $option = stripslashes($_POST['option']);
            $ini = parse_ini_file(FICHIER_INI);
            if ($ini['id'] == '') {
                $ini['id'] = $id;
            } else {
                unset($ini['id']);
            }
            if ($ini['pseudo'] == '') {
                $ini['pseudo'] = $pseudo;
            } else {
                unset($ini['pseudo']);
            }
            if ($ini['option'] == '') {
                $ini['option'] = $option;
            } else {
                unset($ini['option']);
            }
            write_ini_file(FICHIER_INI, $ini);
        }
    }
    ?>
    Non testé.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    voici se que j'ai trouvé sur un autre forum :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <?php
    function write_ini_file($path, $assoc_array) {
     
     
        foreach ($assoc_array as $key => $item) {
            if (is_array($item)) {
                $content .= "\n[$key]\n";
                foreach ($item as $key2 => $item2) {
                    $content .= "$key2 = \"$item2\"\n";
                }       
            } else {
                $content .= "$key = \"$item\"\n";
            }
        }       
     
        if (!$handle = fopen($path, 'w')) {
            return false;
        }
     
        if (!fwrite($handle, $content)) {
            return false;
        }
     
        fclose($handle);
        return true;
    }
     
     
     
     
    /**
     * Configuration de d&eacute;part
     */
    $config = parse_ini_file('admin.ini');
     
     
    if (!empty($_POST['Text3'])) {
         $_CLEAN['Text3'] = stripslashes(nl2br(htmlentities($_POST['Text3'])));
         /**
         * Nouvelle configuration
         */
        $config['Pseudo'] = $_POST['Text3'];
     
     
        /**
         * Enregistrement de la configuration
         */
        write_ini_file('admin.ini', $config);
    }
     
     
    ?>
    qu'en pense tu???

  15. #15
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par FracMaster
    qu'en pense tu???
    ça me paraît bien par contre avez-vous besoin de la ligne suivante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_CLEAN['Text3'] = stripslashes(nl2br(htmlentities($_POST['Text3'])));
    Et pour éviter un warning dans la fonction write_ini_file sur la variable $content vous devriez l'initialiser avant le premier foreach en ajoutant tout simplement :

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    d'ailleur j'ai un petit probleme avec cette fonction
    quand dans mon .ini il y a un paramètre de se style :

    param = true
    param = false
    apres passage de la fonction pour modifier un autre parametre que ces deux dernier, le fichier a effacé tout les commentaire du fichier et remplacé les true par des "1" et des false par des ""

    comment garder ces commentaires et les réponses true/false ??

  17. #17
    Membre expérimenté

    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
    Par défaut
    Rien d'anormal :
    Citation Envoyé par http://fr.php.net/parse_ini_file
    Les valeurs null, no et false donnent "", yes et true donnent "1".
    En ce qui concerne les commentaires c'est là aussi normal puisque PHP ne les exploite pas lors de la lecture avec la fonction parse_ini_file (ils sont ignorés).

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    y a t il un moyen justement de garder les false/true et les commentaires???

    car dans le fichier .ini lors de l'execution du serveur il sont interpreté (pas les commentaire mais true/false)

  19. #19
    Membre expérimenté

    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
    Par défaut
    Citation Envoyé par FracMaster
    y a t il un moyen justement de garder les false/true
    En ajoutant des tests supplémentaires je présume :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (is_bool($item)) {
        $content .= $key . '= "' . ($item ? 'true' : 'false') . "\"\n";
    } else {
        $content .= "$key = \"$item\"\n";
    }
    C'est pas dit qu'il accepte mieux ces formes lors de la lecture : tout dépend des tests réalisés en interne par la fonction parse_ini_file.

    Citation Envoyé par FracMaster
    et les commentaires???
    Si on part du principe qu'ils peuvent être placés un peu n'importe où, c'est difficile de les gérer.

    Citation Envoyé par FracMaster
    car dans le fichier .ini lors de l'execution du serveur il sont interpreté (pas les commentaire mais true/false)
    C'est à dire ? Vous voulez dire que vous récupérez un booléen alors que vous auriez aimé avoir une chaîne ?

    Si vous disposez de PHP 5 (pour l'extension SimpleXML), un fichier XML sera peut être plus souple notamment dans le cas où un commentaire (le terme description serait plus juste ici) accompagne chaque paramètre.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 78
    Par défaut
    derniere petit chose :
    si dans mon fichier .INI il y a se genre de chose :

    type.prenom=clé

    le type est fixe , le prénom est une variable rentré par l'utilisateur
    et le but est de modifier juste la clé

    voici pour l'instant le 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
    $config = parse_ini_file('admin.ini');
    $prenom=$POST['prenom'];
     
    if (!empty($_POST['clé'])) {
         /**
         * Nouvelle configuration
         */
        $config['type.'.$prenom] = $_POST['clé'];
     
     
        /**
         * Enregistrement de la configuration
         */
        write_ini_file('admin.ini', $config);
    }
    cette méthode n'ecrit pas dans mon fichier et ne leve aucune erreur
    donc pouvez vous m'aider!

    merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ecrire le contenu d'une ArrayList dans un fichier texte
    Par the watcher dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 22/05/2011, 06h40
  2. Réponses: 1
    Dernier message: 22/09/2010, 23h25
  3. Ecrire le contenu d'un dico dans un fichier
    Par Jiyuu dans le forum Tkinter
    Réponses: 1
    Dernier message: 31/03/2008, 22h39
  4. [C#] ecrire le contenu d'une TextBox dans un fichier XML
    Par LaseLiep dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/09/2006, 12h51
  5. Ecrire le contenu d'une List dans un fichier
    Par sabure dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 11/05/2006, 16h33

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