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

Langage PHP Discussion :

données qui ne s'envoie pas à la base de données


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut données qui ne s'envoie pas à la base de données
    Bonjour, je poste ce message pour vous demandez de l'aide car je ne comprends pas pourquoi les données de mon formulaire ne s'envoie pas a ma base de données, si quelqu'un pouvais m'aider ça serais vraiment gentil

    voici mon code html:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    <!doctype HTML>
    <html lang="fr">
    <html>
       <head>
          <title>Inscription</title>
          <meta charset="utf-8">
       </head>
       <body>
          <div align="center">
             <h2>Inscription</h2>
             <br /><br />
             <form method="POST" action="">
                 <div>
            <label for="homme">Sexe :</label>
     
                    <input type="radio" id="homme" name="sexe" value="Homme">
            <label for = "homme">Homme</label>
     
     
                    <input type="radio" id="femme" name="sexe" value="Femme">
            <label for = "femme">Femme</label>
     
                    <input type="radio" id="autre" name="sexe" value="Autre">
            <label for = "autre">Autre</label>
        </div>
                 <br>
                 <div>
                <label for="jeuxvideo">loisirs:</label>
                <input type="checkbox" id="jeuxvideo" name="loisir">
                <label for="jeuxvideo">Jeux vidéo</label>
     
                            <input type="checkbox" id="cinema" name="loisir">
                <label for="cinema">Cinema</label>
     
                            <input type="checkbox" id="lecture" name="loisir">
                <label for="lecture">Lecture</label>
     
                            <input type="checkbox" id="sport" name="loisir">
                <label for="sport">Sport</label>
     
                            <input type="checkbox" id="informatique" name="loisir">
                <label for="informatique">Informatique</label>
     
            </div>
                 <br>
                        <div>
                <label for="naissance">Date de naissance:</label>
                <input type="date" id="naissance" name="nais" value="<?php if(isset($nais)) { echo $nais; } ?>">
            </div>
                 <br>
                <table>
                   <tr>
                      <td align="right">
                         <label for="nom">Nom :</label>
                      </td>
                      <td>
                         <input type="text" placeholder="Votre nom" id="nom" name="nom" value="<?php if(isset($nom)) { echo $nom; } ?>"/>
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="prenom">Prénom :</label>
                      </td>
                      <td>
                         <input type="text" placeholder="Votre prénom" id="prenom" name="prenom" value="<?php if(isset($prenom)) { echo $prenom; } ?>"/>
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="ville">Ville :</label>
                      </td>
     
                      <td>
                         <input type="text" placeholder="Votre ville" id="ville" name="ville" value="<?php if(isset($ville)) { echo $ville; } ?>"/>
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mail">mail :</label>
                      </td>
                      <td>
                         <input type="email" placeholder="votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>"/>
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mdp">Mot de passe :</label>
                      </td>
                      <td>
                         <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" />
                      </td>
                   </tr>
                   <tr>
                      <td align="right">
                         <label for="mdp2">Confirmation du mot de passe :</label>
                      </td>
                      <td>
                         <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" />
                      </td>
                   </tr>
                   <tr>
                      <td></td>
                      <td align="center">
                         <br />
                         <input type="submit" name="forminscription" value="Je m'inscris" />
                      </td>
                   </tr>
                </table>
             </form>
              <?php
              if(isset($erreur))
              {
                  echo '<font color="red">'.$erreur. "</font>";
              }
              ?>
          </div>
       </body>
    </html>
    et mon code 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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
     
      $bdd = new PDO('mysql:host:localhost;dbname=meetic;charset=utf8', 'root', '');
     
    if(isset($_POST['forminscription']))
    {
     
     
     
        if(!empty($_POST['nom']) AND !empty($_POST['prenom']) AND !empty($_POST['sexe']) AND !empty($_POST['loisir']) AND !empty($_POST['nais']) AND !empty($_POST['mail']) AND !empty($_POST['ville']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2']))
        {
            $nom = ($_POST['nom']);
            $prenom = ($_POST['prenom']);
            $sexe = ($_POST['sexe']);
            $loisir = ($_POST['loisir']);
            $nais = ($_POST['nais']);
            $mail = ($_POST['email']);
            $ville = ($_POST['ville']);
            $mdp = ($_POST['mdp']);
            $mdp2 = ($_POST['mdp2']);
            $nomlenght = strlen($nom);
            $prenomlenght = strlen($prenom);
            if($nomlenght <= 255)
            {
                if($prenomlenght <= 255)
                {
     
                        if($mdp === $mdp2)
                        {  
                            $mdp = sha1($mdp);
                            $insertmbr = $bdd->prepare("INSERT INTO inscription(nom, prenom, sexe, email, ville, nais, loisir, mdp) VALUES (?,?,?,?,?,?,?,?)");
                            $insertmbr->execute(array($nom, $prenom, $sexe, $mail, $ville, $nais, $loisir,$mdp));
                            $erreur = "Votre compte à bien été créer"; 
                        }
                        else
                        {
                        $erreur = "Vos mots de passes ne correspondent pas";
                        }
                    }
     
                }
                else
                {
                    $erreur = "Votre prénom ne dois pas dépasser 255 caractères";
                }
     
            }
            else
            {
                $erreur = "Votre nom ne doit pas dépasser 255 caractères";
            }
        }
    else
    {
        $erreur = "Tous les champs doivent être complétés";
    }
     
    ?>
    Merci beaucoup à ce qui pourront m'aider

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Salut

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" action="">
    Il manque quelque chose au niveau de action, tu dois mettre le PHP qui va faire le boulot avec les données du formulaire.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Bonsoir, tout d'abord merci de ton aide ! Et je ne comprends pas ce que je dois mettre dans action ? mon php et et sur la meme page que mon html, et désolé je viens tout juste de commencer le php donc je ne suis pas très doué. Merci pour ton aide

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    affichez le contenu du tableau $_POST au début de votre code PHP pour voir si vous recevez bien les données.

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    si l'action est sur la même page que le formulaire html, il n'y a rien à mettre dans l'attribut "action". C'est bien comme ça.

    As-tu fait, comme te le conseille mathieu un var_dump($_POST); au début de ton PHP ?

    J'aurais mis la création de la variable $bdd à l'intérieur du if (isset(xxx)) donc après la ligne 8.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Citation Envoyé par lunix7 Voir le message
    ...
    je ne comprends pas ce que je dois mettre dans action ? mon php et et sur la même page que mon html ...
    Tu veux dire que les 2 codes sont dans le même fichier ?
    Il te faut faire un fichier formulaire.php le premier code, celui que tu appels mon code html, et un autre nommé par exemple Traitement.php qui va traiter les données du premier fichier, donc le code que tu appels mon code php.
    Dans la ligne du premier fichier formulaire.php tu renseignes quel fichier va faire le boulot <form method="POST" action="Traitement.php">.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Ben non ProgElecT, désolé de te contredire, mais on peut très bien mettre le formulaire html et son action PHP dans le même fichier...

    Code html+PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     <form method="POST" name="monform" action="">
    <!--code du form-->
     <input type="submit" name="forminscription" value="Je m'inscris" />
    </form>
    </body>
    </html>
    <?php
    if (isset($_POST['forminscription']))
    {
    //code action
    }
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 180
    Points
    17 180
    Par défaut
    Désolé, lunix7 de t'avoir fait perdre du temps avec ma proposition non fondée.

    Cela fait 4 ans que je me suis mis au HTML, 2 ans au PHP, j'ai toujours cru que le formulaire devait être un fichier coté utilisateur et le traitement dans un autre coté serveur
    Je viens donc de faire l'essai, ben oui çà fonctionne (je n'en doutais pas vue ta réponse laurentSc).
    Je remarque que cela recharge la page complète, il va me falloir comprendre le mécanisme.

    J'avoue ne jamais être tombé sur un tuto où on avait le même fichier pour faire le traitement des données entrées par l'utilisateur sur la même page
    Encor une chose d'apprise aujourd'hui.
    Merci
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Je crois que je tenais ça de jreaux62, de l'époque où il était modo sur dvp...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    effectivement mon vardump me renvoie bien les bonnes données je ne comprends donc pas pourquoi rien n'arrive sur la bdd

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2020
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2020
    Messages : 34
    Points : 115
    Points
    115
    Par défaut
    Bonjour,

    Est-ce que la connexion fonctionne? A moins que je me trompe il y a une erreur dans ton DSN.
    Au lieu de 'mysql:host:localhost;', il faudrait mettre 'mysql:host=localhost;'.

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    Il y avait un problème de parenthèse (difficile de te dire où car j'ai copié ton code dans mon IDE, ai vu le problème et ai corrigé, mais je ne sais plus quoi) :

    Code php : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <?php
    if (isset($_POST['forminscription']))
    {
     
        $bdd = new PDO('mysql:host:localhost;dbname=meetic;charset=utf8', 'root',  '');
     
        if (
            !empty($_POST['nom']) and
            !empty($_POST['prenom']) and
            !empty($_POST['sexe']) and
            !empty($_POST['loisir']) and
            !empty($_POST['nais']) and
            !empty($_POST['mail']) and
            !empty($_POST['ville']) and
            !empty($_POST['mdp']) and
            !empty($_POST['mdp2'])
        )
        {
            $nom = ($_POST['nom']);
            $prenom = ($_POST['prenom']);
            $sexe = ($_POST['sexe']);
            $loisir = ($_POST['loisir']);
            $nais = ($_POST['nais']);
            $mail = ($_POST['email']);
            $ville = ($_POST['ville']);
            $mdp = ($_POST['mdp']);
            $mdp2 = ($_POST['mdp2']);
            $nomlength = strlen($nom);
            $prenomlength = strlen($prenom);
            if ( $nomlength <= 255 )
            {
                if ( $prenomlength <= 255 )
                {
                    if ( $mdp ===  $mdp2 )
                    {
                        $mdp = sha1($mdp);
                        $insertmbr =
                            $bdd->prepare("INSERT INTO inscription(nom, prenom, sexe, email, ville, nais, loisir, mdp) VALUES (?,?,?,?,?,?,?,?)");
                        $insertmbr->execute(array($nom, $prenom, $sexe, $mail, $ville, $loisir,  $mdp));
                        $erreur = "Votre compte a bien été créé";
                    }
                    else
                    {
                        $erreur = "Vos mots de passe ne correspondent pas";
                    }
     
                }
                else
                {
                    $erreur = "Votre prénom ne doit pas dépasser 255 caractères";
                }
     
            }
            else
            {
                $erreur = "Votre nom ne doit pas dépasser 255 caractères";
            }
        }
        else
        {
            $erreur = "Tous les champs doivent être complétés";
        }
    }
    ?>
    J'en ai profité pour corriger les fautes (en français et dans le nom des variables en anglais (on dit pas "lenght" mais length))

    Autre point : dans ton code html, on y voit la balise <font> qui est obsolète depuis un paquet d'années (on la remplace par du CSS).
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    La remarque de
    Citation Envoyé par houd.ini Voir le message
    Au lieu de 'mysql:host:localhost;', il faudrait mettre 'mysql:host=localhost;'
    est importante, et tu peux aussi ajouter un block try catch pour t'assurer que la connexion est ok ou pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try {
           $bdd = new PDO('mysql:host=localhost;dbname=meetic;charset=utf8', 'root','');
           $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//pour visualiser les erreurs/avertissements
           echo "connexion établie avec succès.";
    }
    catch (PDOException $e) {
          die("Erreur de connexion à la base :".$e->getMessage());
          exit();//quitter le script
    }

  14. #14
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    J'ai intégré la remarque de Toufik83 dans mon code :

    Code php : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
    if (isset($_POST['forminscription']))
    {
    try
    {
        $bdd = new PDO('mysql:host:=localhost;dbname=meetic;charset=utf8',     'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE,
            PDO::ERRMODE_EXCEPTION);//pour visualiser les erreurs/avertissements
        echo "connexion établie avec succès.";
     
            if (
                !empty($_POST['nom']) and
                !empty($_POST['prenom']) and
                !empty($_POST['sexe']) and
                !empty($_POST['loisir']) and
                !empty($_POST['nais']) and
                !empty($_POST['mail']) and
                !empty($_POST['ville']) and
                !empty($_POST['mdp']) and
                !empty($_POST['mdp2'])
            )
            {
                $nom = ($_POST['nom']);
                $prenom = ($_POST['prenom']);
                $sexe = ($_POST['sexe']);
                $loisir = ($_POST['loisir']);
                $nais = ($_POST['nais']);
                $mail = ($_POST['email']);
                $ville = ($_POST['ville']);
                $mdp = ($_POST['mdp']);
                $mdp2 = ($_POST['mdp2']);
                $nomlength = strlen($nom);
                $prenomlength = strlen($prenom);
                if ( $nomlength <= 255 )
                {
                    if ( $prenomlength <= 255 )
                    {
                        if ( $mdp ===  $mdp2 )
                        {
                            $mdp = sha1($mdp);
                            $insertmbr =
                                $bdd->prepare("INSERT INTO inscription(nom, prenom, sexe, email, ville, nais, loisir, mdp) VALUES (?,?,?,?,?,?,?,?)");
                            $insertmbr->execute(array($nom,
                                $prenom,
                                $sexe,
                                $mail,
                                $ville,
                                $loisir,
                                $mdp));
                            $erreur = "Votre compte a bien été créé";
                        }
                        else
                        {
                            $erreur = "Vos mots de passe ne correspondent pas";
                        }
     
                    }
                    else
                    {
                        $erreur = "Votre prénom ne doit pas dépasser 255 caractères";
                    }
     
                }
                else
                {
                    $erreur = "Votre nom ne doit pas dépasser 255 caractères";
                }
            }
            else
            {
                $erreur = "Tous les champs doivent être complétés";
            }
        }
     
    catch  (PDOException $e) {
        die("Erreur de connexion à la base :" .
            $e->getMessage());
        exit();//quitter le script
    }
    }
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  15. #15
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    @laurentSc

    host:=localhost, désolé c'été mon erreur dans mon message précédant, c'est corrigé.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Tout d'abord merci beaucoup d'avoir pris le temps de corriger mon code c'est très gentil , cependant lorsque que j'essaye de m'inscrire, il me donne bien une erreur de connexion a la base, et me dis que ma bdd est inconnu, pourtant elle est bien la !

    édit: J'ai enfin compris d'ou venais mon problème, mon bdd n'utilisais pas le port de base, je l'ai donc rajouter a la connexion, désolé a vous tous de vous avoir fait perdre votre temps pour une erreur aussi bête, mais maintenant lorsque que j'envoie le formulaire ça m'affiche ça
    connexion établie avec succès.Erreur de connexion à la base :SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    2eme édit: c'est bon j'ai résolu mon problème, une petite faute entre mail et email. en tout cas merci a vous tous vous avez été vraiment très sympathique

  17. #17
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    Citation Envoyé par lunix7 Voir le message
    connexion établie avec succès.Erreur de connexion à la base :SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
    L'erreur été dans la requête et pas à la connexion, parce que cette dernière a été déjà établie avec succès. Cela dit qu'il est toujours possible de contrôler les erreurs avec try catch de chaque requête :
    Code php : 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
     
    try{
        $bdd = new PDO('mysql:host=localhost;dbname=meetic;charset=utf8',     'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE,
            PDO::ERRMODE_EXCEPTION);//pour visualiser les erreurs/avertissements
        echo "connexion établie avec succès.";
       /*code php ...*/
       /*Encore un try imbriqué pour la requête */
       try{
          $bdd->prepare("INSERT INTO inscription(nom, prenom, sexe, email, ville, nais, loisir, mdp) VALUES (?,?,?,?,?,?,?,?)");
           $insertmbr->execute(array($nom,
             $prenom,
             $sexe,
             $mail,
             $ville,
             $loisir,
             $mdp)
          );
       }
       catch(PDOException $e){
          die("Erreur d'insertion :".$e->getMessage());
          exit();
       }
    }catch(PDOException $e)){
         die("Erreur de connexion à la base :" .
            $e->getMessage());
        exit();//quitter le script
    }

    Puis est-ce que tu es sûr que l'insertion fonctionne ? n'as tu pas oublier la colonne nais et la variable $nais?

    il y'a 8 marqueurs anonymes "?" mais seulement 7 variables passées dans execute, non ?

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Oui effectivement mais tout fonctionne j'ai modifier les choses qui n'allais pas, merci beaucoup a toi

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 372
    Points : 5 734
    Points
    5 734
    Billets dans le blog
    1
    Par défaut
    J'ai rajouté le 2e try-catch suggéré par Toufik83, rajouté dans la requête $nais qui manquait effectivement et rajouté l'affichage des messages d'erreur car tu affectais la variable $erreur mais ne l'affichais jamais...

    Code php : 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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <?php
    if (isset($_POST['forminscription']))
    {
    try
    {
        $bdd = new PDO('mysql:host:=localhost;dbname=meetic;charset=utf8',     'root', '');
        $bdd->setAttribute(PDO::ATTR_ERRMODE,
            PDO::ERRMODE_EXCEPTION);//pour visualiser les erreurs/avertissements
        echo "connexion établie avec succès.";
     
            if (
                !empty($_POST['nom']) and
                !empty($_POST['prenom']) and
                !empty($_POST['sexe']) and
                !empty($_POST['loisir']) and
                !empty($_POST['nais']) and
                !empty($_POST['mail']) and
                !empty($_POST['ville']) and
                !empty($_POST['mdp']) and
                !empty($_POST['mdp2'])
            )
            {
                $nom = ($_POST['nom']);
                $prenom = ($_POST['prenom']);
                $sexe = ($_POST['sexe']);
                $loisir = ($_POST['loisir']);
                $nais = ($_POST['nais']);
                $mail = ($_POST['email']);
                $ville = ($_POST['ville']);
                $mdp = ($_POST['mdp']);
                $mdp2 = ($_POST['mdp2']);
                $nomlength = strlen($nom);
                $prenomlength = strlen($prenom);
                if ( $nomlength <= 255 )
                {
                    if ( $prenomlength <= 255 )
                    {
                        if ( $mdp ===  $mdp2 )
                        {
                            $mdp = sha1($mdp);
     
                            /*Encore un try imbriqué pour la requête */
                            try{
                            $insertmbr =
                                $bdd->prepare("INSERT INTO inscription(nom, prenom, sexe, email, ville, nais, loisir, mdp) VALUES (?,?,?,?,?,?,?,?)");
                            $insertmbr->execute(array($nom,
                                $prenom,
                                $sexe,
                                $mail,
                                $ville,
                                $nais,
                                $loisir,
                                $mdp));
                            echo "Votre compte a bien été créé";
                            }
                            catch(PDOException $e){
                                die("Erreur d'insertion :".$e->getMessage());
                                exit();
                            }
                        }
                        else
                        {
                            $erreur = "Vos mots de passe ne correspondent pas";
                        }
     
                    }
                    else
                    {
                        $erreur = "Votre prénom ne doit pas dépasser 255 caractères";
                    }
     
                }
                else
                {
                    $erreur = "Votre nom ne doit pas dépasser 255 caractères";
                }
            }
            else
            {
                $erreur = "Tous les champs doivent être complétés";
            }
            if ($erreur) echo $erreur;
        }
     
    catch  (PDOException $e) {
        die("Erreur de connexion à la base :" .
            $e->getMessage());
        exit();//quitter le script
    }
    }
    ?>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Le problème de l'inscription est bien résolu je récois bien les données a ma bdd, mais, je ne parviens pas a me connecter avec les informations ! Je ne comprends pas pourquoi ! il ne trouve pas le compte enregistré ! Vous sauriez pourquoi ? étant donné que vous avez l'air d'avoir une bonne expérience ? voici ma page de connexion
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <?php
    session_start();
        $bdd = new PDO('mysql:host:=localhost;dbname=meetic;port=3308;charset=utf8', 'root', 'root');
        $bdd->setAttribute(PDO::ATTR_ERRMODE,
            PDO::ERRMODE_EXCEPTION);//pour visualiser les erreurs/avertissements
    try{
    	if(isset($_POST['formconnexion'])) {
       $mailconnect = ($_POST['emailconnect']);
       $mdpconnect = password_hash($_POST['mdpconnect'], PASSWORD_DEFAULT);
       if(!empty($mailconnect) AND !empty($mdpconnect)) {
          $requser = $bdd->prepare("SELECT * FROM inscription WHERE mail = ? AND mdp = ?");
          $requser->execute(array($mailconnect, $mdpconnect));
          $userexist = $requser->rowCount();
          if($userexist == 1) {
             $userinfo = $requser->fetch();
             $_SESSION['id'] = $userinfo['id'];
             $_SESSION['nom'] = $userinfo['nom'];
             $_SESSION['mail'] = $userinfo['mail'];
             header("Location: profil.php?id=".$_SESSION['id']);
          } else {
             $erreur = "Le Compte n'existe pas";
          }
       } else {
          $erreur = "Tous les champs doivent être complétés !";
       }
    }
    }catch  (PDOException $e) {
        die("Erreur de connexion à la base :" .
            $e->getMessage());
        exit();//quitter le script
    }
    ?>
     
    <!doctype HTML>
    <html lang="fr">
    <html>
       <head>
          <title>Connexion</title>
          <meta charset="utf-8">
       </head>
       <body>
          <div align="center">
             <h2>Connexion</h2>
             <br /><br />
             <form method="POST" action="">
    			 <input type="email" name="emailconnect" placeholder="entrez votre email" />
    			 <input type="password" name="mdpconnect" placeholder="mot de passe" />
    			 <input type="submit" name="formconnexion" placeholder="Se connecter" />
     
    		  <?php
    		  if(isset($erreur))
    		  {
    			  echo '<font color="red">'.$erreur. "</font>";
    		  }
    		  ?>
          </div>
       </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] mail de confirmation qui ne s'envoi pas
    Par matoche17 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/04/2018, 07h22
  2. un formulaire qui ne s'envoi pas
    Par Amel_B dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2012, 11h09
  3. Formulaire qui ne s'envoie pas
    Par spawns dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 24/12/2008, 10h17
  4. Formulaire qui ne s'envoie pas
    Par ouiouioui dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 30/10/2008, 11h00
  5. formulaire qui ne s'envoie pas !
    Par isoman dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/05/2008, 00h46

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