Pb PHP $_POST[]
emmaus
-
gryzzly Messages postés 5220 Date d'inscription Statut Contributeur Dernière intervention -
gryzzly Messages postés 5220 Date d'inscription Statut Contributeur Dernière intervention -
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...
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...
Configuration: Windows XP Internet Explorer 7.0
14 réponses
-
-
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> -
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); ?> -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.
-
-
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> -
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 -
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 faisinput type="text" name="nom"
Je dois pas faire un output par exemple dans register.php ou un truc du genre?? -
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' -
-
essaie d'enlever "enctype="text/plain" dans le <form>.
et si ça marche tu pourras dire merci à Gryzzly !
-;o)
-
MERCI A GRYZZLY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Merci beaucoup ca marche, t'es énorme! -
pas de quoi.