Probleme connexion Bdd

Résolu/Fermé
zarakai91 Messages postés 5 Date d'inscription lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016 - Modifié par zarakai91 le 9/05/2016 à 12:18
zarakai91 Messages postés 5 Date d'inscription lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016 - 9 mai 2016 à 16:57
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 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 9/05/2016 à 13:27
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
9 mai 2016 à 11:42
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 lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016
Modifié par zarakai91 le 9/05/2016 à 12:39
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 lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016
9 mai 2016 à 15:17
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 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
9 mai 2016 à 15:27
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 lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016
9 mai 2016 à 16:04
Oui j'ai deja essaye, et la requete passe tres bien si je le fait directement depuis PHPMyAdmin
0
jordane45 Messages postés 38308 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
9 mai 2016 à 16:08
Tu peux montrer ton code corrigé (avec les modifs que je t'ai donné) ?
0
zarakai91 Messages postés 5 Date d'inscription lundi 9 mai 2016 Statut Membre Dernière intervention 9 mai 2016
9 mai 2016 à 16:57
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