Récupérer données formu dans un fichier texte

Lola -  
 amandine -
Bonjour,
depuis un moment je cherche une réponse à mon problème sur les forums, mais je ne trouve rien, j'espère que vous pourrez m'aider.
Je suis débutante en php et je voudrais récupérer les données d'un formulaire et les transmette dans un fichier texte.
J'ai créer un mini site qui vend des fruits et légumes (simulation pour mes cours) et je le client doit remplir un formulaire pour commander les produits et s'identifier.
Il faudrait donc créer un fichier texte pour les produits et un autre pour les renseignement sur les clients.
Voici mon formulaire pour les renseignements client:
<form method="post" name="formulaire" ACTION="que_faut_il_mettre??" >

	<fieldset><legend><b><h4>Vos détails personnels</h4></b></legend>
<table>
	<tr>
		<td>Civilité : </td>
		<td><input type="radio" name="civilité" value="Mr">Mr 
			<input type="radio" name="civilité" value="Mme"> Mme
			<input type="radio" name="civilité" value="Mlle"> Mlle</td>
	</tr>
	<tr>
		<td>Nom :</td>
		<td><input type="text" size="40" maxlength="40" name="nom" ></td>
	</tr>
	<tr>
		<td>Prénom :</td>
		<td><input type="text" size="40" maxlength="40" name="prenom"></td>
	</tr>
	<tr>
		<td>Courriel :</td>
		<td><input type="text" size="40" maxlength="40"  name="mail" OnBlur="validite('formulaire','mail','EMAIL',0,50);"></td>
	</tr>
</table>
<div align="left"><h5>Votre adresse email doit être valide, elle est indispensable pour valider votre commande.</h5></div>
	</fieldset>
	<fieldset><legend><b><h4>Votre adresse</h4></b></legend>
<table>
	<tr>
		<td>Adresse complète :</td>
		<td><textarea name="adresse" ROWS="5" COLS="35"></textarea></td>
	</tr>
	<tr>
		<td>Téléphone :</td>
		<td><input type="text" size="40" maxlength="40"  name="telephone" OnBlur="validite('formulaire','telephone','N',10,10);"></td>
	</tr>
</table>
<div align="left"><h5>10 chiffres sans espaces. Nous pouvons vous contacter en cas de problèmes lors de la préparation de votre commande</h5></div>
	</fieldset>
	<fieldset><legend><b><h4>Information de livraison</h4></b></legend>
<table>
	<tr>
		<td><INPUT type="radio" NAME="lieu" VALUE="domicile">Domicile</td>
	</tr>
	<tr>
		<td><INPUT type="radio" NAME="lieu" VALUE="autreadresse">Autre adresse</td>
		<td>Précisez : <TEXTAREA value="adresse2" name="lieu" ROWS="5" COLS="35"></TEXTAREA></td>
	</tr>
</table>
	</fieldset>
	<fieldset><legend><b><h4>Information de paiement</h4></b></legend>
<table>
	<tr>
		<td>Méthode de paiement</td>
	</tr>
	<tr>
		<td><INPUT type="radio" NAME="paiement" VALUE="chèque">Chèque à l'ordre : fruits et légumes</td>
	</tr>
	<tr>
		<td><INPUT type="radio" NAME="paiement" VALUE="carte">Carte bancaire</td>
	</tr>
</table>
	</fieldset>
	<fieldset><legend><b><h4>Validation</h4></b></legend>
<table>
	<tr>
		<td><input type="submit" value="Valider" OnClick="check_vide();"></td>
		<td><input type="reset" value="Annuler"></td>
	</tr>
</table>
</fieldset>
<div align="left"><h4>ATTENTION : Tous les champs du formulaire doivent être <b>impérativement</b> remplis.</h4></div>
</form>

et voici le formulaire pour les produits :
<form method="post" name="formulaire" action="formulaire.html">
<table>
	<tr>
		<td><img src="image/ananas.jpg"></td>
		<td width="50" align="center"><INPUT type="checkbox" NAME="fruitexotique" VALUE="ananas2"></td>
		<td>Ananas<br>Quantité : 2 <br>Origine : Cayenne</td>
		<td>Prix : 5.00€</td>
	</tr>
	<tr>
		<td><img src="image/jaque.jpg"></td>
		<td align="center"><INPUT type="checkbox" NAME="fruitexotique" VALUE="jaque"></td>
		<td>Jaque décortiqué<br>Poids : 350g <br>Origine : Antille</td>
		<td>Prix : 5.25€</td>
	</tr>
	<tr>
		<td><img src="image/abricot.jpg"></td>
		<td align="center"><INPUT type="checkbox" NAME="fruitexotique" VALUE="abricot"></td>
		<td>Abricot des Antilles<br>Poids : 500g<br>Origine : Antilles</td>
		<td>Prix : 4€</td>
	</tr>
	<tr>
		<td><img src="image/papaye.jpg"></td>
		<td align="center"><INPUT type="checkbox" NAME="fruitexotique" VALUE="papaye"></td>
		<td>Papaye<br>Poids : 500g <br>Origine : Antilles</td>
		<td>Prix : 3.20€</td>
	</tr>
	<tr>
		<td><img src="image/noixdecoco.jpg"></td>
		<td align="center"><INPUT type="checkbox" NAME="fruitexotique" VALUE="noixdecoco"></td>
		<td>Noix de coco<br>Quantité : 2<br> Origine : Malaisie</td>
		<td>Prix : 4.50€</td>
	</tr>
	<tr>
		<td colspan="2" align="center"><input type="submit" value="Envoyer"></td>
		<td colspan="2" align="center"><input type="reset" value="Annuler"></td>
	</tr>
</table>
<form>

Merci d'avance
A voir également:

16 réponses

Torkass Messages postés 189 Statut Membre 95
 
Avant de regarder ton code, je me permet de te poser une petite question ^^ :
As-tu déjà essayé d'utiliser la base de données ? (Parce que c'est préférable pour ce genre d'informations.)
C'est plus simple à gérer et plus sécurisé pour un site commercial : Disons que tout stocker sur des fichiers, si quelqu'un trouve l'adresse du fichirer d'un membre/client, c'est foutu pour lui.
0
Lola
 
C'est pour mes cours et l'exercice est de ne pas utiliser de base de données.
Puis le site ne sera pas héberger donc il n'y aura pas de problème de sécurité.
0
Torkass Messages postés 189 Statut Membre 95
 
OK ! ^^

Alors attends, j'ai fait un truc similaire pour enregistrer les logs sur mon site :

$inF = fopen($_SERVER['DOCUMENT_ROOT']."/Clients.txt", "a"); // ouvre le fichier Clients.txt pour y inscrire les infos
fputs($inF, "*****");
fclose($inF);
remplace les ***** par les infos que tu veux enregistrer, ça peut être du texte, avec tes variables de type $_POST[''] etc... tu peux aussi faire comme ça :

<table>
include 'infos_clients.php';
</table>
dans le fichier infos_clients.php, tu auras par exemple ça :
<?
$inF = fopen($_SERVER['DOCUMENT_ROOT']."/Clients.txt", "a"); // ouvre le fichier Clients.txt pour y inscrire les infos

fputs($inF, "<tr>
<td>$variable1</td>
<td>$variable1</td>
<td>$variable1</td>
</tr>");

fclose($inF);
?>
Voilà.
Les données des clients seront ajoutées à la ligne du dessous, à chaque fois.

Est-ce que ça t'aide ? :)
0
lola
 
Merci de m'aider mais je suis vraiment débutante en php donc j'ai pas tout bien compris.
Je préfère la première méthode car elle correspond plus à mon exercice.
J'ai créé clients.php :
<?
$nom=$_POST['nom'];
$inF = fopen($_SERVER['DOCUMENT_ROOT'].'/clients.txt', 'a'); // ouvre le fichier clients.txt pour y inscrire les infos
fputs($inF, $nom);
fclose($inF);
?>

Dans mon formulaire j'ai mi :
<form method="post" name="formulaire" ACTION="clients.php" >

Puis j'ai créé clients.txt vide.
Est ce que c'est bien ça qu'il fallait faire ??
A la soumission de mon formulaire la page clients.php s'ouvre blanche et quand j'ouvre le fichier clients.txt rien n'est écrit à l'intérieur.
Qu'est ce que je dois changer ?
Encore merci pour ton aide.
0
lola
 
En fait peu importe la méthode du moment que j'arrive à récupérer les informations.
Expliquer moi celle qui est la plus simple....
Merci
0
Torkass
 
clients.txt se trouve-t-il à la racine du site ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lola
 
Oui j'ai enregistré clients.txt dans le même dossier que le site.
Ne faut il rien changer dans le script ??
0
Torkass Messages postés 189 Statut Membre 95
 
essaye avec
$inF = fopen('clients.txt', 'a'); // ouvre le fichier clients.txt pour y inscrire les infos
0
lola
 
Merci ça marche...
Par contre j'ai 2 formulaires à la suite, j'en ai un premier pour valider les articles puis quand on le valide on va sur la page formulaire.html qui permet de donner les informations de l'utilisateur. (je n'ai pas trouver d'autre moyen que ça !!)
Dois je fonctionner de la même manière pour récupérer les données ??
Par contre la méthode est
method="get" 
car ça me met une erreur lorsque je met
method="post"
.
Ensuite encore une autre petite question :
Peut on associer les 2 fichiers texte( un pour les clients, l'autre pour les articles) afin d'en créer un autre qui associerait le client à ses articles ??
Merci
0
lola
 
Quand je disais ça y est,ça marche j'avais essayé juste pour récupérer une donnée, mais la j'essaye d'en récupérer plusieurs et ça ne marche pas :
que dois je mettre entre mes différentes variables ??(surement pas une virgule comme j'ai mi !!)
fputs($inF, $civilite, $nom);
0
Torkass Messages postés 189 Statut Membre 95
 
c'est normal, il faut une seule virgule, tu mets tout après la virgule en php avec des guillemets pour le texte etc... :)
0
lola
 
ah oui c'est vrai...
j'ai tout mi à la suite mais ça me met une erreur. Parse error: parse error in c:\users\hp\documents\projet\clients.php on line 12
fputs($inF, $civilite $nom);
0
Torkass Messages postés 189 Statut Membre 95
 
et ça ?
fputs($inF, "$civilite $nom");
0
lola
 
Merci cela marche...
et si je veux qu'à chaque validation du formulaire les données s'écrivent sur une nouvelle ligne, que dois je ajouter ??
j'ai essayé avec <br> et \n mais ça ne marche pas tout s'affichent à la suite donc c'est difficile de différencier chaque client.
0
Torkass Messages postés 189 Statut Membre 95
 
oui j'y pensais, c'est pour ça que j'ai proposé une table :
tu crés une page clients.php, puis tu y écris
<html>
<? echo "<table>";
include 'clients.txt';
echo "</table>";
?></html>

et pour enregistrer les infos de clients t'as juste à ajouter que ça s'enregistre entre les tr et td :
fputs($inF, "<tr><td>$civilite $nom</td></tr>");
Tu pourras tout lire sur clients.php ! :)

(essaye quand même avec le <br /> et de lire avec un fichier php, ça peut être suffisant)
0
lola
 
bon b tu vas voir que je suis pas très douée...
Dans clients.php :
<?
$civilite=$_POST['civilité'];
$nom=$_POST['nom'];
$inF = fopen('clients.txt', 'a'); // ouvre le fichier clients.txt pour y inscrire les infos
fputs($inF, "<tr><td>$civilite $nom</td></tr>");

echo "<table>";
include 'clients.txt';
echo "</table>";

fclose($inF);
?>

Est ce que c'est ça ou il faut écrite des trucs autre part??
Et ensuite pour voir les infos dans le tableau, faut bien ouvrir le fichier clients.php ???
Là ça me mets des erreurs donc je suppose que ce n'est pas bon...
Je suis un peu perdu là !!
Merci encore :) :) :)
0
lola
 
En fait je viens de me rendre compte que c'est pas du tout ça qu'il fallait faire ...
Mais quoi ??? LOL je suis vraiment pas douée !!!
0
Torkass Messages postés 189 Statut Membre 95
 
dans clients.php
<?
$civilite=$_POST['civilité'];
$nom=$_POST['nom'];
$inF = fopen('clients.txt', 'a'); // ouvre le fichier clients.txt pour y inscrire les infos
fputs($inF, "<tr><td>$civilite $nom</td></tr>");
fclose($inF);
?>
dans un autre qui te sert à consulter les données enregistrées (par exemple look.php) :
<?
echo "<table>";
include 'clients.txt';
echo "</table>";
?>
:)
0
lola
 
Merci, en plus je venais juste d'y penser.
Est ce que tu as une idée pour mon autre problème posé avant...
J'ai 2 formulaires, 2 fichiers texte... et comment récupérer les données de mon premier formulaire avec get ????
:)
0
Torkass Messages postés 189 Statut Membre 95
 
avec get il faut que les infos soient présentes dans l'adresse. C'est à dire que pour récupérer $_GET['nom'] il faut que le nom soit spécifié dans l'url comme ça par exemple :
http://www.domaine.com/page.php?civilite=Mme&nom=Parmentier&prenom=Elsa

$_GET['civilite'] = Mme
$_GET['nom'] = Parmentier
$_GET['prenom'] = Elsa

la méthode get n'est pas géniale pour conserver les accents et faut changer le action=..., mais bon, je connais mal cette méthode donc et je pourrais pas trop t'aider pour ça...

Je te conseille plutôt dans le second formulaire de récupérer les valeurs du premier dans des
<input type="hidden" value="$_POST['civilite']" name="civilite">
comme ça tout reste contenu dans le premier et à la validation du second formulaire les données des deux sont envoyée, tu peux donc enregistrer ce que tu veux dans un seul fichier txt.

c'est quoi le message d'erreur qu'il t'affiche quand tu mets post ?
0
lola
 
Le message d'erreur est :
The requested method POST is not allowed for the URL /Conception Internet/Projet2/formulaire.html.

Dans l'adresse j'ai bien
http://127.0.0.1/... à la validation de mon premier formulaire.

Et j'ai essayé avec le champ caché :
<input type="hidden" value="$_POST['fruitbio']" name="fruitbio">
et
<input type="hidden" value="$_get['fruitbio']" name="fruitbio">

mais il ne récupère aucune valeur.
et dans clients.php j'ai rajouté :
$fruitbio = $_POST['fruitbio'];

Autrement tu n'a pas une autre idée que de mettre 2 formulaires à la suite.
Dans tout les site de vente il y a un panier mais je ne sais pas le faire... Peut être qu'il y a une méthode plus simple....
Merci
0
Torkass Messages postés 189 Statut Membre 95
 
Les autres sites de vente en ligne fonctionnent avec une base de données, car, comme je te l'ai dit, enregistrer les informations des clients dans un fichier, surtout un fichier unique, est très dangereux pour eux.
0
amandine
 
ok ok j'ai trouvé une autre façon...
Merci beaucoup de m'avoir aider...
:) :) :) :)
0