Probleme connexion Bdd

Résolu
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

Par défaut les erreurs PDO ne sont pas affichées, commence par activer l'affichage du rapport d'erreur PDO comme expliqué ici : https://www.php.net/manual/fr/pdo.error-handling.php

Bonne journée
0
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Oui j'ai deja essaye, et la requete passe tres bien si je le fait directement depuis PHPMyAdmin
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu peux montrer ton code corrigé (avec les modifs que je t'ai donné) ?
0
zarakai91 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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