IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problem sur les formulaires et mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut problem sur les formulaires et mysql
    bonjours a tous !!

    tout d'abord je suis débutant dans la gestion de base de donnée ...
    mon but est de faire un formulaire pour cree un compt dont les donné
    seront stocker dans une base mysql ...

    donc j'ai créé une page formulaire.php qui appel la page test1.php en validant ...

    la page test1 rentre les informations dans la table ...

    mes le probleme c'est qu'il y a pas d'erreur et que la base est vide ....
    je vois pas ou est le probleme .....?

    merci de m'aider

    formulaire.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <html>
    <head>
    </head>
    <body>
     
    <p>formulaire d'inscription</p>
     
    <form method="post" action="test1.php">
     
     
       <p><label>Votre nom</label> :<input type="text" name="nom" id="nom" maxlength="20" /></p>
     
       <p><label>Votre prenon</label> :<input type="text" name="prenom" id="prenon" maxlength="20" /></p>
     
       <p><label>Votre pseudo max 20 lettres</label> :<input type="text" name="pseudo" id="pseudo" maxlength="20" /></p>
     
       <p><label>Votre motde passe max 20 lettres</label> :<input type="password" name="passe" id="passe" maxlength="20" /></p>
     
       <p><label>confirmation du mot de passe</label> :<input type="password" name="passe" id="passe" maxlength="20" /></p>
     
       <p><label>Votre mail</label> :<input type="text" name="mail" id="mail"/></p>
     
       <p><label>Votre age</label> :<input type="text" name="age" id="age" maxlength="2" /></p>
     
          <label for="ameliorer">Comment pensez-vous que je pourrais améliorer mon site ?</label><br />
           <textarea name="ameliorer" id="ameliorer"></textarea><br />
     
           <label for="pays">Dans quel pays habitez-vous ?</label><br />
           <select name="pays" id="pays">
               <option value="france">France</option>
               <option value="espagne">Espagne</option>
               <option value="italie">Italie</option>
               <option value="royaume-uni">Royaume-Uni</option>
               <option value="canada">Canada</option>
               <option value="etats-unis">Etats-Unis</option>
               <option value="japon">Japon</option>
    	   <option value="autre">autre</option>
           </select>
     
    <br /><br /><input type="submit" value="validez"/> <input type="reset" value="reset"/>
     
    </form>
     
    <p>une fois le formulaire remplis validez</p>
     
    </body>
    </html>
    test1.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <html>
    <head>
    </head>
    <body>
     
    <?php
     
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("74minutes");
     
     
    ?>
     
    <?php
     
    	mysql_query("INSERT INTO compte VALUES('', '$_post[nom]',)");
     
     	$reponse = mysql_query("SELECT * FROM compte") or die(mysql_error());
     
    while ($donnees = mysql_fetch_array($reponse) )
     
    	{
    	?>
        	<p>
     
        	<strong>id</strong> : <?php echo $donnees['id']; ?><br />
        	<strong>nom</strong> : <?php echo $donnees['nom']; ?><br />
        	<strong>prenom</strong> : <?php echo $donnees['prenon']; ?><br />
        	<strong>pseudo</strong> : <?php echo $donnees['pseudo']; ?><br />
        	<strong>mail</strong> : <?php echo $donnees['mail']; ?><br />
        	<strong>age</strong> : <?php echo $donnees['age']; ?>
     
       	</p>
    	<?php
    	}
     
    	mysql_close();
     
    ?>
     
    </body>
    </html>
    j'utilise car il y a une erreur avec

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour le probleme d'index du tableau, il faut simplement sortir la variable de l chaine.
    Pour le problème de la requete, tu as une virgule qui se ballade a la fin.
    De manière globale, il vaut mieux specifier les champs dans l'INSERT.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO compte (champ_id, champ_nom) VALUES('" . $_POST['nom']. "')");

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    sa me met :

    Notice: Undefined variable: _post in C:\wamp\www\test1.php on line 32

    on dirait qu'il y a rien dans la variable ! la methode post ne doit pas fonctionner je pense !!!

    tu veux dire quoi par sortir la variable de la chaine ?

    merci de ton aide ....pour un saboteur...!!!

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ouille les réponses de nuit
    C'est $_POST en majuscules.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    Exactement.
    Et sortir la variable de la chaîne, ça veut bien dire ce que ça veut dire remplacer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO compte VALUES('', '$_POST[nom]',)"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO compte VALUES('', '" . $_POST[nom] . "',)"
    parce que c'est la contenu de ta variable que tu essaye de mettre en base et non pas le String '$_POST[nom]'.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    pour la méthode de sabotage ...il y a pas d'erreur mais ma base reste vide...

    pour la tiens ca ma mets

    Parse error: parse error in C:\wamp\www\test1.php on line 36


    vous vous feriez comment ...? c'est la bonne méthode comme je fais ?

    car il y a la méthode avec l'adresse url pour transmettre des données d'une page a une autre !!!!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    oups
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO compte (champ_id, champ_nom) VALUES('" . $_POST['nom']. "')"
    C'est bien la méthode de sabotage qui est la bonne.

    Si ta base reste vide, c'est peut-être que ta variable est vide. Tu as vérifié ce que retourne $_POST['nom'] ?

  8. #8
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    a me met sa encore

    Parse error: parse error in C:\wamp\www\test1.php on line 36

    a la fin de la page test1 je fais un echo pour voir se que me retourne la base de donnée ...mais rien il y a l'erreur ligne 36 avant le echo


    voici la ligne 36

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = mysql_query("SELECT * FROM compte") or die(mysql_error());
    ma base reste vide....je vais essayer en mettant un echo avant l'apel de ma boucle

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    Je ne vois rien de faux dans ta ligne 36 (à condition que ta table compte existe bien).
    Et si tu essaye d'afficher ta variable $_POST["nom"] avant cette ligne ?
    Et je croyais qu'il n'y avait plus de message d'erreur suite à la réponse de sabotage, comment est-il réapparu ?

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <html>
    <head>
    </head>
    <body>
    <?php
     
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("74minutes");
    	$pseudo = "ak47" ;
     
    	mysql_query("INSERT INTO compte (champ_id, champ_nom) VALUES('" . $_POST['nom']. "')");
     
    ?>
     
    <strong>nom</strong> : <?php echo $_POST['nom']; ?>
     
    </body>
    </html>
    tu avais raison il y avait une erreur !!!

    j'ai modifier le code et la variable $_POST s'affiche sans erreur mais ma base reste vide
    Images attachées Images attachées  

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Points : 51
    Points
    51
    Par défaut
    Ah mais tu es en train d'essayer de mettre ta $_POST['nom'] dans ton champ_id. Si ce champ est en auto-increment, tu n'as pas besoin de le spécifier dans ta requête.
    Sinon, pour tester plus facilement tes requêtes, essaye de les afficher et de les executer directement à la main dans ta console d'admin mysql.

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu dis que la base reste vide, tu veux dire qu'il n'y a pas de lignes ou que les lignes n'ont pas de données ?

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    il y a pas de ligne la table reste comme quand on viens de la créé ...

    mais avec la varible $pseudo j'ai fais des essai et sa marche mais pas avec une $_post alors qu'elle est bien transmis car il s'affiche avec un echo...

    je galère ....c'est pas évident...il l'avait dit dans le tuto ....

    peut on depuis la page du formulaire rentrer les valeurs des $_post dans la base sans passer par une autre page ???? dpuis la balise form !!!!????

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si la base reste vide, ce n'est pas un problème de passage de variable : c'est que la requete ne s'execute pas.

    Quand j'ecrivais champ_nom il fallait evidemment mettre le vrai nom de ta colonne a la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("INSERT INTO compte (nom) VALUES('" . mysql_real_escape_string($_POST['nom']). "')");

  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    yyeeeeeeeeeeeeeeesssssssssssssssssssssssssss !!!!

    pour un saboteur ....tu ma bien aidée...!!

    tu avais raison ...une erreur de syntax !!!

    !

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Points : 18
    Points
    18
    Par défaut
    j'ai encore une petit probleme

    la variable $_poste['passe'] n'apparais pas ni dans la base de données ni dans le echo plus bas ...je pense parce que il y a type="password"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><label>Votre motde passe max 20 lettres</label> :<input type="password" name="passe" id="passe" maxlength="20" /></p>
    pareil pour les commentaire ...il me met une erreur :

    Undefined index: commentaire in C:\wamp\www\test1.php on line 22

    voici ma partie du formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <label for="commentaire">Comment pensez-vous que je pourrais améliorer mon site ?</label><br />
           <textarea name="commentaire" id="commentaire"></textarea><br />
    la ligne 22 est la derniere ...celle avec le commentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mysql_query("INSERT INTO compte (nom, prenom, pseudo, mail, age, pays, commentaire) VALUES(
    		    '" . $_POST['nom']. "',
    	       	    '" . $_POST['prenom']. "', 
    	            '" . $_POST['pseudo']. "',
    	            '" . $_POST['mail']. "',
    	            '" . $_POST['age']. "',
    		    '" . $_POST['pays']. "',
    		    '" . $_POST['commentaire']. "')");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question toute bête sur les formulaires
    Par pekka77 dans le forum Langage
    Réponses: 5
    Dernier message: 01/12/2005, 23h45
  2. Comment faire un tail -f sur les logs binaires mysql-bin ?
    Par mediaforest dans le forum Requêtes
    Réponses: 8
    Dernier message: 24/09/2005, 12h34
  3. [C#] Probleme sur les clés primaires composites
    Par stardeus dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/02/2005, 23h28
  4. MS Access et TQuery (probleme sur les dates)
    Par Djob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 14h57
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo