Problème d'insertion dans la base de données
Fermé
imoooo
Messages postés
14
Date d'inscription
jeudi 19 mai 2016
Statut
Membre
Dernière intervention
2 juin 2016
-
Modifié par imoooo le 19/05/2016 à 17:52
imoooo Messages postés 14 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 2 juin 2016 - 23 mai 2016 à 15:38
imoooo Messages postés 14 Date d'inscription jeudi 19 mai 2016 Statut Membre Dernière intervention 2 juin 2016 - 23 mai 2016 à 15:38
A voir également:
- Problème d'insertion dans la base de données
- Germain veut gérer les activités de son association avec une base de données. il a commencé à créer des tables dans un fichier, mais il n’est pas sûr du résultat. le fichier à télécharger contient uniquement le schéma de cette base de données. en l’état actuel, que peut-on en déduire ? - Forum Outlook
- Formules excel de base - Guide
- Insertion liste déroulante excel - Guide
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Gigaset ne reconnait plus sa base - Forum telephonie fixe
2 réponses
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
19 mai 2016 à 20:11
19 mai 2016 à 20:11
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 !
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
Modifié par jordane45 le 21/05/2016 à 20:50
Modifié par jordane45 le 21/05/2016 à 20:50
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
jordane45
Messages postés
38289
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2024
4 703
21 mai 2016 à 20:50
21 mai 2016 à 20:50
NB: Si tu ne visualises aucune erreur .... pense bien à DESACTIER TOUS les header(location ...) que tu as mis dans ton code !
imoooo
Messages postés
14
Date d'inscription
jeudi 19 mai 2016
Statut
Membre
Dernière intervention
2 juin 2016
23 mai 2016 à 14:55
23 mai 2016 à 14:55
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()); } }
imoooo
Messages postés
14
Date d'inscription
jeudi 19 mai 2016
Statut
Membre
Dernière intervention
2 juin 2016
Modifié par imoooo le 23/05/2016 à 15:39
Modifié par imoooo le 23/05/2016 à 15:39
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
19 mai 2016 à 20:53
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));
}
19 mai 2016 à 23:04
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
20 mai 2016 à 19:54
20 mai 2016 à 20:08
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 !
20 mai 2016 à 20:13