Précédent   Forum des professionnels en informatique > PHP > Outils
Outils Forum d'entraide sur les outils pour développeurs PHP : EDI, installation, administration... Avant de poster : FAQ outils, toutes les FAQ PHP et les comparatifs
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/04/2007, 02h47   #1
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 1
Points : 1
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 :
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
omeada est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 03h29   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ben tu peux tout simplement récupérer le contenu de ton formulaire puis créer ton fichier de cette manière :

Code :
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
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2007, 04h48   #3
Invité de passage
 
Inscription : février 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 3
Points : 1
Points : 1
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 :
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 :
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 :
1
2
3
4
 
<?php
include ("updatetxt/inclure.txt");
?>
et voila la base pour un petit site dynamique.
Merci encore
Omeada
omeada est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 11h53   #4
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 14h17   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 15h44   #6
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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 ??
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2007, 16h10   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il vous suffit de le lire et dans le cas d'un fichier ini, la fonction parse_ini_file devrait vous convenir.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 09h19   #8
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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?
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h14   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h46   #10
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h02   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h13   #12
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h20   #13
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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é.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 14h44   #14
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
voici se que j'ai trouvé sur un autre forum :

Code :
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???
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 15h29   #15
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par FracMaster
qu'en pense tu???
ça me paraît bien par contre avez-vous besoin de la ligne suivante ?
Code :
$_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 :
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h33   #16
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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 ??
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h48   #17
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h50   #18
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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)
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 17h20   #19
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2007, 15h23   #20
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 78
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 78
Points : 27
Points : 27
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 :
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
FracMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h38.


 
 
 
 
Partenaires

Hébergement Web