Résoudre erreur pagination

Résolu
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -  
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -
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

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
essayes:

$premiereimageafficher = ($page -1 )* $imageparpage; 
0
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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
Natio78 Messages postés 719 Date d'inscription   Statut Membre Dernière intervention   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
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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
Natio78 Messages postés 719 Date d'inscription   Statut Membre Dernière intervention   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
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   1
 
Re natio, j'ai essayé mais sans succès :/
0
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
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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
reverb94 Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   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