Probleme d'affichage
plumebeille
Messages postés
12
Statut
Membre
-
jordane45 Messages postés 40050 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 40050 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
A voir également:
- Probleme d'affichage
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Problème affichage page internet google chrome - Forum Téléphones & tablettes Android
- Pinterest problème affichage ✓ - Forum Réseaux sociaux
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
Puis ton code :
Puis ta boucle d'affichage
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
?>
As tu testé la requête directement dans la bdd ? Que retoune t'elle ? Fais nous une capture d'écran stp.