Résoudre erreur pagination
Résolu
reverb94
Messages postés
108
Statut
Membre
-
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 :
Une erreur s'affiche ligne 33, mais je n'arrive pas à la comprendre, et ni à la résoudre ^^'.
Merci de votre attention et de votre aide.
Sincèrement.
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
-
essayes:
$premiereimageafficher = ($page -1 )* $imageparpage;
-
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. -
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)
-
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! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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. -
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 ' -
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);.