Pb PHP $_POST[]

emmaus -  
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...
Configuration: Windows XP
Internet Explorer 7.0

14 réponses

  1. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    salut,

    quel est le code de ton formulaire ?

    pense à utiliser le bouton !
    -;o)
    0
  2. emmaus
     
    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
  3. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    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
  4. emmaus
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    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
  7. emmaus
     
    mon script se nomme bien register.php, mais qu'est-ce que ma fonction JS??
    0
  8. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    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
  9. emmaus
     
    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
  10. emmaus
     
    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
  11. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    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
  12. emmaus
     
    ah ok bon ben alors je vais essayer de me débrouiller, merci pour ton aide en tout cas
    0
  13. Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
     
    essaie d'enlever "enctype="text/plain" dans le <form>.

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

    Merci beaucoup ca marche, t'es énorme!
    0
  15. gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 340
     
    pas de quoi.
    0