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 :

Problème enregistrement formulaire


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut Problème enregistrement formulaire
    Bonjour,

    Je cherche à enregistrer un compte utilisateur. Seulement il ne me l'enregistre pas.
    J'ai beau chercher dans la requête sql mais je ne trouve pas l'erreur.
    Peut être que vous la verrez, du moins j'espère et vous remercie d'avance.

    voilà mon formulaire
    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
    48
     
                <form id="reg"  action="form_action.php" method="post">
                    <fieldset>
                        <legend>Formulaire d'inscription</legend>
                        <p><?php include "show_message.php";?></p>
                        <table align="center" border="0">
     
                            <th>Civilité</th>
                            <tr>
                                <td>Nom <span>*</span></td>
                                <td><input type="text" name="NomUser" maxlength="100" /></td>
                            </tr>
                            <tr>
                                <td>Prénom <span>*</span> :</td>
                                <td><input type="text" name="PrenomUser" maxlength="100" /></td>
                            </tr>
                            <tr>
                                <td>Adresse <span>*</span> :</td>
                                <td><input type="text" name="AdresseUser" maxlength="100" /></td>
                            </tr>
                            <tr>
                                <td>Code Postale <span>*</span> :</td>
                                <td><input type="text" name="CPUser" maxlength="250" /></td>
                            </tr>
                            <tr>
                                <td>Ville <span>*</span> :</td>
                                <td><input type="text" name="villeUser" maxlength="5" /></td>
                            </tr>
                            <th>Administration</th>
                            <tr>
                                <td>login <span>*</span> :</td>
                                <td><input type="text" name="loginUser" maxlength="250" /></td>
                            </tr>
                            <tr>
                                <td>Mot de Passe : <span>*</span> :</td>
                                <td><input type="password" name="mdpUser" /></td>
                            </tr>
                            <tr>
                                <td>Adresse Email <span>*</span> :</td>
                                <td><input type="text" name="emailUser" /></td>
                            </tr>
                            <tr>
                                <td><input type="hidden" name="action" value="reguser"/></td>
                                <td><input type="submit"  value="Envoyer" /></td>
                            </tr>
                        </table>
                    </fieldset>
                </form>
    j'inclut à chaque fois le fichier : config.inc.php avec les éléments de la base de données.
    ainsi que bao avec la fonction display msg ()

    Fichier form_action.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
     
    if (isset ($_GET['action']))
        $action=$_GET["action"];
    else
        $action=$_POST["action"];
        $db=new MyDBO(DBNAME,DBHOST,DBUSER,DBPASS);
     
        switch ($action)
    {
        case "reguser" : reguser($db);break;
        case "log-in" : makeLogin($db);break;
        case "disconnected": disconnected();break;
     
        default: redirect("index.php","Désolé un incident s'est produit");// si l'action envoyer ne correspond a rien de paramétré -> on redirige
    }
    function reguser($db)
    {
                $mdp=$_POST["mdpUser"];
                $encode_mdp=md5($mdp);
                $sql="INSERT INTO comptes_utilisateurs (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription )
                    VALUES ('','".$_POST['NomUser']."','".$_POST['PrenomUser']."','".$_POST['AdresseUser']."','".$_POST['CPUser']."','".$_POST['VilleUser']."','".$_POST['loginUser']."','".$encode_mdp."','".$_POST['emailUser']."', now());";
                if (!$db->query($sql))
                    redirect("form.php","Désolé nous n'avons pas pu vous enregistrer<br /> ");
                else 
                    redirect("index.php", "Nous vous avons bien enregistrer");
    }

    Les tables de ma bases sont comme suit :



    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    un message d'erreur ? Lequel ?

    Euuuh, tu fait le traitement dans une fonction ??
    function reguser($db)
    Ca ne peut pas fonctionner... (en tout cas, pas comme ça)
    [edit] je n'avais pas vu le : case "reguser" : reguser($db);break;
    Dernière modification par Invité ; 01/05/2012 à 16h13.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    je n'ai pas vraiment de message d'erreur en particulier : ça me met le message d'erreur de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $sql="INSERT INTO comptes_utilisateurs (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription )
                    VALUES ('','".$_POST['NomUser']."','".$_POST['PrenomUser']."','".$_POST['AdresseUser']."','".$_POST['CPUser']."','".$_POST['VilleUser']."','".$_POST['loginUser']."','".$encode_mdp."','".$_POST['emailUser']."', now());";
                if (!$db->query($sql))
                    redirect("form.php","Désolé nous n'avons pas pu vous enregistrer<br /> ");<---- celle-ci
                else 
                    redirect("index.php", "Nous vous avons bien enregistrer");
    Le traitement dans la fonction marche en soit, je l'ai déjà tester.

  4. #4
    Invité
    Invité(e)
    Par défaut
    mets un echo $sql; dans la fonction. Ou un test/affichage d'erreur sur la requete.

    Cela dit, mettre des $_POST directement dans une requête... DANGER !

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    Alors j'ai le message d'erreur comme celui-ci :
    erreur -=74!s n*'>DJ\S.KETNCYT]bH 0@RIF5FV Y6DVJNB%WFJ3D\d|rTIRBO!AEE^
    ) mon avis c sur l'encodage md5
    j'ai changer d'aprés tes conseils :
    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
    function reguser($db)
    {
                $login=$_POST['loginUser'];
                $nom=$_POST['NomUser'];
                $prenom=$_POST['PrenomUser'];
                $adresse=$_POST['AdresseUser'];
                $cp=$_POST['CPUser'];
                $ville=$_POST['VilleUser'];
                $mail=$_POST['emailUser'];
                $mdp=$_POST["mdpUser"];
                $encode_mdp=md5($mdp);
                $sql="INSERT INTO comptes_utilisateurs (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription )
                    VALUES ('','"^$nom."','".$prenom."','".$adresse."','".$cp."','".$ville."','".$login."','".$encode_mdp."','".$email."', now());";
                if (!$db->query($sql))
                    redirect("form.php","Désolé nous n'avons pas pu vous enregistrer<br /> erreur ".$sql);
                else 
                    redirect("index.php", "Nous vous avons bien enregistrer");
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    1/ bizarre l'affichage de l'erreur !

    2/ Euh... non. Moi, je parlais de PROTECTION contre les injections SQL.

    3/ Et tu as une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     VALUES ('','"^$nom."','".$prenom."'

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    voilà l'erreur aprés correction => T_VARIABLE in \form_action.php on line 56
    et ma ligne 56 est :=>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    VALUES ('','"$nom."','".$prenom."','".$adresse."','".$cp."','".$ville."','".$login."','".$encode_mdp."','".$email."', now());";

  8. #8
    Invité
    Invité(e)
    Par défaut
    Il manque un point cette fois :
    '".$nom."'

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    je m'excuse pour ces fautes d'inattention.
    Aprés correction de tout ça
    l'erreur sql devient
    erreur INSERT INTO comptes_utilisateurs (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription ) VALUES ('','dsqdsq','dsqdsq','dsqdsq','dsqdqs','','dsq','fe37defe4f8d4c738bbdda259ef79b19','', now());
    sachant que dsq c'est moi même qui le tape.

  10. #10
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    Je n'arrive toujours pas à trouver, dsl de vous redemander mais je bloque vraiment. J'ai beau chercher, j'ai refais des tutos, je ne comprends pas la faute... Si quelqu'un aurait la gentillesse de m'aider ce serait très gentil.

    Je ne t'oublie pas jreaux, merci beaucoup ça m'a avancer, mais je suis toujours bloquer ...

    Merci d'avance et bonne soirée/journée!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    essais cela hors de ta fonction dejà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $login=mysql_real_escape_string($_POST['loginUser']);
                $nom=mysql_real_escape_string($_POST['NomUser']);
                $prenom=mysql_real_escape_string($_POST['PrenomUser']);
                $adresse=mysql_real_escape_string($_POST['AdresseUser']);
                $cp=mysql_real_escape_string($_POST['CPUser']);
                $ville=mysql_real_escape_string($_POST['VilleUser']);
                $mail=mysql_real_escape_string($_POST['emailUser']);
                $mdp=mysql_real_escape_string($_POST["mdpUser"]);
                $encode_mdp=md5($mdp);
                $sql="insert into comptes_utilisateurs values ('','$nom','$prenom','$adresse','$cp','$ville','$login','$encode_mdp','$email','')";
                if (!$db->query($sql))
                    redirect("form.php","Désolé nous n'avons pas pu vous enregistrer<br /> erreur ".$sql);
                else 
                    redirect("index.php", "Nous vous avons bien enregistrer");
    Ton now(); ne correspond à rien ici dans l code que tu donnes plus bas
    Donc teste le comme cela et ensuite ajoute ta date d'inscription.

    Si cela ne marche pas au niveau de la requete encore alors teste celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql=mysql_query("insert into comptes_utilisateurs values ('','$nom','$prenom','$adresse','$cp','$ville','$login','$encode_mdp','$email','')");
    J'ai déjà eu des soucis du même genre va savoir pourquoi ...

    @+
    Autre chose que je viens de voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    erreur INSERT INTO comptes_utilisateurs (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription ) VALUES ('','dsqdsq','dsqdsq','dsqdsq','dsqdqs','','dsq','fe37defe4f8d4c738bbdda259ef79b19','', now());
    Si tu compte ici tes "NOM"User tu en as 10, si tu regardes le VALUES tu en as9 entre la quote "'" donc déjà un tite erreur à ce niveau.
    iduser est inserer ou est en principe dans ta table ?
    Je crois qu'il te manques un champ quelque part.
    Vérifie celà

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    j'ai essayer ce que tu m'as dit et ça marche toujours pas, ça me mets encore plus d'erreur. (pour le premier)

    Ensuite, je vois 10 en insert et 10 en value donc je ne vois pas là ou tu veux en venir.
    Enfin, l'idUser est enregistré par la table, c'est automatique.

    Je comprends toujours pas ce qui se passe et c'est très gentil de m'aider

    Merci en tout cas.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (iduser, NomUser, PrenomUser, AdresseUser, CPUser, VilleUser, loginUser, mdpUser, emailUser, Date_inscription
    Tu en compte combien ? moi 10 ok jusque là
    La suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '','dsqdsq','dsqdsq','dsqdsq','dsqdqs','','dsq','fe37defe4f8d4c738bbdda259ef79b19','', now
    Avant le now ca fait 9

    Et dans ta table tu as 13 champs

    Cherche l'erreur ????

    Donc ca colle pas je pense

    Médites la dessus je pense

    @+

  14. #14
    Invité
    Invité(e)
    Par défaut
    @Kitetkat :
    Tu te trompes : => NOW() est une fonction SQL qui renvoie la date et heure courante (2008-11-11 12:45:34)
    On a donc bien 10 paramètres.
    Citation Envoyé par Kitetkat Voir le message
    J'ai déjà eu des soucis du même genre va savoir pourquoi ...
    Peut-être parce que tu manques de connaissances dans ce langage (SQL) ?
    Cela dit, si tu es là, c'est aussi pour apprendre.
    Dernière modification par Invité ; 06/05/2012 à 06h47.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Je viens de voir un truc.... (grâce à une remarque de Kitetkat ! Comme quoi...)
    - en Bdd le champ s'appelle : Dateinscription
    - or, dans la requête tu as écrit: Date_inscription

    Normal donc que $db->query($sql) renvoie false !

    1/ Il faut que tu vérifies mieux ce que tu écris !
    2/ active la gestion d'erreur/exception pour afficher les erreurs SQL (sur $db->query($sql))

  16. #16
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    ça marche !!

    Merci beaucoup c'était bien le nom de la table ! quelle erreur bête et dire que je ne l'ai même pas vu. je serai plus rigoureux la prochaine fois !
    Merci beaucoup !

    Comment fait on pour activer la gestion d'erreur ?

  17. #17

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Zut j'ai louper cela lol alors que j'en parlais MDR
    Comme quoi quand on se focalise sur quelque chose une autre nous échappes.
    Bien jouer jreaux62

    @+

Discussions similaires

  1. [1.x] Problème : Mon formulaire enregistre 2 fois en BDD
    Par kevinQ dans le forum Débuter
    Réponses: 2
    Dernier message: 20/06/2012, 18h55
  2. [AC-2000] Problème enregistrement sous sous formulaire
    Par ThieBEN dans le forum IHM
    Réponses: 3
    Dernier message: 13/08/2011, 10h59
  3. [AC-2007] problème enregistrement de données via formulaire
    Par Pier-A dans le forum Modélisation
    Réponses: 1
    Dernier message: 06/05/2009, 13h27
  4. Réponses: 4
    Dernier message: 05/03/2008, 09h49
  5. Problème d'enregistrement formulaire
    Par dedele45 dans le forum IHM
    Réponses: 2
    Dernier message: 15/11/2007, 07h59

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