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 :

Le formulaire d'inscrition disparait


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut Le formulaire d'inscrition disparait
    Bonsoir, j'ai mon formulaire d'inscription auquel j'ai inclus le script qui fait les vérifications nécessaires à l'inscription dans un if.
    Dans le else, si toutes ses conditions sont remplies, je devrais me connecter à la base de données et inscrire les données. Sauf que le formulaire d'inscription disparait de la page web et rien n'est rajouté à la bdd. J'arrive pas à débuguer.

    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
    if (!empty($erreurs)) {
                foreach ($erreurs as $erreur) {
                    echo "<div class='erreur'>" . $erreur . "</div>";
                }
            } else {
                include './bdd/connection.bdd.php';
                    registPrem($valeur, $nom, $prenom, $email, $mdp);
            }
        }
     
    //et ma fonction :
     
    function registPrem($valeur, $nom, $prenom, $email, $mdp) {
        $mdp_h = sha1($mdp);
        $req = $bdd->prepare('INSERT INTO membres(valeur, nom, prenom, email, mdp)');
        $req->execute(array(
            'valeur' => $valeur,
            'nom' => $nom,
            'prenom' => $prenom,
            'email' => $email,
            'mdp' => $mdp_h
        ));

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $bdd n'existe pas à l'interieur de ta fonction.

    quand tu developpes, affiche toutes les erreurs et active les erreurs PDO.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Merci pour ta préponse. En fait il n'y a aucune erreur qui s'affiche, c'est bien ce qui m'embête et je vais devoir chercher comment activer les erreurs pdo.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Pour activer tes erreurs (pour le dev, pas la prod), tu devrais avoir la possibilité de configurer ton php.ini dont :
    display_errors = On

    Ou encore dans ton fichier.php en affichant les erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (!ini_get('display_errors')) {
        ini_set('display_errors', '1');
    }
    Pour PDO, vois du côté des exceptions pour obtenir de base quelque chose comme ceci :
    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
    function registPrem($bdd, $valeur, $nom, $prenom, $email, $mdp) {
        $mdp_h = sha1($mdp);
        try {
            $req = $bdd->prepare('INSERT INTO membres(valeur, nom, prenom, email, mdp)');
            $req->execute(array(
                'valeur' => $valeur,
                'nom' => $nom,
                'prenom' => $prenom,
                'email' => $email,
                'mdp' => $mdp_h
            ));
        }
        catch(Exception $e) {
            echo $e->getMessage();
        }
    }

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Malgré plusieurs tests et toutes les configurations testés, je n'ai toujours rien dans ma base de donnée et toujours aucune erreur qui affiche malgré le code de sabotage.Je vois dans le fichier php.ini toutes les erreurs dévelopeur sont bien activés si je lis bien. Je n'y comprends vraiment rien.



    Uploaded with ImageShack.us

    Dans quelle direction pourrais-je encore chercher ?

    Merci.

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as corrigé le problème de $bdd à l'interieur de ta fonction ?

    concernant ton php.ini, tu ne nous montres que des commentaires, donc ça n'a aucun interêt.
    Tu dois avoir

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    ça y est j'ai trouvé pour le fichier et j'ai changé les commentaire.


    Uploaded with ImageShack.us

    Pour ce qui est de la fonction, faut-il rajouter la variable $bdd aux variables de la fonction ? Cest ce que jai fait et aucun changemment, aucune erreur affichée.

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    très étrange que tu n'es pas d'erreur. Tu as bien redémarré le serveur ?

    pour $bdd, il peut être déclaré global :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function registPrem($bdd, $valeur, $nom, $prenom, $email, $mdp) {
    global $bdd;

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    oui effectivement, serveur redémarré, aucun changement.

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut test
    Voici une page de test que j'ai fait pour tester ma connection mysql. Je n'ai rien qui s'affiche sur le navigateur à part le premier test (Même pas l'echo de fin). Et bien-sûr aucune erreur.


    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
     
            <?php
            echo 'test';
     
            $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            try {
                $bdd = new PDO('mysql:host=localhost;dbname=oynos', 'root', 'basededonnees');
            } catch (Exception $e) {
                die('Erreur : ' . $e->getMessage());
            }
     
     
            function registPrem($bdd, $valeur, $nom, $prenom, $email, $mdp) {
                global $bdd;
                $mdp_h = sha1($mdp);
                try {
                    $req = $bdd->prepare('INSERT INTO membres(valeur, nom, prenom, email, mdp, signature, date, statut');
                    $req->execute(array(
                        'valeur' => $valeur,
                        'nom' => $nom,
                        'prenom' => $prenom,
                        'email' => $email,
                        'mdp' => $mdp_h,
                        'signature' => $signature,
                        'date' => $date,
                        'statut' => $statut                    
                    ));
                } catch (Exception $e) {
                    echo $e->getMessage();
                }
            }
     
                $valeur = 'degustateur';
                $nom = 'tweety';
                $prenom = 'Gros Minet';
                $email = 'Tweety@GrosMinet.com';
                $mdp = 'undeuxtrois';
                $signature = 'signature';
                $date = date();
                $statut = 1;
     
     
     
                registPrem($bdd, $valeur, $nom, $prenom, $email, $mdp, $signature, $date, $statut);
     
                function affiche ($conn){
                    $sql = 'SELECT *FROM membres';
                    foreach ($conn->query($sql) as $row) {
                        print $row['valeur'] . "\t";
                        print $row['nom'] . "\t";
                        print $row['prenom'] . "\t";
                        print $row['mdp']. "\t";
                        print $row['signature']. "\t";
                        print $row['date']. "\t";
                        print $row['statut']. "\n";                
                    }
                }     
                echo 'test fin';

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    va evidemment après la déclaration de $bdd.

    mais encore une fois cela devrait léver des erreurs.
    il faut que tu regardes pourquoi ton serveur n'affiche pas ces erreurs.

  13. #13
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Oui évidemment, voilà l'erreur obtenue :

    SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    On dirait un problème d'accès SQL mais aussi des erreur de syntaxe.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                    $req = $bdd->prepare('INSERT INTO membres (valeur, nom, prenom, email, mdp, signature, date, statut) VALUES (:valeur, :nom, :prenom, :email, :mdp, :signature, :date, :statut)');
                    $req->execute(array(
                        ':valeur' => $valeur,
                        ':nom' => $nom,
                        ':prenom' => $prenom,
                        ':email' => $email,
                        ':mdp' => $mdp_h,
                        ':signature' => $signature,
                        ':date' => $date,
                        ':statut' => $statut
                    ));

  15. #15
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                    $req = $bdd->prepare('INSERT INTO membres (valeur, nom, prenom, email, mdp, signature, date, statut) VALUES (:valeur, :nom, :prenom, :email, :mdp, :signature, :date, :statut)');
                    $req->execute(array(
                        ':valeur' => $valeur,
                        ':nom' => $nom,
                        ':prenom' => $prenom,
                        ':email' => $email,
                        ':mdp' => $mdp_h,
                        ':signature' => $signature,
                        ':date' => $date,
                        ':statut' => $statut
                    ));
    Corrigé. Effectivement plus de message d'erreur. Merci.
    Mais ça alimente toujours pas la base de données.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Il manque des paramètres (et $bdd, à supprimer)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            function registPrem($valeur, $nom, $prenom, $email, $mdp, $signature, $date, $statut) {
    Bref, si tu manques de rigueur, tu vas passer des heures sur des bêtises.

  17. #17
    Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 74
    Points : 40
    Points
    40
    Par défaut
    Je vais y arriver...

    [8:08] Super, ça marche, c'est génial, un grand merci à tous.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/04/2014, 10h36
  2. [AC-2007] Total Lignes s/s Formulaire Affichage qui disparait
    Par symbabeauchat dans le forum IHM
    Réponses: 9
    Dernier message: 07/07/2011, 10h56
  3. un fichier copié disparait à la fermeture du formulaire
    Par tibofo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/11/2008, 16h06
  4. Réponses: 5
    Dernier message: 29/03/2007, 16h52
  5. Réponses: 1
    Dernier message: 19/08/2006, 02h02

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