Résoudre erreur pagination

Résolu
reverb94 Messages postés 108 Statut Membre -  
reverb94 Messages postés 108 Statut Membre -
Bonjour à tous,

J'essaye actuellement de créer une pagination pour une galerie d'image, mais rien ne marche. ( avant d'avoir essayer d'insérer un code de pagination, toutes mes informations s'affichaient correctemet ).
Voici le code que j'essaye de créer :

<?php 
require_once("connexiondessins.inc.php"); 
try { 
throw new Exception (' exception test '); 
$imageparpage=12; 
$retour = $bdd->prepare('SELECT COUNT(*) AS nb_images FROM dessins'); 

$retour->execute(); 
} 
catch (Exception $e) { 
Echo 'erreur : '. $e->getMessage(); 
} 
$dessins = $retour->fetch(PDO::FETCH_ASSOC); 
$totaldesimages = $dessins['nb_images']; 
  
$nombredepage  = ceil($totaldesimages/$imageparpage); 
echo 'Page : '; 
for ($i = 1 ; $i <= $nombredepage ; $i++) 
{ 
    echo '<a href="sps.php?page=' . $i . '">' . $i . '</a> '; 
} 
if (isset($_GET['page']) && !is_numeric($_GET['page'])) 
{ 
        $page = intval($_GET['page']); 
} 
else 
{ 
        $page = 1; 
} 
  try { 
throw new Exception (' exception test '); 
$premiereimageafficher = $page* $imageparpage - $imageparpage; 

$reponse = $bdd->prepare('SELECT id,categorie,titre,image,description FROM dessins WHERE categorie= :category ORDER BY id DESC LIMIT :offset, :nbimages'); 

$reponse->bindValue(':category', 'sps'); 
$reponse->bindParam(':nbimages', $imageparpage); 
$reponse->bindParam(':offset', $premiereimageafficher); 

$reponse->execute(); 
} 
catch (Exception $e) { 
Echo 'erreur : '. $e->getMessage(); 
} 
?> 
<?php while ($dessins = $reponse->fetch()) { ?> 
<div class="cat1"> 
  <?php echo '<span class="classtext1v">'.htmlspecialchars($dessins['categorie']).'</span>'; ?> 
  <br /> 
  <?php echo '<span class="classtext2v">'.htmlspecialchars($dessins['titre']).'</span>'; ?> 
  <br /> 
  <a href="selectionsps.php?id=<?php echo htmlspecialchars($dessins['id']); ?>"><img src="images/<?php echo htmlspecialchars($dessins['image']);?>" width="200" height="250" /></a> 
</div> 

<?php } $reponse->closeCursor(); ?>  


Une erreur s'affiche ligne 33, mais je n'arrive pas à la comprendre, et ni à la résoudre ^^'.
Fatal error: Call to a member function fetch() on a non-object in /home/croba/public_html/sps.php on line 33


Merci de votre attention et de votre aide.
Sincèrement.

7 réponses

  1. Alain_42 Messages postés 5413 Statut Membre 904
     
    essayes:

    $premiereimageafficher = ($page -1 )* $imageparpage; 
    0
  2. reverb94 Messages postés 108 Statut Membre 1
     
    Bonjour,
    Merci pour ton aide Alain.

    $premiereimageafficher = ($page -1 )* $imageparpage;


    ne fait aucune différence :/.

    ( ps : autant pour moi la ligne 33 correspond à ce que j'ai en comptant le code html, la ligne 33 au dessus correspond à
    $dessins = $retour->fetch(PDO::FETCH_ASSOC);
    )
    merci pour ton attention
    sicèrement.
    0
  3. Natio78 Messages postés 742 Statut Membre 96
     
    je pense que le problème vient du fait que tu fetch sur un count(*)

    essai un truc du genre comme ça:

    
    $retour = $bdd->prepare('SELECT COUNT(*) AS nb_images FROM dessins'); 
    
    $retour->execute(); 
    
    $nb_lignes= $retour->fetchColumn();
    
    //voir le contenu du tableau
    print_r($nb_lignes)
    


    0
    1. reverb94 Messages postés 108 Statut Membre 1
       
      Bonjour natio, j'ai effetcué un fethColumn() à la place, mais sa ne m'affiche plus ma pagination, je ne pense pas que l'erreur viennent de là.
      Merci pour ton soutien et ton aide.
      Sincèrement.
      0
    2. Natio78 Messages postés 742 Statut Membre 96
       
      et si tu fais un print_r($dessins) dans ton code, qu'est ce que tu as?
      si ça se trouve c'est un truc à la con genre tu as mis:
      $totaldesimages = $dessins['nb_images'];
      et c'est peut être

      $totaldesimages = $dessins[0]['nb_images'];
      0
    3. reverb94 Messages postés 108 Statut Membre 1
       
      Re natio, j'ai essayé mais sans succès :/
      0
  4. Utilisateur anonyme
     
    Bonjour,

    Le fetch sur un COUNT(*) fonctionne très bien (pour l'avoir fait dans un site hier)

    Ce que j'ai fait :
            $existe=$bdd->query('SELECT COUNT(id_client) FROM bla bla'); 
     $existe_fetch=$existe->fetch(); 
     if($existe_fetch[0]) 
           { 
      bla bla 
     } 
            else 
           { 
      bla bla 
     }

    (l'idée était si mon client possède un parc informatique alors je ne l'affiche pas et je continu à lire ma BDD, sinon je l'affiche pour modification et je continu à lire ma BDD)

    "Internet" est un outil ... apprenez à l'utiliser svp! Nous ne sommes pas là pour vous mâcher le travail. Faite une recherche sur CCM ou sur GG avant de poster, merci!
    0
    1. reverb94 Messages postés 108 Statut Membre 1
       
      Bonjours zema, merci pour ton exemple mais ça je ne souhaite utiliser que des requete préparé :/.
      Merci pour ton aide.
      Sincèrement.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. reverb94 Messages postés 108 Statut Membre 1
     
    re,
    J'ai rajouter PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
    dans ma connexion a ma bdd,

    une erreur s'affiche sur ma page : Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0', '12'' at line 1

    Lorsque je page a la page 2 : Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''12', '12'' at line 1

    et ma page 3 Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''24', '12'' at line 1

    Le problème viet surement de la pagination :/.
    Merci de votre aide.
    0
  7. Alain_42 Messages postés 5413 Statut Membre 904
     
    le message dit que tu as une erreur dans ta requette:
    'SELECT id,categorie,titre,image,description FROM dessins WHERE categorie= :category ORDER BY id DESC LIMIT :offset, :nbimages'
    a chaque fois il semble que tu ait des' en trop de part et d'autre des chiffres de la LIMIT
    ''0', '12''

    il fuadrait LIMIY 0,12 '
    0
    1. reverb94 Messages postés 108 Statut Membre 1
       
      Bonjour alain_42,
      Effectivement il doit y avoir une erreur par là, mais je ne sais pas comment la corriger, tout mes ", ' etc.. semble bien placé :/.
      Merci pour ton aide.
      Sincèrement.
      0
  8. reverb94 Messages postés 108 Statut Membre 1
     
    Merci à Moogli,

    Voici la réponse si ça peu en aider d'autre.

    Il fallait rajouter un \PDO::PARAM_INT); comme ceci :

    $reponse->bindValue(':category', 'actualite');
    $reponse->bindParam(':nbimages', $imageparpage,\PDO::PARAM_INT);
    $reponse->bindParam(':offset', $premiereimageafficher,\PDO::PARAM_INT);.
    0