Plusieurs requêtes sql via PDO, pas de résultat mais pas d'erreur...
Résolu
Recoh
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
Recoh Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Recoh Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous,
j'essaye de récupérer des données à partir de ma bd : 3 menus différents avec 3 données différentes ; descriptif_menu, label_menu et prix_menu.
J'ai recopié une écriture que j'ai essayé d'adapter :
Je n'ai aucun retour d'erreur donc je pense que c'est soit dans l'exécution des requêtes, soit dans le stockage, soit les deux !
Ma page affiche :
à la résolution du code :
Est-ce que vous voyez les erreurs ou c'est-y que je prends le truc à l'envers ?
:)
j'essaye de récupérer des données à partir de ma bd : 3 menus différents avec 3 données différentes ; descriptif_menu, label_menu et prix_menu.
J'ai recopié une écriture que j'ai essayé d'adapter :
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once "cnxbdd.php"; $sql1 = mysql_query('SELECT descriptif_menu FROM menus WHERE menu = :menu;') OR die ('Erreur de la requête MySQL dm:menu'); $dm1 = array(':menu'=>1); $dm2 = array(':menu'=>2); $dm3 = array(':menu'=>3); $sql2 = mysql_query('SELECT label_menu FROM menus WHERE menu = :menu;') OR die ('Erreur de la requête MySQL lm:menu'); $lm1 = array(':menu'=>1); $lm2 = array(':menu'=>2); $lm3 = array(':menu'=>3); $sql3 = mysql_query('SELECT prix_menu FROM menus WHERE menu = :menu;') OR die ('Erreur de la requête MySQL pm:menu'); $pm1 = array(':menu'=>1); $pm2 = array(':menu'=>2); $pm3 = array(':menu'=>3); try{ $requete = $bdd -> prepare($sql1); $requete->execute($dm1, $dm2, $dm3); $requete = $bdd -> prepare($sql2); $requete->execute($lm1, $lm2, $lm3); $requete = $bdd -> prepare($sql3); $requete->execute($pm1, $pm2, $pm3); }catch(Exception $e){ echo " Erreur ! ".$e->getMessage(); echo " Les datas : "; print_r($dm1, $dm2, $dm3, $lm1, $lm2, $lm3, $pm1, $pm2, $pm3); } $row = $requete->fetch(); $dm1 = !empty($row) ? $row['descriptif_menu1']; $dm2 = !empty($row) ? $row['descriptif_menu2']; $dm3 = !empty($row) ? $row['descriptif_menu3']; $lm1 = !empty($row) ? $row['label_menu1']; $lm2 = !empty($row) ? $row['label_menu2']; $lm3 = !empty($row) ? $row['label_menu3']; $pm1 = !empty($row) ? $row['prix_menu1']; $pm2 = !empty($row) ? $row['prix_menu2']; $pm3 = !empty($row) ? $row['prix_menu3']; mysql_close(); ?>
Je n'ai aucun retour d'erreur donc je pense que c'est soit dans l'exécution des requêtes, soit dans le stockage, soit les deux !
Ma page affiche :
<p align="center"> – Le à € : <br>– Le à € : <br>– Le à € : <br>. </p>
à la résolution du code :
<?php $str0 = "– "; $str1 = " Le "; $str2 = " à "; $str3 = " € : "; echo $str0 . $str1 . $lm1 . $str2 . $pm1 . $str3 . $dm1 . "<br>"; echo $str0 . $str1 . $lm2 . $str2 . $pm2 . $str3 . $dm2 . "<br>"; echo $str0 . $str1 . $lm3 . $str2 . $pm3 . $str3 . $dm3 . "<br>"; ?>.
Est-ce que vous voyez les erreurs ou c'est-y que je prends le truc à l'envers ?
:)
A voir également:
- Plusieurs requêtes sql via PDO, pas de résultat mais pas d'erreur...
- Resultat foot - Télécharger - Vie quotidienne
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
3 réponses
J'ai repris le code dans une page à part pour la première variable :
Et ça a fonctionné :
Je vais essayer de résoudre tous les champs à partir de ce "modèle"...
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); try{ $bdd =new PDO('mysql:host=sql.free.fr; dbname=xxxx; charset=utf8', 'xxxx', 'xxxx'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } $sql = "SELECT descriptif_menu FROM menus WHERE menu = :menu;"; $dm1 = array(':menu'=>1); try{ $requete = $bdd -> prepare($sql) ; $requete->execute($dm1) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //on stocke le résultat de la requête dans un array $row = $requete->fetch(); $dm1 = !empty($row) ? $row['descriptif_menu'] : ""; ?> <!Doctype> <html> <head> <meta charset="utf-8"> <title>Ton titre</title> </head> <body> <h2 align="center">Les Menus</h2> <p align="center">Que diriez-vous d'un menu à emporter ?</p> <p><?php echo "$dm1" ?> : €</p> </body> </html>
Et ça a fonctionné :
<!Doctype> <html> <head> <meta charset="utf-8"> <title>Ton titre</title> </head> <body> <h2 align="center">Les Menus</h2> <p align="center">Que diriez-vous d'un menu à emporter ?</p> <p>Velouté de saison, Poulet à la Bière : €</p> </body> </html>
Je vais essayer de résoudre tous les champs à partir de ce "modèle"...
J'ai ajouté et renommé une requête :
et modifié la page html :
et ça donne :
Donc ça marche alors que le code source de la page :
J'essaye d'intégrer toutes les données...
$sql1 = "SELECT descriptif_menu FROM menus WHERE menu = :menu;"; $dm1 = array(':menu'=>1); $dm2 = array(':menu'=>2); try{ $requete1 = $bdd -> prepare($sql1) ; $requete1->execute($dm1) ; $requete2 = $bdd -> prepare($sql1) ; $requete2->execute($dm2) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //on stocke le résultat de la requête dans un array $row = $requete1->fetch(); $dm1 = !empty($row) ? $row['descriptif_menu'] : ""; $row = $requete2->fetch(); $dm2 = !empty($row) ? $row['descriptif_menu'] : "";
et modifié la page html :
<p><?php echo "$dm1" ?> : €</p> <p><?php echo "$dm2" ?> : €</p>
et ça donne :
Velouté de saison, Poulet à la Bière : €
Velouté au Fromage, Volaille sauce aux Cèpes : €
Donc ça marche alors que le code source de la page :
<!Doctype> <html> <head> <meta charset="utf-8"> <title>Ton titre</title> </head> <body> <h2 align="center">Les Menus</h2> <p align="center">Que diriez-vous d'un menu à emporter ?</p> <p>Velouté de saison, Poulet à la Bière : €</p> <p>Velouté au Fromage, Volaille sauce aux Cèpes : €</p> </body> </html>
J'essaye d'intégrer toutes les données...
Je récupère toutes mes données :
et complété le code html dans ma page :
Et ça continue de fonctionner !
Je me demande comment réduire le nombre d'écritures et de requêtes, je suis sûr qu'on peut obtenir au moins les données d'un seul menu en une seule requête mais j'ai pas assez de connaissances pour ce faire...
Je vais me contenter de ça pour l'instant !
$sql1 = "SELECT descriptif_menu FROM menus WHERE menu = :menu;"; $sql2 = "SELECT label_menu FROM menus WHERE menu = :menu;"; $sql3 = "SELECT prix_menu FROM menus WHERE menu = :menu;"; $dm1 = array(':menu'=>1); $dm2 = array(':menu'=>2); $dm3 = array(':menu'=>3); $lm1 = array(':menu'=>1); $lm2 = array(':menu'=>2); $lm3 = array(':menu'=>3); $pm1 = array(':menu'=>1); $pm2 = array(':menu'=>2); $pm3 = array(':menu'=>3); try{ $requete1 = $bdd -> prepare($sql1) ; $requete1->execute($dm1) ; $requete2 = $bdd -> prepare($sql1) ; $requete2->execute($dm2) ; $requete3 = $bdd -> prepare($sql1) ; $requete3->execute($dm3) ; $requete4 = $bdd -> prepare($sql2) ; $requete4->execute($lm1) ; $requete5 = $bdd -> prepare($sql2) ; $requete5->execute($lm2) ; $requete6 = $bdd -> prepare($sql2) ; $requete6->execute($lm3) ; $requete7 = $bdd -> prepare($sql3) ; $requete7->execute($pm1) ; $requete8 = $bdd -> prepare($sql3) ; $requete8->execute($pm2) ; $requete9 = $bdd -> prepare($sql3) ; $requete9->execute($pm3) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } //on stocke le résultat de la requête dans un array $row = $requete1->fetch(); $dm1 = !empty($row) ? $row['descriptif_menu'] : ""; $row = $requete2->fetch(); $dm2 = !empty($row) ? $row['descriptif_menu'] : ""; $row = $requete3->fetch(); $dm3 = !empty($row) ? $row['descriptif_menu'] : ""; $row = $requete4->fetch(); $lm1 = !empty($row) ? $row['label_menu'] : ""; $row = $requete5->fetch(); $lm2 = !empty($row) ? $row['label_menu'] : ""; $row = $requete6->fetch(); $lm3 = !empty($row) ? $row['label_menu'] : ""; $row = $requete7->fetch(); $pm1 = !empty($row) ? $row['prix_menu'] : ""; $row = $requete8->fetch(); $pm2 = !empty($row) ? $row['prix_menu'] : ""; $row = $requete9->fetch(); $pm3 = !empty($row) ? $row['prix_menu'] : "";
et complété le code html dans ma page :
<p><?php echo "$lm1" ?> : <?php echo "$dm1" ?> : <?php echo "$pm1" ?> €</p> <p><?php echo "$lm2" ?> : <?php echo "$dm2" ?> : <?php echo "$pm2" ?> €</p> <p><?php echo "$lm3" ?> : <?php echo "$dm3" ?> : <?php echo "$pm3" ?> €</p>
Et ça continue de fonctionner !
Je me demande comment réduire le nombre d'écritures et de requêtes, je suis sûr qu'on peut obtenir au moins les données d'un seul menu en une seule requête mais j'ai pas assez de connaissances pour ce faire...
Je vais me contenter de ça pour l'instant !