Probleme d'affichage

Fermé
plumebeille Messages postés 11 Date d'inscription vendredi 4 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019 - 21 janv. 2019 à 20:26
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 22 janv. 2019 à 07:15
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:
$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

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
21 janv. 2019 à 21:24
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   
?>



0
plumebeille Messages postés 11 Date d'inscription vendredi 4 janvier 2019 Statut Membre Dernière intervention 22 janvier 2019
22 janv. 2019 à 06:58
j'ai essayé elle n'affiche pas d'erreur et n'affiche non plus de données
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
22 janv. 2019 à 07:15
Qu'as tu dans la barre d'adresse ? Y a t'il bien un id ?

As tu testé la requête directement dans la bdd ? Que retoune t'elle ? Fais nous une capture d'écran stp.
0