Problème affichage pagination => PHP
Résolu
@lobotomix:~# rm -rf *\
Messages postés
1392
Date d'inscription
Statut
Membre
Dernière intervention
-
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription Statut Membre Dernière intervention -
@lobotomix:~# rm -rf *\ Messages postés 1392 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis en train de réaliser une pagination pour les commentaires de mon forum et il ny a que des commentaire sur la première page qui s'affiche, les autre pages sont blanches
ca fait des heures que je suis dessus et j'y arrive pas pouvez vous m'aider svp
merci d'avance et bonne journee, voici mon code :
désolé c'est pas très lisible
Je suis en train de réaliser une pagination pour les commentaires de mon forum et il ny a que des commentaire sur la première page qui s'affiche, les autre pages sont blanches
ca fait des heures que je suis dessus et j'y arrive pas pouvez vous m'aider svp
merci d'avance et bonne journee, voici mon code :
try { $bdd = new PDO('mysql:host=localhost;dbname=crea_site', 'root', ''); } catch(Exception $e) { die('Ca deconne grave : ' . $e -> getMessage()); } $id = (isset($_GET['id'])) ? $_GET['id'] : ''; if ($id != "") { $_SESSION['id_billet'] = $id; } if (!isset($_SESSION['id_billet'])) {$_SESSION['id_billet'] = 1; $id = $_SESSION['id_billet']; } $billet = $bdd -> prepare('SELECT id, pseudo_proprietaire,titre,contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billet WHERE id=?'); $billet -> execute(array($_SESSION['id_billet'])); $bill = $billet -> fetch(); echo ' <div class=\'color_billet\'><hr /> <p class=\'intro\'><div class=\'contenu_billet\'><strong>' . $bill['pseudo_proprietaire'] . '</strong> a écrit le ' . $bill['date_creation_fr'] . '<br /><span class=\'billet\'>' . $bill['titre'] . '</span></div><br /><br />' . $bill['contenu'] . '</p><br /><br /></div><hr /><br />'; $selection = $bdd -> prepare('SELECT COUNT(id) AS nbcomm FROM commentaire WHERE id_billet=?'); $selection -> execute(array($id)); $select = $selection -> fetch(); $nbcomm = $select['nbcomm']; $perpage = 2; $nbpage = ceil($nbcomm / $perpage); if (isset($_GET['p']) AND $_GET['p'] > 0 AND $_GET['p'] <= $nbpage) { $cpage = $_GET['p']; } else { $cpage = 1; } $aa = (($cpage - 1) * $perpage); $GET['idi'] = $id; $commentaire = $bdd -> prepare('SELECT id,id_billet, pseudo, contenu, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaire WHERE id_billet=? ORDER BY date_commentaire_fr DESC LIMIT ' . "$aa" . ',' . "$perpage"); $commentaire -> execute(array($GET['idi'])); while ($comm = $commentaire -> fetch()) { echo '<hr /><div class=\'color_comm\'><p><span class=\'span1\'><strong>' . $comm['pseudo'] . '</strong> a répondu le ' . $comm['date_commentaire_fr'] . '<br /><br /></span>' . $comm['contenu'] . '</span></p><br /></div><hr /><br />'; } for ($i = 1; $i <= $nbpage; $i++) { if ($i == $cpage) { echo $i . '/'; } else { echo '<a href=\'commentaire.php?p=' . $i . ';idi=' . $id . '\'>' . $i . '</a> /'; } } $commentaire -> closeCursor(); $billet -> closeCursor(); $selection -> closeCursor();
désolé c'est pas très lisible
A voir également:
- Problème affichage pagination => PHP
- Pagination powerpoint - Guide
- Affichage double ecran - Guide
- Easy php - Télécharger - Divers Web & Internet
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
2 réponses
Ca ne doit pas être lié au problème, mais qu'est-ce que $GET ? Ne serait-ce pas $_GET ?
De même
echo '<a href=\'commentaire.php?p=' . $i . ';idi=' . $id . '\'>' . $i . '</a> /';
devrait sûrement être
echo '<a href=\'commentaire.php?p=' . $i . '&idi=' . $id . '\'>' . $i . '</a> /';
Si c'est toujours les premiers commentaires qui s'affichent, c'est que $aa ne doit pas avoir la valeur attendue.
Un peu de debug pourrait aider : juste après
> $aa = (($cpage - 1) * $perpage);
mettre
vvvvvvvvvvvvvvvvvvvvvvv
var_dump(array(
$aa,
$cpage,
$nbpage,
isset($_GET['p']) ,
$_GET['p'] > 0,
$_GET['p'] <= $nbpage
));
^^^^^^^^^^^^^^^^
De même
echo '<a href=\'commentaire.php?p=' . $i . ';idi=' . $id . '\'>' . $i . '</a> /';
devrait sûrement être
echo '<a href=\'commentaire.php?p=' . $i . '&idi=' . $id . '\'>' . $i . '</a> /';
Si c'est toujours les premiers commentaires qui s'affichent, c'est que $aa ne doit pas avoir la valeur attendue.
Un peu de debug pourrait aider : juste après
> $aa = (($cpage - 1) * $perpage);
mettre
vvvvvvvvvvvvvvvvvvvvvvv
var_dump(array(
$aa,
$cpage,
$nbpage,
isset($_GET['p']) ,
$_GET['p'] > 0,
$_GET['p'] <= $nbpage
));
^^^^^^^^^^^^^^^^
Merci j'ai fait les modification et cest vrai que j'aurais pu voir certain detail
j'ai modifier mon code entre temps j'ai enlever les ternaire que je maitrise pas vraiment et je l'ai simplifier
voila ce que j'obtient :
array(6) { [0]=> int(2) [1]=> string(1) "2" [2]=> float(2) [3]=> bool(true) [4]=> bool(true) [5]=> bool(true) }
pour ce code :
j'ai modifier mon code entre temps j'ai enlever les ternaire que je maitrise pas vraiment et je l'ai simplifier
voila ce que j'obtient :
array(6) { [0]=> int(2) [1]=> string(1) "2" [2]=> float(2) [3]=> bool(true) [4]=> bool(true) [5]=> bool(true) }
pour ce code :
try { $bdd = new PDO('mysql:host=localhost;dbname=crea_site', 'root', ''); } catch(Exception $e) { die('Ca deconne grave : ' . $e -> getMessage()); } if(isset($_GET['id'])){ $_SESSION['id_billet'] = $_GET['id'];} $billet = $bdd -> prepare('SELECT id, pseudo_proprietaire,titre,contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billet WHERE id=?'); $billet -> execute(array($_SESSION['id_billet'])); $bill = $billet -> fetch(); echo ' <div class=\'color_billet\'><hr /> <p class=\'intro\'><div class=\'contenu_billet\'><strong>' . $bill['pseudo_proprietaire'] . '</strong> a écrit le ' . $bill['date_creation_fr'] . '<br /><span class=\'billet\'>' . $bill['titre'] . '</span></div><br /><br />' . $bill['contenu'] . '</p><br /><br /></div><hr /><br />'; $selection = $bdd -> prepare('SELECT COUNT(id) AS nbcomm FROM commentaire WHERE id_billet=?'); $selection -> execute(array($_SESSION['id_billet'])); $select = $selection -> fetch(); $nbcomm = $select['nbcomm']; $perpage = 2; $nbpage = ceil($nbcomm / $perpage); if (isset($_GET['p']) AND $_GET['p'] > 0 AND $_GET['p'] <= $nbpage) { $cpage = $_GET['p']; } else { $cpage = 1; } $aa = (($cpage -1) * $perpage); $_GET['idi'] = $_SESSION['id_billet']; $commentaire = $bdd -> prepare('SELECT id_billet, pseudo, contenu, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaire WHERE id_billet=? ORDER BY date_commentaire_fr LIMIT ' . "$aa" . ',' . "$perpage"); $commentaire -> execute(array($_GET['idi'])); while ($comm = $commentaire -> fetch()) { echo '<hr /><div class=\'color_comm\'><p><span class=\'span1\'><strong>' . $comm['pseudo'] . '</strong> a répondu le ' . $comm['date_commentaire_fr'] . '<br /><br /></span>' . $comm['contenu'] . '</span></p><br /></div><hr /><br />'; } for ($i = 1; $i <= $nbpage; $i++) { if ($i == $cpage) { echo $i . '/'; } else { echo '<a href=\'commentaire.php?p=' . $i . '&idi=' . $_SESSION['id_billet'] . '\'>' . $i . '</a> /'; } } $commentaire -> closeCursor(); $billet -> closeCursor(); $selection -> closeCursor();