PHP

Problème BDD

Non Résolu

Bonjour,


Alors voila j'ai suivi le tuto inscription.php mais j'ai cette erreur qui s'affiche : Warning: PDOStatement::execute(): 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 'VALUES ('mon_adresse_mail', '$1$KE/.L45.$ZV2EICF1TvtII47ZXsBNN1')' at line 1 in C:\UwAmp\www\monprojet.dev\Projet SI6\class\bd.php on line 35


<?php
include('ajax/verifsignup.php'); 
?>
<!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Inscription</title>


        <link href="../css/style.css" rel="stylesheet">


    </head>
    <body>
    <nav class="navbar navbar-expand-sm bg-primary navbar-dark">
        <a class="navbar-brand" href="../index.php">
            <img class="logo" src="../images/téléchargement.jpg" alt="Logo" style="width:40px;">
        </a>
        <ul class="navbar-nav">
            <li class="nav-item active">
                <a class="nav-link" href="signup/signup.php">Inscription</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Connexion</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Espace membre</a>
            </li>
        </ul>
    </nav>




    <div class="container">
        <br/>
        <div class
        "row">
        <div class="col-lg-offset-4 col-lg-4 col-lg-offset-4">
            <form action="signup.php" method="post" class="well">
                <h4 class="head">Créer votre compte</h4>




                <div class="form-group">
                    <label for="email">Email : </label>
                    <input type="text" name="email" value="<?php if(isset($email)){echo $email;}?>" class="form-control input-sm" required>


                    <?php
                    if (isset($er_email)) {
                        ?>
                                           
                        <div><?= $er_email ?></div>
                        <?php
                    }
                    ?>
                </div>




                <div class="form-group">
                    <label for="password">Mot de passe : </label>
                    <input type="password" name="mot_de_passe" value="<?php if (isset($mot_de_passe)) {
                        echo $mot_de_passe;
                    } ?>" class="form-control  input-sm" required>


                    <?php
                    if (isset($er_mot_de_passe)) {
                        ?>
                                           
                        <div><?= $er_mot_de_passe ?></div>
                                        <?php
                    }
                    ?>


                </div>


                <div class="form-group">
                    <label for="confirm_password">Confirmation de mot de passe : </label>
                    <input type="password" name="conf_mot_de_passe" value="" class="form-control  input-sm" required>
                </div>


                <div class="form-group">
                    <input type="submit" name="inscription" value="Valider" class="btn btn-sm btn-primary btn-block">
                </div>


            </form>
        </div>
    </div>
    </body>
</html>



<?php
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
include('../class/bd.php'); 
// S'il y a une session alors on ne retourne plus sur cette page
if (isset($_SESSION['id'])){
header('Location: ../index.php');
exit;
}


// Si la variable "$_Post" contient des informations alors on les traitres
if(!empty($_POST)){
extract($_POST);
$valid = true;


// On se place sur le bon formulaire grâce au "name" de la balise "input"
if (isset($_POST['inscription'])){
    $email = htmlentities(strtolower(trim($email))); // On récupère le mail
    $mot_de_passe = trim($mot_de_passe); // On récupère le mot de passe 
    $conf_mot_de_passe = trim($conf_mot_de_passe); //  On récupère la confirmation du mot de passe 


// Vérification du mail
if(empty($email)){
    $valid = false;
    $er_email = "L'email ne peut pas être vide";


// On vérifit que le mail est dans le bon format
}elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $email)){
    $valid = false;
    $er_email = "L'email n'est pas valide";
}else{


// On vérifit que l'email est disponible
$req_email = $DB->query("SELECT email FROM utilisateur WHERE email = ?",array($email));
$req_email = $req_email->fetch();


if ($req_email['email'] <> ""){
    $valid = false;
    $er_email = "Cet email existe déjà";
}
}


// Vérification du mot de passe
if(empty($mot_de_passe)) {
    $valid = false;
    $er_mot_de_passe = "Le mot de passe ne peut pas être vide";


}elseif($mot_de_passe != $conf_mot_de_passe){
    $valid = false;
    $er_mot_de_passe = "La confirmation du mot de passe ne correspond pas";
}


// Si toutes les conditions sont remplies alors on fait le traitement
if($valid){
$mot_de_passe = crypt($mot_de_passe);


// On insert nos données dans la table utilisateur
echo 1; // Les echo vont te permettre de savoir si tu arrives jusque la
$DB->insert("INSERT INTO utilisateur (email, mot_de_passe) VALUES (?, ?)",
array($email, $mot_de_passe));
echo 2;
exit;
}
}
}
?>



<?php
class connexionDB{
    private $host    = 'localhost';   // nom de l'host
    private $name    = 'espace membre';     // nom de la base de donnée
    private $user    = 'root';        // utilisateur
    private $pass    = '';        // mot de passe
    //private $pass    = '';          // Ne rien mettre si on est sous windows
    private $connexion;


    function __construct($host = null, $name = null, $user = null, $pass = null){
        if($host != null){
            $this->host = $host;
            $this->name = $name;
            $this->user = $user;
            $this->pass = $pass;
        }
        try{
            $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,
                $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
        }catch (PDOException $e){
            echo 'Erreur : Impossible de se connecter  à la BDD !';
            die();
        }
    }


public function query($sql, $data = array()){
$req = $this->connexion->prepare($sql);
$req->execute($data);
return $req;
    }


public function insert($sql, $data = array()){
$req = $this->connexion->prepare($sql);
$req->execute($data);
    }
}
$DB = new connexionDB();
?>


SQL:


-- phpMyAdmin SQL Dump
-- version 4.2.7.1
-- http://www.phpmyadmin.net
--
-- Client :  localhost
-- Généré le :  Ven 27 Mars 2020 à 17:48
-- Version du serveur :  5.6.20-log
-- Version de PHP :  5.4.31


SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";




/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


--
-- Base de données :  `espace membre`
--


-- --------------------------------------------------------


--
-- Structure de la table `utilisateur`
--


CREATE TABLE IF NOT EXISTS `utilisateur` (
`id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `mot_de_passe` text NOT NULL,
  `nom` varchar(50) NOT NULL,
  `prenom` varchar(50) NOT NULL,
  `dateNaissance` date NOT NULL,
  `adresse` varchar(100) NOT NULL,
  `ville` varchar(50) NOT NULL,
  `code_postal` varchar(5) NOT NULL,
  `avatar` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


--
-- Index pour les tables exportées
--


--
-- Index pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
 ADD PRIMARY KEY (`id`);




--
-- AUTO_INCREMENT pour la table `utilisateur`
--
ALTER TABLE `utilisateur`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Merci d'avance pour votre aide, cordialement.

519 vues
22 avril 2020 à 17:25 (Édité)
Cette pub permet au site de vivre ...

1 commentaire

Hello @parxdoxe,


Attention a bien utiliser les balises (j'ai réédité le sujet de ton topic) 😉

Quand tu as récupéré le code, as-tu effectuer un copier/coller, ou as-tu télécharger directement en cliquant sur le bouton ? 🤔

En programmation, il ne faut pas utiliser les accents... Les noms de tes fichiers ne doivent pas avoir d'accents... 🙅‍♂️

Vérifie également les informations de connexion de ta base de données, sont-elles correctes et correspondent-elles ? 🤔

Cette pub permet au site de vivre ...