Probleme d'affichage
plumebeille
Messages postés
12
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
bonsoir j'ai un souci je voudrais creer un espace pour mes utilisateurs mais j'aurais encore plus aimé qu'ils ne puissent voir que les reservation qui leurs son destinés.mais a l'execution de mon code j'ai l'erreur: Fatal error: Call to a member function fetch() on a non-objec
voici mon code:
-de connection a ma bdd:
- de selection de données:
-et mon tableau:
help pliz
voici mon code:
-de connection a ma bdd:
$bdd=new PDO('mysql:host=127.0.0.1;dbname=espace_membre; charset=utf8','root','');
if (isset($_GET['id']) AND $_GET['id']>0)
{
$getid = intval($_GET['id']);
$requser = $bdd->prepare('SELECT * FROM membres WHERE id=?');
$requser->execute(array($getid));
$userinfo = $requser->fetch();
}
- de selection de données:
$bdd = new pdo('mysql:host=127.0.0.1;dbname=espace_reservation', 'root' , '');
$reservation = $bdd->query('SELECT * FROM reservation WHERE agence='.$userinfo['agence'].' ORDER BY id DESC LIMIT 0,30');
-et mon tableau:
<?php while ($r = $reservation->fetch()) { ?>
<tr>
<td width="10%"><?= $r['id'] ?></td>
<td width="20%"><?= $r['nom'] ?></td>
<td width="30%"><?= $r['agence'] ?></td>
<td width="35%"><li><?php if ($r['confirme'] == 0){ ?>
<a href="action.php?confirme=<?= $r['id']?>">confirme</a>
<?php }?>
- <a href="action.php?supprimer=<?= $r['id']?>">supprimer</a></td>
</tr>
help pliz
1 réponse
-
Bonjour,
Comme je te l'ai déjà dit dans une précédente discussion...
commence par appliquer ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, attention, tu as une balise ouvrante php en trop ligne 19.
Tu devrais également placer la connexion à ta bdd dans un fichier à part que tu n'aurais qu'à inclure là où tu en as besoin
au lieu de le réécrire à chaque fois....
Concernant tes requêtes... visiblement tu peux n'en faire qu'une en utilisant une jointure
Bref, voici à quoi pourrait ressembler ton code si il était correctement écrit<?php // connexion à la bdd : cnxBdd.php try{ $bdd =new PDO('mysql:host=localhost;dbname=espace_membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $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()); } ?>
Puis ton code :<?php //Affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd require_once 'cnxBdd.php'; //récupération PROPRE des variables AVANT de les utiliser $id = !empty($_GET['id']) ? intval($_GET['id']) : NULL; //traitement if($id){ //préparation de la requête et des variables $sql = "SELECT R.* , M.* FROM reservation R LEFT JOIN membres M ON M.agence = R.agence WHERE M.id ='?' ORDER BY id DESC LIMIT 0,30"; $datas = array($id); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; $reservation = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } ?>
Puis ta boucle d'affichage<?php if(!empty($reservation)){ foreach($reservation as $r) { ?> <tr> <td width="10%"><?php echo $r['id'] ?></td> <td width="20%"><?php echo $r['nom'] ?></td> <td width="30%"><?php echo $r['agence'] ?></td> <td width="35%"> <?php if ($r['confirme'] == 0){ ?> <a href="action.php?confirme=<?php echo $r['id']?>">confirme</a> <?php }?> - <a href="action.php?supprimer=<?php echo $r['id']?>">supprimer</a> </td> </tr> .... le reste de ton code <?php } // fin du foreach } //fin du IF ?>