Enregistrement impossible dans la bd
Bonjour, je suis un nouveau en php poo, mon application est php poo aussi: le code qui me permet d'effectuer des enregistrements est celui
inscription.php
<?php
session_start();
// ---- INCLUSIONS ---- //
//include_once('../lib/pdoconnexion.php');
//$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','Geth@lex/007');
include_once('fonction/souscription.class.php');
// INCLUSION DE LA BASE DE DONNEES
$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','Geth@lex/007');
// ---- VERIFCATION DES PARAMETRES ----//
if(isset($_POST) and isset($_POST['pseudo_membres']) and isset($_POST['email_professionnel']) and isset($_POST['pass_membres']) and isset($_POST['motdepasse'])){
// ---- INSTANCIATION DE LA CLASSE ----//
$souscrire = new Souscription($_POST['pseudo_membres'], $_POST['email_professionnel'], $_POST['pass_membres'], $_POST['motdepasse']);
// ---- RECUPERATION DE FONCTION ----//
$control = $souscrire->Verification();
if($control == 'OK'){ // ---TOUT EST BON---//
$enreg = $souscrire->Enregistrer();
if($enreg == 'Enregistrée'){
//echo 'Parfait enregistrement';
header('Location:accuse_reception.php');
}
else{
echo 'L\'inscription a échouée';
}
}
else{
$erreur = $control;
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>INSCRIPTION</title>
<link type="text/css" rel="stylesheet" href="../static/css/designer.css">
<link rel="Shortcut Icon" type="image/x-icon" href="../static/images/favicon.ico">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body style="background: url('../static/images/background.gif') center top no-repeat;">
<div id="body" ><br/>
<?php include_once('../conf/header2.php'); ?>
<!--CETTE PARTIE DU CODE PERMET L'AFFICHAGE DES INFOS DE LA CNPS-->
<div id="cadre-horizon">
<!--CETTE INCLUSION PERMET L'AFFICHAGE DES DIV CONTENANT -->
<?php include_once('../conf/inclusion2.php'); ?>
</div><br/>
<center>
<div id="aff-contenu" class="posts">
<br/>
<div class="connect">
<div class="connect1" >
<fieldset id="fieldset" >
<legend>
<strong>
Formulaire d´inscription
</strong>
</legend>
<br/><br/><br/><br/>
<form method="post" name="" id="">
<table width="100%" cellpadding="2" cellspacing="3" class="text" border="0">
<tr width="25%">
<td align="right" width="3,50%">
<label for="pseudo_membres"><strong>Pseudo </strong></label>
</td>
<td width="9%">
<input type="text" name="pseudo_membres" title="Nom utilisateur..." required="required" size="25">
</td>
</tr>
<tr width="25%">
<td align="right" width="3,50%">
<label for="email_professionnel"><strong>Email prof. </strong></label>
</td>
<td width="9%">
<input type="text" name="email_professionnel" title="Email professionnelle..." required="required" size="25">
</td>
</tr>
<tr width="25%">
<td align="right" width="3,50%">
<label for="pass_membres"><strong>Mot de passe</strong></label>
</td>
<td width="9%">
<input type="password" name="pass_membres" title="Votre mot de passe..." required="required" size="25">
</td>
</tr>
<tr width="25%">
<td align="right" width="3,50%">
<label for="motdepasse"><strong>Confirmation </strong></label>
</td>
<td width="9%">
<input type="password" name="motdepasse" title="Confirmez votre mot de passe..." required="required" size="25">
</td>
</tr>
<tr width="25%">
<td align="right" width="3,50%">
</td>
<td width="9%">
</td>
</tr>
<tr width="25%">
<td align="right" width="3,50%">
</td>
<td width="9%">
<input type="submit" name="envoyer" value="S´I N S C R I R E" class="bouton">
<input type="hidden" name="verif-ajout">
<span style="color: red;"><?php
if(isset($erreur)){
echo $erreur;
}
?>
</span>
</td>
</tr>
</table>
</form>
</fieldset>
</div> <br>
<hr style="width: 450px;">
<p style="text-align: justify; font-size: 13px; width: 430px;" class="text">
Cette inscription vous permet d´être membre de cette équipe.
Dès que vous cliquez sur le bouton S´INSCRIRE, automatiquement vous recevrez un email pour valider votre inscription.
En validant cette inscription depuis votre compte, vous acceptez les <a href="#" style="text-decoration: none">Conditions générales</a> de cette application. </p>
<hr style="width: 450px;">
</div>
<br/>
</div>
</center>
</div>
</body>
</html>
et code php
<?php
class Souscription{
private $pseudo_membres;
private $email_professionnel;
private $pass_membres;
private $motdepasse;
public function __construct($pseudo_membres, $email_professionnel, $pass_membres,$motdepasse){
$nomuser = htmlentities($pseudo_membres);
$adresmail = htmlentities($email_professionnel);
$password = htmlentities(sha1($pass_membres));
$motpasse = htmlentities($motdepasse);
$this->pseudo_membres = $nomuser;
$this->email_professionnel = $adresmail;
$this->pass_membres = $password;
$this->motdepasse = $motpasse;
echo $this->pseudo_membres .'<br/>';
echo $this->email_professionnel .'<br/>';
echo $this->pass_membres .'<br/>';
}
// Cette fonction pour permettra de controler les champs comme pseudo, mot de passe...
public function Verification(){
if(strlen($this->pseudo_membres) > 7 and strlen($this->pseudo_membres) < 20){
// Continue si le pseudo est bon
$syntaxe = '#^[\w.-]+@[\w.-]+\.[a-zA-Z0-9]{2,6}$#';
if(preg_match($syntaxe,$this->email_professionnel)){
// Continue si l'email est bon
if($this->pass_membres == $this->motdepasse){
// Continue si les mot de passe sont identiques
}
else {
$erreur ='Les mots de passe doivent ètre identiques.';
return $erreur;
}
////////////////////////////
}
else {
$erreur = 'La syntaxe de l\'adresse est mauvaise.';
return $erreur;
}
//////////////////
}
else {
$erreur ='Le pseudo doit contenir entre 7 á 20 caractères.';
return $erreur;
}
}
// Cette fonction permettra les enregistrements dans la bd
public function Enregistrer(){
// COnnexion a la base
$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','Geth@lex/007');
// Preparation de requete
$sql = "INSERT INTO membres
('pseudo_membres
,email_professionnel
,pass_membres
,date_inscription)
VALUES(:pseudo_membres
,:email_professionnel
,:pass_membres
,:date_inscription='"."date(Y-m-d H:i:s )"."' )";
$stmt = $bdd->prepare($sql);
// execution de la requette
$stmt->execute(array(
'pseudo_membres' => $this->pseudo_membres,
'email_professionnel' => $this->email_professionnel,
'pass_membres' => $this->pass_membres
));
return 'Enregistrée';
}
public function Session(){
}
}
L'enregistrement n'est pas effectif.
Quelqu'un pourra-t-il m'aider
Réponses apportées à cette discussion
Salut,
qu'il ne se passe rien est somme toute normal.
Regarde attentivement ta classe et en particulier la méthode Verification() : cette dernière est sensée retourner quelque chose qui doit initialiser une variable :
$control = $souscrire->Verification();
Juste après, le code vérifie si cette variable vaut bien OK, ce qui n'arrive jamais puisque, selon le code de cette méthode, elle ne retourne quelque chose qu'en cas d'erreur.
J'ajoute du reste que cette méthode n'est pas complète : à partir de :
if($this->pass_membres == $this->motdepasse)
il devrait y avoir un code qui continue le traitement, mais il n'y a qu'un commentaire et... rien d'autre.
// Continue si les mot de passe sont identiques
Du coup, le retour attendu n'arrivant pas, la suite consistant à enregistrer les données n'est jamais déclenchée.
Bonjour, le but est de contrôler, au cas ou c'est vérifier on passe à l'étape suivante sinon il affichera le message d'erreur jusqu'à ce qu'on entame la fonction pour l'enregistrement.
Mon souci est l'enregistrement ne passe pas,
la fonction est-elle correcte? Y'a t-il quelque chose que je dois faire et qui n'a été? Comment dois-je la rectifier pour satisfaire l'avancée de mon application?
Salut,
c'est ce que j'ai expliqué dans ma précédente réponse : la fonction est correcte, mais incomplète, il manque du code, ne serait-ce que celui retournant « OK » si toutes les conditions de validation sont correctement remplies.