Pb PHP $_POST[]

Fermé
emmaus - 22 avril 2008 à 11:18
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 - 22 avril 2008 à 16:45
Bonjour,

j'ai un petit problème de variable en php, et comme je suis débutant cela n'arrange rien...
En fait je crée un formulaire pour qu'un utilisateur X s'enregistre. Pour cela il remplit les case "prénom", "nom", "numéro".

Jusque la tout fonctionne mais le but est de sauvegarder dans un fichier txt, ce que l'utilisateur vient de remplir, grâce à un fichier .php.

J'écris donc :

<?php
$newline="\r\n";
$file=fopen("register.txt","a");
$data=$_POST['nom'] . ";" . $_POST['prenom'] . ";" . $_POST['email'] . ";" . $_POST['mobile'] . $newline;
fwrite($file,$data);
fclose($file);
?>


mais le fichier txt m'affiche seulement ";;;", ce qui signifie que les variables doivent se perdre en cours de route...
Donc voila, si quelqu'un pouvait m'aider à sortir de cette panade ce serait vraiment simpa...
A voir également:

14 réponses

Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 12:36
salut,

quel est le code de ton formulaire ?

pense à utiliser le bouton !
-;o)
0
comment ca le "code de mon formulaire", c'est ca ?

  
<FORM name="formulaire" method="POST" action="register.php" enctype="text/plain" onSubmit="return testTotal(document.formulaire)">

<table>
   <tr> 
        <td>Nom</td>
        <td><input type="text" name="nom" /></td>
   </tr>
   
   <tr>
        <td>Prénom </td>
        <td><input type="text" name="prenom" /></td>
  </tr>    
  
  <tr>
        <td>email</td>
        <td><input type="text" name="email" /></td>
  </tr>  
  
  <tr>
        <td>Mobile</td>
        <td><input type="text" name="mobile" /></td>
  </tr>   
  
  <tr>
        <td><INPUT type="submit" name="buttontest" value="Envoyer"></td>
  </tr>
     
</table>
<br>


</form>
 
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 14:34
oui, mais tout semble en ordre !…

essaie d'afficher ce que contient '$_POST' :
<?php
print_r( $_POST );
$newline="\r\n";
$file=fopen("register.txt","a");
$data=$_POST['nom'] . ";" . $_POST['prenom'] . ";" . $_POST['email'] . ";" . $_POST['mobile'] . $newline;
fwrite($file,$data);
fclose($file);
?> 
0
j'ai essayé mais rien ne se passe...
cela me renvoie sur une page blanche, et dans mon .txt, toujours pareil, ";;;"
Merci de ta dispo en tt cas c'est simpa
0

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

Posez votre question
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 15:30
ton script PHP est bien nommé 'register.php' ?

et tes variables ne seraient pas effecer par ta vérification en JS par hasard ?
essaie sans la fonction JS.
0
mon script se nomme bien register.php, mais qu'est-ce que ma fonction JS??
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 15:40
ah oui pardon, JS pour Javascript.

un bout de code appelé par 'onSubmit="return testTotal(document.formulaire)"'.
il faut l'enlever et tester pour savoir si ça vient de là.
<FORM name="formulaire" method="POST" action="register.php" enctype="text/plain" onSubmit="return testTotal(document.formulaire)">
<table>
   <tr> 
        <td>Nom</td>
        <td><input type="text" name="nom" /></td>
   </tr>
   
   <tr>
        <td>Prénom </td>
        <td><input type="text" name="prenom" /></td>
  </tr>    
  
  <tr>
        <td>email</td>
        <td><input type="text" name="email" /></td>
  </tr>  
  
  <tr>
        <td>Mobile</td>
        <td><input type="text" name="mobile" /></td>
  </tr>   
  
  <tr>
        <td><INPUT type="submit" name="buttontest" value="Envoyer"></td>
  </tr>
     
</table>
<br>
</form>
0
dans mon JV ;-), j'ai ces fonctions :

unction testTotal(form) { // teste tous les envois
var OK = true;
if(testEmail(form)==false) {
	 OK = false; }
if(testNomPrenom(form)==false) {
	OK = false; }
if(testPhone(form) == false) {
	OK = false; }
if (OK == true) {
	alert("Tous les champs ont été correctement remplis"); 
  }

}

function testNomPrenom(form) { // teste si le nom et prenom sont valides
var OK = true;
	if (form.nom.value == "") {
		alert("Le nom saisi n'est pas valide");
		OK = false; }
	if (form.prenom.value == "") {
		alert("Le prenom saisi n'est pas valide");
		OK = true; }
		
	
	return OK ;
}
	


function testEmail(form) {// teste si l'email est valide
var OK = true;
  if ((form.email.value == "") || (form.email.value.indexOf('@') == -1))
    {
        alert("L'email saisi n'est pas valide");
        OK = false;
    }
  return OK;
}




function check(input, check) {
	var OK = true;
	for (var i=0;i<input.length;i++) {
		var chr = input.charAt(i);
		var found = false;
			for (var j=0;j<check.length;j++) {
				if (chr==check[j]) found = true;
			}
		if (!found) OK = false;
	}
	return OK;
}


function testPhone(form) { 
	var OK = true;
				if (!check(form.mobile.value,["1","2","3","4","5","6","7","8","9","0","/","+","-"]) || (form.mobile.value == "")) {
			alert ("Le numero de telephone n'est pas valide"); 
			OK = false;	}
	return OK;
}




En tout cas, c'est simpa de m'aider
0
même en mettant en commentaire toute la fonction TestTotal, ca ne marche pas. Je repete bien que j'ai le traitement dans un fichier lettre.php et à côté j'ai mon register.php.
Comment register.php sait que la variable "nom" existe??

En plus je la déclare même pas, sauf quand je fais
input type="text" name="nom"


Je dois pas faire un output par exemple dans register.php ou un truc du genre??
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 16:11
ton formulaire envoie les données par 'POST'.

donc chaque variable se retrouve dans le tableau '$_POST' à l'index 'name', le même que tu as précisé avec l'attribut 'name' de la balise '<input />'.

donc pour :
<form method="post" action="script.php">
       <input name="nom" />
</form>

tu devrais retrouver la valeur dans le fichier 'script.php' avec '$_POST['nom'].

donc pour toi :
<?php
$newline="\r\n";
$file=fopen("register.txt","a");
$data=$_POST['nom'] . ";" . $_POST['prenom'] . ";" . $_POST['email'] . ";" . $_POST['mobile'] . $newline;
fwrite($file,$data);
fclose($file);
?> 

doit se trouver dans 'register.php'
0
ah ok bon ben alors je vais essayer de me débrouiller, merci pour ton aide en tout cas
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
22 avril 2008 à 16:28
essaie d'enlever "enctype="text/plain" dans le <form>.

et si ça marche tu pourras dire merci à Gryzzly !
-;o)
0
MERCI A GRYZZLY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Merci beaucoup ca marche, t'es énorme!
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 335
22 avril 2008 à 16:45
pas de quoi.
0