Probleme d'affichage

plumebeille Messages postés 12 Statut Membre -  
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:
$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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. plumebeille Messages postés 12 Statut Membre
       
      j'ai essayé elle n'affiche pas d'erreur et n'affiche non plus de données
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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