Probleme connexion Bdd

Résolu
zarakai91 Messages postés 6 Statut Membre -  
zarakai91 Messages postés 6 Statut Membre -
Bonjour a tous
J'ai un petit soucis au niveau de ma connexion a ma base de donné

voici la page avec ma requete sql afin de l'inserer des donnée dans ma bdd
<?php
include "Connection.php";
if(isset($_POST['login'])){
    echo "blabla";
    $reponse = $bdd->prepare("INSERT INTO user VALUES (:surname,:forename,:address,:email,:num,:username,:pw,'')");
    $reponse->execute(array(
        'surname' => $_POST['surname'],
        'forename' => $_POST['forename'],
        'address' => $_POST['address'],
        'email'=>$_POST['email'],
        'num'=>$_POST['num'],
        'username'=>$_POST['username'],
        'pw'=>$_POST['pw']));

    print_r($_POST);
    echo "flag";
}      
?>
<!Doctype html>
<html>
<head>
    <title>Registration Page</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css"  href="RegistrationForm.css">
</head>
<body>
<div id="tabs">
    <ul>
        <li><a href="Welcome.php" rel="url1">Welcome </a></li>
        <li><a href="Registration.php" rel="url2">Registration</a></li>
    </ul>
</div>
<h1 class="reg">Registration</h1>
<form method="post">
    <table class="tabl">
        <tr><th colspan="2" class="test" ><i><h2>LOGIN </h2></i></th></tr>
        <tr><th> Surname :</th> <td> <input type="text" name="surname"></td> </tr>
        <tr><th>Forenames :</th> <td> <input type="text" name="forename"></td></tr>
        <tr><th>Date of Birth:</th> <td> <input type="date" name="date"></td></tr>
        <tr><th>Address :</th> <td> <input type="text" name="address"></td></tr>
        <tr><th>Email :</th> <td> <input type="email" name="email"></td></tr>
        <tr><th>Telephone number :</th> <td> <input type="tel" name="num"></td></tr>
        <tr><th>Username :</th> <td> <input type="text" name="username"></td></tr>
        <tr><th>Password :</th> <td> <input type="password" name="pw"></td></tr>
        <tr><th colspan="2" class="test"><input type="submit" name="login" value="Login"></th> </tr>
    </table>
</form>
</body>
</html>


et voici ma page de connexion a ma bdd
<?php
try
{
    // On se connecte à MySQL
    $bdd = new PDO("mysql:host=localhost;dbname=a4", "root", "");

}
catch(Exception $e)
{
    // En cas d'erreur, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
}
?>


Je ne vois pas mon erreur, normalement lorsque j'appuie sur mon bouton, cela devrais transmettre à ma bdd les données saisies dans mon formulaire
Mais lorsque je vérifie ma bdd phpMyAdmin il n'y aucun nouvelle entrée, pourtant j'ai vérifié que le nom de la bdd et le nom de la table que je passe en paramètre sont corrects.

Merci d'avance,

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    1 - On récupère proprement les variables AVANT de les utiliser.
    via l'écriture ternaire et un isset par exemple :
    $surname =  isset($_POST['surname']) ? $_POST['surname'] : ''; 
    


    2 - Place l'éxécution de ta requête dans un bloc TRY/Catch
    et sépare les datas de l'exécution de la requête afin de pouvoir en faire un ECHO si besoin.
    Par exemple :
    
    $sql = "INSERT INTO user VALUES (:surname,:forename,:dob,:address,:email,:num,:username,:pw,'')"
    
    $a_datas = array(
            ':surname' => $surname,
            ':forename' => $forename,
            ':dob'=> $dob,
            ':address' => $address,
            ':email'=>$email,
            ':num'=>$num,
            ':username'=>$username,
            ':pw'=>$pw);
    
    try{
      $reponse = $bdd->prepare($sql);
      $reponse->execute($a_datas);
    }catch(Exception $e){
      echo "<br>Erreur ! " .$e->getMessage();
      echo "<br>REQUETE : <br> ".$sql."<br>DATAS: <br>";
      print_r($a_datas);
    }
    


    3 - SI ça ne fonctionne toujours pas ... prends la requete .... remplace les variables par de vraies valeurs ... et teste la DIRECTEMENT dans ta BDD (via phpmyadmin par exemple)

    Cordialement, 
    Jordane                                                                 
    2
  2. zarakai91 Messages postés 6 Statut Membre
     
    J'ai resolu un de mes probleme,
    j'avais oublier inserser la date dans mon insert que j'ai du renommer dob

    $reponse = $bdd->prepare("INSERT INTO user VALUES (:surname,:forename,:dob,:address,:email,:num,:username,:pw,'')");
        $reponse->execute(array(
            'surname' => $_POST['surname'],
            'forename' => $_POST['forename'],
            'dob'=> $_POST['dob'],
            'address' => $_POST['address'],
            'email'=>$_POST['email'],
            'num'=>$_POST['num'],
            'username'=>$_POST['username'],
            'pw'=>$_POST['pw']));
    


    mais cela ne rempli toujours pas ma bdd, et aucune erreur n'est fourni par
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    0
  3. zarakai91 Messages postés 6 Statut Membre
     
    Bonjour Jordane45

    merci de ton commentaire
    mais meme en remplacant par des variables cela ne fonctionne toujours pas (j'ai aussi essayé de créer une nouvelle table mais toujours aucun resultat)
    et cela ne me donne aucun message d'erreur
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Tu as essayé d'éxécuter la requête DIRECTEMENT dans la BDD ????

      Et au passage, tu peux ajouter, au début de ton script PHP la ligne :
      error_reporting(E_ALL);
      
      0
    2. zarakai91 Messages postés 6 Statut Membre
       
      Oui j'ai deja essaye, et la requete passe tres bien si je le fait directement depuis PHPMyAdmin
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Tu peux montrer ton code corrigé (avec les modifs que je t'ai donné) ?
      0
    4. zarakai91 Messages postés 6 Statut Membre
       
      en redemarant wamp cela a mis tous les essais que j'avais saisi dans ma base de donner (je ne sais pas pourquoi) donc mon probleme est resolu.

      Merci beaucoup pour ton aide jordane45
      0