[RESOLU] Enregistrer dans fichier txt

max1854
Invité n'ayant pas de compte PHPfrance

06 févr. 2012, 23:44

Bonjour

J'aimerais que lorsque mon formulaire est validé un fichier txt soit créé et que les infos soient enregistrées de cette façon :
nom ; prénom ; email ; téléphone

J'ai écrit une page php mais rien ne fonctionne
<?php
session_start();
?>

Code : Tout sélectionner

<html> <form Method="POST" Action="liste.txt" name='enregistrement' > </form> </html>
<?php

$fp = fopen("liste.txt","a+");

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
$tel = $_POST['tel'];

fwrite($fp,$nom);
fwrite($fp,$prenom);
fwrite($fp,$email);
fwrite($fp,$tel);

fclose($fp);

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 févr. 2012, 09:45

salut,

je pense que tu n'a pas compris le fonctionnement de php je te conseil de (re) lire http://www.phpdebutant.org/article118.php

ce que tu souhaite faire est simple
- un formulaire l'action est sur un fichier php ça ne sert à rien de mettre un fichier texte en action il ne fera rien !
- le traitement du formulaire est simple il s'agit de l'utilisation de la fonction file_put_contents avec le flag FILE_APPEND. la chaine à passer c'est une simple concaténation.

@+
Il en faut peu pour être heureux ......

max1854
Invité n'ayant pas de compte PHPfrance

07 févr. 2012, 12:42

Je sais que le ficher txt ne sert à rien mais dans l'énoncé de mon projet il m'est demandé de créer un formulaire complémentaire qui permet d’enregistrer sa liste dans un fichier.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 févr. 2012, 14:36

tu n'as pas bien lu mon message :)
ça ne sert à rien de mettre un fichier texte en action il ne fera rien !
te reste a tester la suite :)


@+
Il en faut peu pour être heureux ......

max1854
Invité n'ayant pas de compte PHPfrance

07 févr. 2012, 15:23

Ok je vois tu veux parler de cette ligne la :

<form Method="POST" Action="liste.txt" name='enregistrement' >

Que penses tu du reste du code php?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 févr. 2012, 16:57

<form Method="POST" Action="liste.txt" name='enregistrement' >

pour faire bien html c'est en minuscule et les valeurs d'attributs entourées de "

l'action doit être vers un fichier .php

ton code ne correspond pas à la mise en place d'un fichier CSV.
tu donne toi même la structure, il s'agit de la séparation des valeur par un point virgule (il faut donc penser à supprimer tout point virgule des champs à insérer dans le fichier sinon ça va être le brin rapidement :)

comme je te l'ai dit c'est réalisable en une seul ligne avec la concaténation et file_put_contents !

essai et revient avec si tu n'y arrive pas.

pour info il y a des exemples dans la doc php (de la fonction file_put_contents).

si tu comprend pas le csv => google :)

@+
Il en faut peu pour être heureux ......

max1854
Invité n'ayant pas de compte PHPfrance

07 févr. 2012, 18:08

Rien à faire, je n'y arrive pas...surtout pas en 1 ligne.

En tout cas merci à toi pour ta patience "moogli", je sais que ça ne doit pas être évident lorsque l'on tombe sur des personnes comme moi qui ont beaucoup du mal à comprendre les choses même "basiques".
Le problème est que je n'ai aucune base en php et que je me lance vraiment à l'aventure en faisant ce projet en grappillant des petits bouts à droite à gauche sans réellement comprendre ce que je fais... Mais bon le plus important pour moi est d'en finir au plus vite avec ce projet et de passer à autre chose!

Code : Tout sélectionner

<html> <form method="post" action="liste.php" name="enregistrement"> </form> </html>
<?php
		
$file = (($nom = $_POST['nom']) && ($prenom = $_POST['prénom']) && ($email = $_POST['email']) && ($tel = $_POST['tel']));
$file=("liste.txt");
$contact = file_get_contents($file);
$contact .= "$nom , $prenom, $email, $tel";
file_put_contents($file, $contact);

?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 févr. 2012, 23:04

<?php
if (!empty($_POST['nom']) && !empty($_POST['prenom']) &&  !empty($_POST['email']) && !empty($_POST['tel'])) {
    file_put_contents("liste.txt", $nom .';'. $prenom .';'. $email .';'. $tel ."\r\n" ,FILE_APPEND);
}
?>
Bon j'ai fait 3 lignes avec le test d'existence des info. ajoute un else pour faire bien :)

avec ça les infos du formulaire sur une ligne !


@+
Il en faut peu pour être heureux ......

max1854
Invité n'ayant pas de compte PHPfrance

08 févr. 2012, 14:01

Merci beaucoup moogli!! :wink:

Je peux te demander une dernière chose et après j'en aurai fini avec ce satané projet??

Je souhaiterais envoyer la liste de mon tableau par mail, en fait que la personne qui remplit le formulaire et donc le valide puisse envoyer la liste de contacts ajoutée dans le tableau par mail.
J'ai essayé avec la fonction "mailto"...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 févr. 2012, 14:27

mailto c'est pas une fonction php, la fonction c'est mail

mailto indique au navigateur de demander l'ouverture du client de messagerie.

Tu peux utiliser la classe phpmailer pour l'envoie de mail c'est pulutot bien foutu.

Après il te faut juste récupérer les champs de formulaire et et les arranger à ta sauce pour les envoyer.

regarde bien la doc de la fonction mail y a des exemples !

@+
Il en faut peu pour être heureux ......