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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    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 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 519
    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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    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 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 519
    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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    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 519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 519
    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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 53
    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