Problème d'insertion dans la base de données
imoooo
Messages postés
14
Date d'inscription
Statut
Membre
Dernière intervention
-
imoooo Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
imoooo Messages postés 14 Date d'inscription Statut Membre Dernière intervention -
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
A voir également:
- Problème d'insertion dans la base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
2 réponses
Bonjour,
Sans voir ton code ni rien savoir du souci que tu rencontres (message d'erreur ??) .... IMPOSSIBLE de te répondre !
Sans voir ton code ni rien savoir du souci que tu rencontres (message d'erreur ??) .... IMPOSSIBLE de te répondre !
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 :
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:
Cordialement,
Jordane
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é
comme ici je sais est-il correct de affecter $donnee à $E qui est l'objet
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
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));
}
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
D'un côté tu as un $bdd ... et de l'autre tu utilises un $this->bdd
...j'aimerai que tu me montres l'intégralité de tes class !