Problème d'insertion dans la base de données
imoooo
Messages postés
17
Statut
Membre
-
imoooo Messages postés 17 Statut Membre -
imoooo Messages postés 17 Statut Membre -
salut tout le monde!
svlp j'ai un problème qui m'empêche d'inserer qlq chose dans la base de données et je travaille avec SGBD postgres .. je sais pas c'est quoi le probleme .. voila les fontions que j'ai utilisé car je travaille avec de la poo en php
svlp j'ai un problème qui m'empêche d'inserer qlq chose dans la base de données et je travaille avec SGBD postgres .. je sais pas c'est quoi le probleme .. voila les fontions que j'ai utilisé car je travaille avec de la poo en php
2 réponses
-
Bonjour,
Sans voir ton code ni rien savoir du souci que tu rencontres (message d'erreur ??) .... IMPOSSIBLE de te répondre !
-
voila le code .. et j'ai pas d'erreur car lors de l'inscription on appelle cette fonction pour inserer les donnees saisie mais rien ne se change dans la base de données ..
public function insertcandidat($nom,$prenom,$email,$mp)
{
$req=$this->bdd->query('INSERT INTO candidat(nom_c,prenom_c,email_c,mp_c) VALUES(?,?,?,?)');
$req->execute(array($nom,$prenom,$email,$mp));
} -
Peux tu mettre ce code dans un bloc TRY/CATCH pour intercepter les erreurs ?
De plus.. comment as tu codé la connexion à la BDD ?
PS: A l'avenir, merci d'utiliser les balises de code lorsque tu postes du code sur le forum.
Explications ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code -
-
-
-
-
Y'aurait pas mal de choses à corriger ...
par exemple ..; quel est le lien entre ta class Candidat et la class CandidatDB ?
N'aurais tu pas oublié de faire un EXTEND ? et puis.. pourquoi avoir fait deux class différentes ?
mais bon..
déjà testes ça :public function insertcandidat($nom,$prenom,$email,$mp) { $sql = "INSERT INTO candidat(nom_c,prenom_c,email_c,mp_c) VALUES(:nom,:prenom,:email,:mp)"; $datas = array(":nom"=>$nom,":prenom"=>$prenom,":email"=>$email,":mp"=>$mp); //exécution de la requete try{ $req=$this->bdd->query($sql); $req->execute($datas; }catch(Exception $e){ //en cas d'erreur dans la requête echo "Erreur ! ".$e->getMessage(); } }
Le TRY/CATCH permet d'intercepter les erreurs
Par contre... dans ta connexion... il faut que tu actives l'affichage des erreurs PDO.
en ajoutant le setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
par exemple:<?php //Fichier de connexion à la bdd : cnxBdd.php try{ $bdd = new PDO("mysql:host=localhost;dbname=base_phoenixkids;charset=UTF8", 'root', ''); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //pour activer l'affichage des erreurs pdo } catch(PDOException $e){ echo 'ERROR: ' . $e->getMessage(); }
Cordialement,
Jordane-
-
voila ce code était marché juste pour le insert mais j'ai pas tester le update et les autres je vais vous montrer le code d'inscription et les codes de la DB enseignant si vous trouvez que tout est bien me le dites sinon que vous me proposez pour le try catch est ce qu'il est utilisé aussi qu'on veut programmer en poo .. et pour les classes dérivées en héritage est ce qu'il doit posséder un id comme attribut ou non ? et mercii bcp
<?php require_once'../modele/BD/connexion.php'; require_once'../modele/BD/enseignantDB.php'; require_once'../modele/classe/Enseignant.php'; if(isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['password'])) { $n=$_POST['nom']; $p=$_POST['prenom']; $e=$_POST['email']; $mp=$_POST['password']; $E = new Enseignant($n,$p,$e,$mp); $enseignant = new enseignantDB(); $enseignant->insertenseignant($E); $enseignant->sessionenseignant($n,$p,$e,$mp); //header('Location:../view/template/index_Bienvenue.html'); } else { header('location:../view/inscription.php'); } ?><?php require_once'connexion.php'; require_once'../classe/Enseignant.php'; class EnseignantDB{ private $bdd; public function setDB(PDO $DB) { $this->bdd = $DB; } public function __construct() { $DB=new Connexion(); $this->setDB($DB->getPDO()); } public function authenseignant($email,$mp) { $sql="SELECT id_e FROM enseignant where email_e='$email' AND mp_e='$mp' "; $req=$this->bdd->query($sql); $donnee = $req->fetch(); if($donnee){ $_enseignant= new Enseignant(); $_Edb= new EnseignantDB(); $_enseignant=$_Edb->selectenseignant($donnee); $_SESSION['user']=$_enseignant; return true; } else{ return false; } } public function selectenseignant($id) { $req=$this->bdd->query('SELECT * FROM enseignant WHERE id_e='?''); $req->execute(array($id)); $donnee=$req->fetch(); $E = new Enseignant(); $E=$donnee; return $E; } public function insertenseignant($E) { $req=$this->bdd->query('INSERT INTO enseignant(nom_e,prenom_e,email_e,mp_e) VALUES(?,?,?,?)'); $req->execute(array($E->get_nomE(),$E->get_prenomE(),$E->get_emailE(),get_mdpE())); } public function deleteenseignant($idE) { $req=$this->bdd->query('DELETE FROM enseignant WHERE id_e='?' '); $req->execute(array($idE)); } public function updateenseignant($En) { $req=$this->bdd->query('UPDATE enseignant SET "nom_E"=?, "prenom_E"=?, "email_E"=? "mdp_E"=? WHERE "id_C"='$En->_idE' '; $req->execute(array($En->set_nomE(),$En->set_prenomE(),$En->set_emailE(),$En->set_mdpE()); } } -
si vous trouvez qu'il a une faute .. veuillez me signaler slvp .. car j'ai affecter un objet de la classe EnseignantDB dans un objet de la classe Enseignant dans la fonction authentifenseignant mais j'ai utilisé une fonction appellé par l'objet qui retourne un autre objet de l'autre classe .. les syntaxes du poo est un peu compliqué
public function selectenseignant($id) { $req=$this->bdd->query('SELECT * FROM enseignant WHERE id_e='?''); $req->execute(array($id)); $donnee=$req->fetch(); $E = new Enseignant(); $E=$donnee; return $E; }
comme ici je sais est-il correct de affecter $donnee à $E qui est l'objet
-