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 :

Sauvegarde dans la base de données


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    Points : 29
    Points
    29
    Par défaut Sauvegarde dans la base de données
    Bonjour, ça fait près de 2h, je cherches une erreur dans mon code en vain.

    déjà quand je finis de rentrer les données et que j'envoie la page charge beaucoup trop vite, ce qui me parai pas normal.

    Et enfin les données ne sont pas envoyées dans la base de données. je comprends vraiment pas le soucis.

    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
    119
    120
    121
    122
    123
    124
    125
    <?php
     
    $dns = 'mysql:dbname=testcoursdb; charset=utf8; localhost';
    $user = 'root';
    $password = '';
    $bdd = new PDO($dns, $user, $password);
     
    /**test si nos valeurs existe et ne sont pas vide*/
    if(!empty($_POST['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && 
        !empty($_POST['password_confirm'])){
     
            $pseudo            = $_POST['pseudo'];
            $email             = $_POST['email'];
            $password          = $_POST['password'];
            $password_confrim  = $_POST['password_confirm'];
     
            /**traitement */
            //vérification si les mot de passe sont les mêmes
            /*if($password != $password_confrim){
                header('location:./?error=1&&pass=1');
            }*/
     
            //Verification si l'email exite déja ou est déjà utilisé
            $req = $bdd->prepare('SELECT COUNT(*) AS numberMail 
                                FROM usersmembre
                                WHERE email = ?') or die(print_r($dbb->errorInfo()));
            $req->execute(array($email));
            while($result = $req->fetch()){
                if($result['numberMail'] !=0){
                    header('location:./?error=1&&email=1');
                }
            }
     
            /**envoie des données dans la base de données */
            /**création de la variable secret */
            $secret = sha1($email).rand();
            $secret = sha1($secret).time();
     
            /**cryptage du password */
            $password = "st".sha1($password."2020")."97";
     
            try{
                $req = $bdd->prepare("INSERT INTO usersmembre('pseudo', 'email', 'password_membre', 'secret_membre') 
                                        VALUES(?, ?, ?, ?)")or die(print_r($bdd->errorInfo()));
                $req->execute(array($pseudo, $email, $password, $secret));
     
                //header('location:index.php?succes=1');
            }catch(Exception $e){
                die(print_r($e->getMessage));
            }
     
        }
     
     
     
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <link rel="stylesheet" type="text/css" href="style/connexion.css">
            <link rel="stylesheet" type="text/css" href="style/index.css">
            <title>Espace Membre</title>
        </head>
        <body>
                <header>
                <h1>Inscription</h1>
                </header>
     
                <div class="container">
                    <p class="info">Voulez vous faire partir de notre équipe? Super INSCRIVEZ-VOUS donc!</p>
     
                    <?php
                        if(isset($_GET['error'])){
                                if(isset($_GET['pass'])){?>  
                                <div id="text_error">
                                    <b>Les mots de passe ne sont pas identiques</b>
                                </div> 
                                <?php }else if(isset($_GET['email'])){?>
                                <div id="text_error">
                                    <b>l'adresse email est déjà pris</b>
                                </div>     
                                <?php }?>
                       <?php }?>                
     
                        <div id="formulaire">
                            <form action="index.php" method="POST">
     
                                <table>
                                    <tr>
                                        <td>Pseudo </td>
                                        <td><input type="text" name="pseudo" placeholder="EX : stephane" required></td>
                                    </tr>    
     
                                    <tr>
                                        <td>Email </td>
                                        <td><input type="email" name="email" placeholder="EX : exemple@google.com" required></td>
                                    </tr>
     
                                    <tr>
                                        <td>Mot de passe </td>
                                        <td><input type="password" name="password" placeholder="EX : *****" required></td>
                                    </tr>
     
                                    <tr>
                                        <td>Retaper mot de passe </td>
                                        <td><input type="password" name="password_confirm" placeholder="EX : *****" required></td>
                                    </tr>
     
                                </table>
     
                                <div id="bouton">
                                <input type="submit" value="Inscription"/>
                                </div>
                            </form>
                        </div>
     
            <p class="info1">Si vous êtes déjà de l'équipe <a href="src/connection.php"> connectez-vous</a>
            </p>
        </div>  
     
        </body>
    </html>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    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 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    D'après ce que je vois, tu mets un faux DNS dans PDO, utilise les block try catch pour t'assurer que la connexion est Ok + les options PDO pour les erreurs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $dns = 'mysql:host=localhost;dbname=testcoursdb; charset=utf8;';
    $user = 'root';
    $password = '';
    try{
       $bdd = new PDO($dns, $user, $password
                                 ,array(
                                     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION//pour les erreurs et exceptions
                                  )
       );
    }catch(PDOException $e){
    	echo "Erreur de connexion :".$e->getMessage();
    }

    Après tu peux utiliser fetchColumn() au lieu de while pour récupérer le résultat de ta requête count :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req->execute(array($email));
    $numberMail=$req->fetchColumn();
    if($numberMail>0){
       header('location:./?error=1&email=1');//un seul opérateur & et pas deux 
    }

    Puis fais attention ici $dbb->errorInfo(), c'est $bdd et pas $dbb.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse et toutes ces petite astuce. Mais j'utilise le même dns dans mes autres code, et j'ai essayé les try et catch mais rien. J'ai les données qui vont mais ne se sauvegarde pas.

    J'ai compris donc que le problème venait de ma base de données. J'ai donc créé une nouvelle base avec une nouvelle table mais rien.

    Au final j'ai utilisé une table existante que j'ai modifié, elle était dans une bdd que j'utilisais avant. Et c'est passé.

    Alors ce genre de problème est dûà quoi. Je suis pas vraiment un expert en base de données

    Merci bien

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    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 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Ok, si tu le dis, mais je viens de voir une autre erreur, c'est là :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO usersmembre('pseudo', 'email', 'password_membre', 'secret_membre')

    Supprime les quotes ' ' des colonnes, la correction :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO usersmembre(pseudo, email, password_membre, secret_membre)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Oui, en fait c'est en essayer plusieurs solution de debug que j'ai mis ces quotes. Mais comme je l'ai dit avec une ancienne table, les choses ont fonctionné.

    Concernant la bdd et la table qui avait un soucis, j'ai dû les supprimer.

    Encore une fois je te remercie énormément pour ton aide.

    Tes correctifs pourront aider sûrement une autre personne.

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    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 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Ta base est en mysql ou bien un autre gestionnaire de base de donnée ?

    Si c'est mysql, peux-tu l'exporter dans un fichier.sql et la mettre comme pièce jointe dans la discussion ?

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    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 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Vu que le DNS, commence par mysql, le SGBD est probablement MySQL (ou MariaDB)
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Bonsoir Toufik83,

    Comme je l'ai dit j'ai du changer la bdd et ça fonctionné.

    Mais là je suis sur un nouveau projet et j'ai encore le même problème. les tables dans la bdd étant relié, je ne peux changer de bdd cette fois. Donc je dois trouver l'erreur.

    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
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    <?php
    session_start();
    if(!empty($_POST['nom']) && !empty($_POST['prenoms']) 
    && !empty($_POST['cni']) && !empty($_POST['adresse']) && !empty($_POST['sex'])){
    $dns = 'mysql:dbname=pfe; charset=utf8; localhost';
    $user = 'root';
    $password = '';
    $bdd = new PDO($dns, $user, $password);
     
    $nom = $_POST['nom'];
    $prenoms = $_POST['prenoms'];
    $cni = $_POST['cni'];
    $adresse = $_POST['adresse'];
    $sexe = $_POST['sex'];
    $numtel = $_POST['phone'];
     
        $req=$bdd->prepare('INSERT INTO client(cni, prenom, nom, numTel, adresse, sexe)
                                VALUES (?, ?, ?, ?, ?, ?)')or die(print_r($bdd->errorInfo()));
        $req->execute(array($cni, $prenoms, $nom, $numtel, $adresse, $sexe ));
        echo $_POST['prenoms'];
        header('location:home.php?message=données envoyées');
        exit();
    }
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Localisation voiture</title>
        <link rel="stylesheet" href="../style/style1.css">
        <link rel="stylesheet" href="../style/connection.css">
        <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    </head>
    <body>
     
    <?php 
    if(isset($_SESSION['connect'])){?>
     
        <!--menu-->
        <nav>
            <div id="header" class="mt-2">
                <h1>Espace Admin</h1>
                <h1><a href="deconnection.php">Déconnexion</a></h1>
            </div>   
        </nav>
        <!--trait gris-->
        <div class="bande-gray"></div>
     
        <header>
     
        <div class="header">
     
        <div class="text">
            <h1>Hello</h1>
            <p style="color:white;">Lorem ipsum dolor sit amet consectetur adipisicing elit. Laudantium, necessitatibus incidunt nulla fugiat eveniet <br/>et corrupti hic modi nisi debitis 
            alias quod sed<br/> temporibus ab maxime rem maiores sunt accusamus?
            </p>
            <h1><a href="#">Voir plus</a></h1>
        </div>
            <img src="../img/header-img.png" alt=""> 
     
        </div>
     
        </header>
        <!--trait gris-->
        <div class="bande-gray-header"></div>
     
        <section id="menu">
        <div class="container padding-10">
     
        <div class="menu-p">
            <div id="inscription" class="menu-e">
                <img src="../img/inscription.png" alt="image-menu">
                <h3>inscrire<br/> clients</h3>
                <p>Lorem ipsum dolor sitn aspernatur, ipsa, 
                     impedit asperiores doloremque?
                </p>
                <div class="button-menu">
                    <a href="#inscription_client">Lorem ipsum dolor </a>
                </div>
            </div>
     
            <div id="reservation" class="menu-e">
                <img src="../img/reservation.png" alt="image-menu">
                <h3>Reservation <br/> véhicule</h3>
                <p>Lorem ipsum dolor sitn aspernatur, ipsa, 
                     impedit asperiores doloremque?
                </p>
                <div class="button-menu">
                    <a href="#">Lorem ipsum dolor </a>
                </div>
            </div>
     
            <div id="consultation-res" class="menu-e">
                <img src="../img/consulter_reservations.png" alt="image-menu">
                <h3>Consulter <br/> reservations</h3>
                <p>Lorem ipsum dolor sitn aspernatur, ipsa, 
                     impedit asperiores doloremque?
                </p>
                <div class="button-menu">
                    <a href="#">Lorem ipsum dolor </a>
                </div>
            </div>
     
            <div id="consulter-loc" class="menu-e">
                <img src="../img/localisation.png" alt="image-menu">
                <h3>Consulter<br/> localisations</h3>
                <p>Lorem ipsum dolor sitn aspernatur, ipsa, 
                     impedit asperiores doloremque?
                </p>
                <div class="button-menu">
                    <a href="#">Lorem ipsum dolor </a>
                </div>
            </div>
        </div>
        </div>
        </section>
     
        <section id="inscription_client" class="container">
     
        <h1 style="text-align:center; padding-top:1.5rem; text-transform:uppercase">Entrez les informations du client</h1>
     
        <div id="formulaire">
            <form action="home.php" method="POST">
     
                <table>
                    <tr>
                       <td><label for="nom">Nom</label> </td>
                       <td><input type="text" name="nom" placeholder="EX : stephane" id="nom" required></td>
                    </tr>   
                    <tr>
                       <td><label for="prenom">Prenoms</label> </td>
                       <td><input type="text" name="prenoms" placeholder="EX : stephane" id="prenoms" required></td>
                    </tr> 
     
                    <tr>
                       <td><label for="sexe" >Sexe </label> </td>
                       <td>  M <input type="radio" name="sex" value="M" <?php if (isset($_POST['sex']) && $_POST['sex'] == 'M'): ?>checked='checked'<?php endif; ?> />
                            F <input type="radio" name="sex" value="F"  <?php if (isset($_POST['sex']) && $_POST['sex'] ==  'F'): ?>checked='checked'<?php endif; ?> /></td>
                    </tr>
     
                    <tr>
                        <td><label for="phone">Téléphone</label> </td>
                        <td> <input type="text" id="phone" name="phone"  placeholder="EX : 06 00 00 00 00" required></td>
                    </tr>
     
                    <tr>
                       <td><label for="adresse">Adresse</label></td>
                       <td><input type="text" name="adresse" id="adresse" placeholder="EX : Rue AHMED BELKHAYAT" required></td>
                    </tr>
                    <tr>
                       <td><label for="cni">CNI</label></td>
                       <td><input type="text" name="cni" id="cni" placeholder=" EX : LT1669E" required></td>
                    </tr>
     
                </table>
     
                    <div class="button">
                      <input   style="background-color:#39A1FF;" type="submit" name="inscription" value="Inscription"/>
                     </div>
     
            </form>
        </div>
     
        </section>
     
     
        </div>
     
    <?php }?>
     
     
    </body>
    </html>
    C'est tout mon code. je travaille avec Laragon et j'ai également joins la bdd.Nom : Capture d’écran (171).png
Affichages : 325
Taille : 109,4 Ko

    Merci pour ton vos aides

  9. #9
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    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 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    La capture d'écran n'est pas ce que je t'ai demandé, j'attendais plutôt que tu exportes ta table dans un fichier.sql et l'attacher à la discussion comme pièce jointe, mais apparemment tu ne m'as pas compris....

    Bon, pour identifier l'erreur (si elle existe déjà), il faut utiliser l'option PDO::ATTR_ERRMODE du PDO :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $bdd = new PDO($dns, $user, $password
                              ,array(
                                  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION//celle-ci retourne les erreurs et les exceptions quand elles existent.
                              )
    );

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Toufik83 Voir le message
    Bonjour,

    D'après ce que je vois, tu mets un faux DNS dans PDO, utilise les block try catch pour t'assurer que la connexion est Ok + les options PDO pour les erreurs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $dns = 'mysql:host=localhost;dbname=testcoursdb; charset=utf8;';
    $user = 'root';
    $password = '';
    try{
       $bdd = new PDO($dns, $user, $password
                                 ,array(
                                     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION//pour les erreurs et exceptions
                                  )
       );
    }catch(PDOException $e){
    	echo "Erreur de connexion :".$e->getMessage();
    }

    Après tu peux utiliser fetchColumn() au lieu de while pour récupérer le résultat de ta requête count :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req->execute(array($email));
    $numberMail=$req->fetchColumn();
    if($numberMail>0){
       header('location:./?error=1&email=1');//un seul opérateur & et pas deux 
    }

    Puis fais attention ici $dbb->errorInfo(), c'est $bdd et pas $dbb.

    Ce message est un trésor, grâce à ce message j'ai trouvé l'erreur.
    Merci encore

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/03/2016, 23h37
  2. Réponses: 1
    Dernier message: 20/05/2015, 17h09
  3. Sauvegarde d'une table dans une base de données Access
    Par h_adil dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/05/2008, 21h26
  4. Caractères spéciaux dans la base de données Mysql après sauvegarde.
    Par Alexandrebox dans le forum Administration
    Réponses: 11
    Dernier message: 15/02/2007, 06h32

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