Probleme récupération données BDD
Fermé
GildasLEPROVOST
-
Modifié le 18 févr. 2019 à 17:28
jordane45 Messages postés 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 - 19 févr. 2019 à 14:35
jordane45 Messages postés 38366 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 janvier 2025 - 19 févr. 2019 à 14:35
A voir également:
- Probleme récupération données BDD
- Recuperation de données - Guide
- Reinstaller windows sans perte de données - Guide
- Convertisseur récupération de texte - Guide
- Effacer les données de navigation - Guide
- Recuperation compte gmail - Guide
7 réponses
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
18 févr. 2019 à 17:09
18 févr. 2019 à 17:09
Bonjour,
Déjà, Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
.
Ensuite, dans ton premier fichier.. il semble qu'il y ait un espace en trop dans le ph p
Ensuite, vu que tu fais du PDO, je t'invite fortement à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Interesse toi aussi au contenu de ce lien
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Pour finir, reviens nous voir avec ton code modifié si le souci persiste.
Pense à nous montrer le contenu de tes "print" histoire qu'on sache quelles informations transitent dans tes POST et SESSION
Déjà, Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
.
Ensuite, dans ton premier fichier.. il semble qu'il y ait un espace en trop dans le ph p
header('location:fichetrod2.ph p');
Ensuite, vu que tu fais du PDO, je t'invite fortement à lire et à appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Interesse toi aussi au contenu de ce lien
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Pour finir, reviens nous voir avec ton code modifié si le souci persiste.
Pense à nous montrer le contenu de tes "print" histoire qu'on sache quelles informations transitent dans tes POST et SESSION
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
18 févr. 2019 à 17:06
18 févr. 2019 à 17:06
Bonjour,
Pourrais-tu éditer ton message et utiliser les balises < code php> afin que celui-ci soit lisible ?
Merci,
Xavier
Pourrais-tu éditer ton message et utiliser les balises < code php> afin que celui-ci soit lisible ?
Merci,
Xavier
Bonjour désolé première fois pour moi sur ce forum , j'ai ajouté les balises pour que le code soit lisible
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
122
18 févr. 2019 à 22:52
18 févr. 2019 à 22:52
Et pour l'erreur sur la ligne 24 mentionnée ? Est ce que cela corrige le problème ?
GildasLEPROVOST
>
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
18 févr. 2019 à 22:54
18 févr. 2019 à 22:54
Malheureusement non, l'erreur n'est pas présente sur mon fichier
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
19 févr. 2019 à 08:48
19 févr. 2019 à 08:48
Bonjour,
Il y a pas mal d'erreur dans le code que tu donnes, mais j'ai l'impression que ce sont surtout des erreurs de copier-coller ou d'éditeur de texte... Tu as copié-collé ça depuis un autre forum ? Parce que les :o ont sauté (et ça ressemble à une interprétation de smiley de phpbb).
Par exemple dans
Du coup c'est un peu difficile de repérer la vraie erreur.
Néanmoins, dans ta requête d'insertion, tu as mis UPDATE INTO au lieu de INSERT INTO... Et ça, ce n'est probablement pas un artefact de forum :)
Xavier
Il y a pas mal d'erreur dans le code que tu donnes, mais j'ai l'impression que ce sont surtout des erreurs de copier-coller ou d'éditeur de texte... Tu as copié-collé ça depuis un autre forum ? Parce que les :o ont sauté (et ça ressemble à une interprétation de smiley de phpbb).
Par exemple dans
'rientation_sexuelle' => $_POST['orientation_sexuelle'],, et pareil dans la requête préparée..
Du coup c'est un peu difficile de repérer la vraie erreur.
Néanmoins, dans ta requête d'insertion, tu as mis UPDATE INTO au lieu de INSERT INTO... Et ça, ce n'est probablement pas un artefact de forum :)
Xavier
Bonjour Xavier pour votre réponse! Effectivement j'avoue que c'est du copier coller depuis un autre site ???? pour l'erreur de update au lieu de insert c'est du au fait que je souhaite mettre à jour une fiche déjà existante (il manque le where ID = :id_trod vu que je ne l'ai pas encore je l'ai pas mis :-).
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
19 févr. 2019 à 09:29
19 févr. 2019 à 09:29
D'accord mais la syntaxe doit alors être différente :
contre
Xavier
UPDATE table SET champ1 = :champ1, champ2 = :champ2 WHERE id = :id
contre
INSERT INTO table (champ1, champ2) VALUES (:champ1, :champ2)
Xavier
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
19 févr. 2019 à 09:58
19 févr. 2019 à 09:58
Bonjour Gildas,
Si tu as suivi les consignes données dans les liens que je t'ai passé..... ces erreurs de code devraient apparaître....
Dès lors, avec les messages d'erreur, tu devrais être en mesure de corriger ou, dans le cas où tu ne comprendrais pas l'erreur, venir nous voir avec le message....
Si tu as suivi les consignes données dans les liens que je t'ai passé..... ces erreurs de code devraient apparaître....
Dès lors, avec les messages d'erreur, tu devrais être en mesure de corriger ou, dans le cas où tu ne comprendrais pas l'erreur, venir nous voir avec le message....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane voici les modifications
<?php //ouverture de la session : session_start(); //connexion à la BDD : try{ $pdo = new PDO('mysql:host=localhost;dbname=hf_prevention','root',''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo-> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e){ die('Erreur : ' . $e->getMessage()); } echo '<pre>'; print_r($_SESSION); echo'</pre>'; $numero1=$_SESSION['numero']; // traitement des infos saisies dans la fiche par l'enqueteur if(!empty($_POST)){ echo '<pre>'; print_r($_POST); print_r($_FILES); echo '</pre>'; $date=date('d-m-y'); $resultat = $pdo -> prepare("insert INTO trod_2019 where (numero_anonymat, date_trod , lieu, dept, sexe, orientation_sexuelle, tranche_age, origine) VALUES (:numero_anonymat, :date_trod, :lieu, :dept, :sexe, :orientation_sexuelle, :tranche_age, :origine)" ); $verif = $resultat -> execute(array( ':numero_anonymat' => $_POST['numero_anonymat'], ':date_trod'=>$date, ':lieu'=> $_POST['lieu'], ':dept' => $_POST['lieu'], ':sexe' => $_POST['sexe'], ':orientation_sexuelle' => $_POST['orientation_sexuelle'], ':tranche_age' => $_POST['tranche_age'], ':origine' => $_POST['origine'], )); if($verif){ //si la requete à fonctionner redirige l'utilisateur header('location:menu.php'); } } ?>
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
19 févr. 2019 à 11:31
19 févr. 2019 à 11:31
Visiblement tu n'as pas du tout lire ......
Où est l'activation de l'affichage des erreurs PHP ?
Où est la récupération "propre" des variables avant leur utilisation ?
Où est le bloc try/catch à "chaque" requête ?
Normal qu'aucune erreur ne s'affiche !
Si tu n'as pas envie de suivre les consignes/conseils qu'on te donne... on ne risque pas d'avancer.
Où est l'activation de l'affichage des erreurs PHP ?
Où est la récupération "propre" des variables avant leur utilisation ?
Où est le bloc try/catch à "chaque" requête ?
Normal qu'aucune erreur ne s'affiche !
Si tu n'as pas envie de suivre les consignes/conseils qu'on te donne... on ne risque pas d'avancer.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 19 févr. 2019 à 11:50
Modifié le 19 févr. 2019 à 11:50
':lieu'=> $_POST['lieu'],
':dept' => $_POST['lieu'],
Sachant que dept semble contenir un numéro, et lieu une chaîne de caractères, tu as peut-être une erreur de type en base de données.
Mais je rejoins Jordane : si tu avais activé l'affichage des erreurs comme elle t'en avais enjoint, le message t'aurais tout de suite aiguillé vers une solution de ce type.
Xavier
vous semblez pas comprendre ma question :-) lorsque je suis sur ma premiere fiche que je n'ai pas mis la , et
que j'envois mes données dans la bdd tout fonctionne sans probleme , les données sont bien enregistré ,
mon problème c'est que je ne sait pas comment récupérer les données pour les afficher sur la 2 eme fiche :-)
récupération que souhaite faire a partir du numero d'anonymat contenu dans le $_SESSION ['numero'] transmis a ma 2eme fiche via la page recherche
que j'envois mes données dans la bdd tout fonctionne sans probleme , les données sont bien enregistré ,
mon problème c'est que je ne sait pas comment récupérer les données pour les afficher sur la 2 eme fiche :-)
récupération que souhaite faire a partir du numero d'anonymat contenu dans le $_SESSION ['numero'] transmis a ma 2eme fiche via la page recherche
Et avant tout arret cardiaque jepreviens que ce fotmulaire est légale , et crée en partenariat avec le ministère de la santé pour l'association HF prévention qui est une association de depsitage du VIH , toutes les données récepionnées dans ce formulaires le sont de manière légale et anonyme , ce formualire n'est pas complet je n'ai mis que les premières partie , mais c'est un formulaire qui permet d'orienter la personnes dépistées de manière optimale vers un accompagnement adapté !
Je préfére prevenir car j'ai eu droit a un rabattage d'oreille sur un autre forum
Je préfére prevenir car j'ai eu droit a un rabattage d'oreille sur un autre forum
Jordane c'est comme ceci ?
<?php //ouverture de la session : session_start(); //connexion à la BDD : try{ $pdo = new PDO('mysql:host=localhost;dbname=hf_prevention','root',''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo-> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e){ die('Erreur : ' . $e->getMessage()); } error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); echo '<pre>'; print_r($_SESSION); echo'</pre>'; $numero1=$_SESSION['numero']; // traitement des infos saisies dans la fiche par l'enqueteur if(!empty($_POST)){ echo '<pre>'; print_r($_POST); print_r($_FILES); echo '</pre>'; $date=date('d-m-y'); $sql = "insert INTO trod_2019 where (numero_anonymat, date_trod , lieu, dept, sexe, orientation_sexuelle, tranche_age, origine) VALUES (:numero_anonymat, :date_trod, :lieu, :dept, :sexe, :orientation_sexuelle, :tranche_age, :origine)"; $data = array( ':numero_anonymat' => $_POST['numero_anonymat'], ':date_trod'=>$date, ':lieu'=> $_POST['lieu'], ':dept' => $_POST['lieu'], ':sexe' => $_POST['sexe'], ':orientation_sexuelle' => $_POST['orientation_sexuelle'], ':tranche_age' => $_POST['tranche_age'], ':origine' => $_POST['origine'], ); try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; header('location:menu.php'); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } ?>
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
19 févr. 2019 à 12:43
19 févr. 2019 à 12:43
Voici le code corrigé :
Maintenant que ce point est traité... pourrais tu nous dire dans quel formulaire exactement tu veux afficher les données.
De quelles données exactement il est question.
N'oublie pas de nous indiquer dans quel fichier (le nom du fichier...) se trouvent :
- Le code du formulaire
- Le code de ce que tu veux afficher
<?php //ouverture de la session : session_start(); //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la BDD : try{ $pdo = new PDO('mysql:host=localhost;dbname=hf_prevention','root',''); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo-> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e){ die('Erreur : ' . $e->getMessage()); } //récupération PROPRE des variables AVANT de s'en servir... $numero1=!empty($_SESSION['numero']) ? $_SESSION['numero'] : NULL; $numero_anonymat = !empty($_POST['numero_anonymat']) ? $_POST['numero_anonymat'] : ''; $lieu = !empty($_POST['lieu']) ? $_POST['lieu'] : ""; $sexe = !empty($_POST['sexe']) ? $_POST['sexe'] : ""; $orientation_sexuelle = !empty($_POST['orientation_sexuelle']) ? $_POST['orientation_sexuelle'] : ""; $tranche_age = !empty($_POST['tranche_age']) ? $_POST['tranche_age'] : ""; $origine = !empty($_POST['origine']) ? $_POST['origine'] : ""; // traitement des infos saisies dans la fiche par l'enqueteur if(!empty($_POST)){ echo '<pre>'; print_r($_POST); print_r($_FILES); echo '</pre>'; $date=date('d-m-y'); $sql = "insert INTO trod_2019 (numero_anonymat, date_trod , lieu, dept, sexe, orientation_sexuelle, tranche_age, origine) VALUES (:numero_anonymat, :date_trod, :lieu, :dept, :sexe, :orientation_sexuelle, :tranche_age, :origine)"; $data = array( ':numero_anonymat' => $numero_anonymat, ':date_trod'=>$date, ':lieu'=> $lieu, ':dept' => $lieu, ':sexe' => $sexe, ':orientation_sexuelle' => $orientation_sexuelle, ':tranche_age' => $tranche_age, ':origine' => $origine ); try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; header('location:menu.php'); exit(); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($data); } } ?>
Maintenant que ce point est traité... pourrais tu nous dire dans quel formulaire exactement tu veux afficher les données.
De quelles données exactement il est question.
N'oublie pas de nous indiquer dans quel fichier (le nom du fichier...) se trouvent :
- Le code du formulaire
- Le code de ce que tu veux afficher
Jordane ,
Merci pour la correction,
donc je te remet la situation de facon claire en esperant que cela reponde à ta question :
lors de nos sortie 1 minute pour savoir nous avons 2 types de personnel ,
le 1 er type qu'on appel enqueteur :
L'enqueteur saisi dans le fichier qui se nomme :" fichetrod" les informations concernant le "bénéficiaire" dans un formulaire ,
les informations sont :
le numero d'anonymat , (numéro unique)
la date de dépistage , (date récupérée automatiquement)
le lieu de dépistage ( ccial , université, coeur de cité ou lieux de rencontres extérieurs)
le département ( 75,77,78, 62...)
Orientation sexuellle : Homo , bi , Hétéro ,
sa tranche d'âge : -18 ans , 18 - 20 ans , 20-30 ans ....
son origine : Européenne , Américaine , Asiatique ...
(d'autres informations plus personnelles mais étant une longue liste j'ai raccourci pour les tests et l'explication)
apres avoir remplis sa partie , il reste des champs vide à remplir par le dépisteur
une fois le formulaire remplis il envois les données dans la base de données. et passe au fichier "menu" qui lui permets de choisir entre nouveau formulaire et donc de retomber sur le fichier "trod1" ou recherche qui le renvois sur le fichier "recherche".
le 2nd type qu'on appel dépisteur ,
le dépisteur récupére les informations fournis par le depisteur (il peut également modifier les informations) et rentre les données concernant le test de dépistage :
pour ce faire il procède de la manière suivante :
depuis le fichier "menu" il choisi recherche , qui le fait rediriger vers le fichier "recherche ",
dans ce fichier , il entre le numéro d'anonymat fournis par l’enquêteur ,
si le numéro correspond à une fiche présente alors il est redirigé vers le fichier "fichetrod2" , sinon il y a un message d'erreur qui apparaît : Numéro d'anonymat non enregistré
lorsque le dépisteur arrive sur le fichier"fichetrod2" celui voit apparaitre le même formualire que le formulaire de
"fichetrod1" , avec les informations récupérées dans la base de données :
id ( numéro attribué par la base de données)
numero d'anonymat , (numéro unique)
date de dépistage , (date récupérée automatiquement)
lieu de dépistage ( ccial , université, coeur de cité ou lieux de rencontres extérieurs)
département ( 75,77,78, 62...)
Orientation sexuellle : Homo , bi , Hétéro ,
sa tranche d'âge : -18 ans , 18 - 20 ans , 20-30 ans ....
son origine : Européenne , Américaine , Asiatique ...
il doit modifier le numéro d'anonymat ,
et si besoin il modifie les informations remplies par l’enquêteur ,
puis remplis les informations concernant le trod :
numéro de lot
résultat
(et autres informations trop longue à énumérer je réduit pour le test )
puis envois le formulaire mise à jour dans la base de données ( seul l'id ne doit pas changer )
puis est redirigé vers le fichier " menu ".
en esperant avoir été clair ,
merci pour tes réponses
Merci pour la correction,
donc je te remet la situation de facon claire en esperant que cela reponde à ta question :
lors de nos sortie 1 minute pour savoir nous avons 2 types de personnel ,
le 1 er type qu'on appel enqueteur :
L'enqueteur saisi dans le fichier qui se nomme :" fichetrod" les informations concernant le "bénéficiaire" dans un formulaire ,
les informations sont :
le numero d'anonymat , (numéro unique)
la date de dépistage , (date récupérée automatiquement)
le lieu de dépistage ( ccial , université, coeur de cité ou lieux de rencontres extérieurs)
le département ( 75,77,78, 62...)
Orientation sexuellle : Homo , bi , Hétéro ,
sa tranche d'âge : -18 ans , 18 - 20 ans , 20-30 ans ....
son origine : Européenne , Américaine , Asiatique ...
(d'autres informations plus personnelles mais étant une longue liste j'ai raccourci pour les tests et l'explication)
apres avoir remplis sa partie , il reste des champs vide à remplir par le dépisteur
une fois le formulaire remplis il envois les données dans la base de données. et passe au fichier "menu" qui lui permets de choisir entre nouveau formulaire et donc de retomber sur le fichier "trod1" ou recherche qui le renvois sur le fichier "recherche".
le 2nd type qu'on appel dépisteur ,
le dépisteur récupére les informations fournis par le depisteur (il peut également modifier les informations) et rentre les données concernant le test de dépistage :
pour ce faire il procède de la manière suivante :
depuis le fichier "menu" il choisi recherche , qui le fait rediriger vers le fichier "recherche ",
dans ce fichier , il entre le numéro d'anonymat fournis par l’enquêteur ,
si le numéro correspond à une fiche présente alors il est redirigé vers le fichier "fichetrod2" , sinon il y a un message d'erreur qui apparaît : Numéro d'anonymat non enregistré
lorsque le dépisteur arrive sur le fichier"fichetrod2" celui voit apparaitre le même formualire que le formulaire de
"fichetrod1" , avec les informations récupérées dans la base de données :
id ( numéro attribué par la base de données)
numero d'anonymat , (numéro unique)
date de dépistage , (date récupérée automatiquement)
lieu de dépistage ( ccial , université, coeur de cité ou lieux de rencontres extérieurs)
département ( 75,77,78, 62...)
Orientation sexuellle : Homo , bi , Hétéro ,
sa tranche d'âge : -18 ans , 18 - 20 ans , 20-30 ans ....
son origine : Européenne , Américaine , Asiatique ...
il doit modifier le numéro d'anonymat ,
et si besoin il modifie les informations remplies par l’enquêteur ,
puis remplis les informations concernant le trod :
numéro de lot
résultat
(et autres informations trop longue à énumérer je réduit pour le test )
puis envois le formulaire mise à jour dans la base de données ( seul l'id ne doit pas changer )
puis est redirigé vers le fichier " menu ".
en esperant avoir été clair ,
merci pour tes réponses
jordane45
Messages postés
38366
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 janvier 2025
4 720
19 févr. 2019 à 14:35
19 févr. 2019 à 14:35
Bon.. je vais essauer de te reformuler ça autrement ....
Il nous faut :
1 - Le code HTML du formulaire sur lequel tu veux afficher des données (en indiquant dans quel fichier (par exemple : toto.html ou titi.php ....) il se trouve )
2 - Que tu nous indiqué d'où on doit prendre les données à afficher (dans la BDD ? dans ta variable de SESSION ? dans la variable $_POST ? )
2-b- Si en BDD.... la structure de la table qui contient les données et le code PHP que tu as déjà éventuellement écrit pour aller y chercher ces infos. ( une requête SELECT.... FROM ..... )
Il nous faut :
1 - Le code HTML du formulaire sur lequel tu veux afficher des données (en indiquant dans quel fichier (par exemple : toto.html ou titi.php ....) il se trouve )
2 - Que tu nous indiqué d'où on doit prendre les données à afficher (dans la BDD ? dans ta variable de SESSION ? dans la variable $_POST ? )
2-b- Si en BDD.... la structure de la table qui contient les données et le code PHP que tu as déjà éventuellement écrit pour aller y chercher ces infos. ( une requête SELECT.... FROM ..... )
18 févr. 2019 à 17:33