Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
Bonjour, étant en train de suivre la suite de vidéo sur la création d'un site de rencontre (à la 5ème vidéo) je me retrouve bloqué avec une erreur quand je valide le bouton inscrire, ce que j'écris ne s'affiche pas dans ma base de donnée.
Je ne vois pas d'ou peu venir cette erreur car ayant bien suivis l'explication il me semble que j'ai fais ce qu'il fallait faire.
J'utilise :
XAMPP Control Panel v3.2.4
Apache
MySQL
Voici l'erreur qui apparaît lors de l'inscription, la function prepare
n'est pas comprise a ce que je vois :
Et ensuite la fameuse ligne 64 ou il est censé avoir un "problème" :
$req = $BDD->prepare("INSERT INTO utilisateur (pseudo, mail, password, date_naissance, date_inscription, date_connexion)VALUES (?, ?, ?, ?, ?, ?)");
Et voici tout mon code si ça ne suffit pas :
inscription.php
<?php
session_start();
include_once('db/connexiondb.php');
if(!empty($_POST)){
extract($_POST);
$valid = (boolean) true;
if(isset($_POST['inscription'])){
$pseudo =(String) trim($pseudo);
$mail =(String) strtolower(trim($mail));
$password =(String) trim($password);
$jour = (int) $jour;
$mois = (int) $mois;
$annee = (int) $annee;
$date_naissance = (String) null;
if(empty($pseudo)){
$valid = false;
$err_pseudo = "Veuillez renseigner ce champs !";
}
if(empty($mail)){
$valid = false;
$err_mail = "Veuillez renseigner ce champs !";
}
if(empty($password)){
$valid = false;
$err_password = "Veuillez renseigner ce champs !";
}
$verif_jour = array(1, 2, 3);
if(!in_array($jour, $verif_jour)){
$valid = false;
$err_jour = "Veuillez renseigner ce jour !";
}
$verif_mois = array(1, 2, 3);
if(!in_array($mois, $verif_mois)){
$valid = false;
$err_mois = "Veuillez renseigner ce mois !";
}
$verif_annee = array(1990, 2000, 3);
if(!in_array($annee, $verif_annee)){
$valid = false;
$err_annee = "Veuillez renseigner ce annee !";
}
if(!checkdate($mois, $jour, $annee)){
$valid = false;
$err_date = "Date fausse";
}else{
$date_naissance = $annee . '-' . $mois . '-' . $jour;
}
if($valid){
$date_inscription = date("Y-m-d h:m:s");
$req = $BDD->prepare("INSERT INTO utilisateur (pseudo, mail, password, date_naissance, date_inscription, date_connexion)VALUES (?, ?, ?, ?, ?, ?)");
$req->execute(array($pseudo, $mail, $password, $date_naissance, $date_inscription, $date_connexion));
}
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<?php require_once('style.php'); ?>
<title>Inscription</title>
</head>
<body>
<header>
<?php
require_once('menu.php');
?>
<div class="container">
<div class="row">
<div class="col-sm-0 col-md-2 col-lg-3"></div>
<div class="col-sm-12 col-md82 col-lg-6">
<h1>
<strong>Inscription<strong>
</h1>
</div>
</div>
</div>
<form method="post">
<section>
<div>
<?php
if(isset($err_pseudo)){
echo $err_pseudo;
}
?>
<input type="text" name="pseudo" placeholder="Pseudo">
</div>
<div>
<input type="text" name="mail" placeholder="Mail">
</div>
<div>
<input type="password" name="password" placeholder="Mot de passe">
</div>
<div>
<select name="jour">
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="mois">
<option value="1">Janvier</option>
<option value="2">Février</option>
</select>
<select name="annee">
<option value="1990">1990</option>
<option value="2000">2000</option>
</select>
</div>
</section>
<input type="submit" name="inscription" value="S'inscrire">
</form>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</header>
</body>
</html>
connexiondb.php
<?php
class connexionDB {
private $host = 'localhost'; // nom de l'host
private $name = 'site1'; // nom de la base de donnée
private $user = 'root'; // Utilisateur
private $pass = ''; // Mot de passe
private $connexion;
function __construc($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 UTF8MB4',
PDO::ATR_ERRMODE => PDO::ERRMODE_WARNING));
}catch (PDOException $e){
echo 'Erreur : Impossible de se connecter à la BDD !';
die();
}
}
public function connexion (){
return $this->connexion;
}
}
$DB = new connexionDB;
$BDD = $DB->connexion();
?>
Si vous vous demandez, je n'ai pas mis "departement" tout est exactement pareil j'ai juste décidé que cette fonction était inutile pour mes besoins.
J'aurais besoin de votre aide si c'est possible car la je ne vois pas d'ou proviens cette erreur, j'ai essayé avec le code téléchargé sur le site et pareil ça me fais la même erreur...
Bonne fin de journée, cordialement.
Me re-voila !
J'ai finalement téléchargé le code et j'ai tout fais bon et du coup ça s'affiche bien dans ma BDD, j'avais du mal recopier à un endroit sans m'en rendre compte !
@florent72 ça devait être ça mais j'ai préféré prendre le code en le téléchargeant comme ça la maintenant je suis sur que ça marchera parfaitement.
Un grand merci pour votre aide en tout cas passez une bonne soirée en espérant ne pas avoir trop dérangé 😁
Me re-voila !
J'ai finalement téléchargé le code et j'ai tout fais bon et du coup ça s'affiche bien dans ma BDD, j'avais du mal recopier à un endroit sans m'en rendre compte !
@florent72 ça devait être ça mais j'ai préféré prendre le code en le téléchargeant comme ça la maintenant je suis sur que ça marchera parfaitement.
Un grand merci pour votre aide en tout cas passez une bonne soirée en espérant ne pas avoir trop dérangé 😁
Salut @jimsfr !
Pour ma part je pense que c'est peut-être dû à un/des espace/s invisibles dans le code.
Cela arrive lorsque l'on recopie le code sans l'avoir télécharger 🙂
Préviens-nous si cela règle ton soucis👍
Re:
Pas de soucis ! 😉
Si tu as un problème d'utilisation avec les balises, ce topic t'expliques comment les utilisées 😉
Cette erreur t'indique que la variable à la ligne 64 qui devrait correspondre à ton objet PDO est nulle. Vérifies que ta variable est bien instanciée. Peut-être un simple oubli de include
ou require
en tête de ton code ?
Es-tu sûr également d'avoir correctement téléchargé le code en cliquant sur "Obtenir le code" puis "Télécharger le code" ? 🤔
Bonsoir @Jerem971 !
Tout d'abord merci pour ces informations, je pensais faire bien mais c'est vrai que c'est plus pratique de mettre tout le code sur ce post.
Alors petit récapitulatif de ce que j'ai fais en vain :
Donc la je ne sais pas je vais relire mon code mais je trouve ça bizarre quand même que ça ne marche toujours pas.. (ps : j'ai modifié la photo en mettant l'erreur avec xampp)
Hello @jimsfr,
Quelques indications concernant la rédaction de ton topic :
Concernant ton problème, premièrement, il faudra que tu désinstalles Wamp, voilà la raison 😉
Préviens-moi quand cela est fait 😉