Vous n'êtes pas identifié(e).
Bonjour
je cherche à limiter l'affichage par page du résultat de ma requête. Vu que çe ne fonctionnait pas avec des variables, je suis revenu à la méthode de base.
Mon code est le suivant:
Le problème est $nb_resultat=3 alors que ma BdD contient 6 lignes. Je ne vois pas où est le souci ...
Merci d'avance de vos lumières.
Hors ligne
moi, je vois bien ou est le sousci ![]()
si tu lui demande dans la requete de te retourner 3 enreg dans le tuple avec le mot cle LIMIT 0,3
c'est normal que req->rowCount() soir egal a 3 ![]()
enleve l option limit et plus de probleme ![]()
mieu encore :
SELECT COUNT(*) as nb FROM tatable règlerai encore mieux ton problème, et ce, de façon beaucoup plus propre ![]()
a++
Hors ligne
oups, OK je vois mon erreur.
Je dois donc avoir un problème dans mon code global alors car je n'arrive pas à afficher mes résultats sur plusieurs pages.
Mon code réel est le suivant:
nb_affichage_par_page est initialisé à 3 --> sensé me limiter le nombre d'affichage par page à 3 lignes
$_GET['debut'] --> c'est la valeur du premier enrégistrement de chaque page (pour la page 1 => 0; pour la page 2 => 3; etc ...)
Le $nb_resultat est toujours 3, ce qui semble logique vu ton message. Comment calculer le nombre résultat de ma commande SELECT ET gérer l'affichage à 3 lignes par page ? C'est ça que je je n'arrive pas à faire
PS: je te fais grace du code de ma fonction fonction de calcul pour la page à afficher ...
Hors ligne
>>Comment calculer le nombre résultat de ma commande SELECT
relis bien mon post, tu as la réponse ![]()
a++
Hors ligne
oui, j'ai la réponse pour calculer le nb de ligne (ça ne fonctionne pas encore mais ça ve venir
) mais pour l'affichage.
Je te mets mon code à tout hasard finalement ![]()
// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "")
{
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else
{
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1)
{
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else
{
if ($tableau[0] == "")
{
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else
{
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}
// on calcule le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcule le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
// on calcule le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0)
{
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else
{
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}
if ($cpt_deb1 <= 1)
{
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total)
{
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else
{
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}
if ($nb_pages_total <= $nb_liens_dans_la_barre)
{
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}
// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1)
{
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'"><<</A> ';
}
else
{
$lien='';
}
$barre .= $lien;
// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++)
{
if ($cpt == $page_active)
{
if ($cpt == $nb_pages_total)
{
$barre .= $cpt;
}
else
{
$barre .= $cpt.' - ';
}
}
else
{
if ($cpt == $cpt_fin)
{
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else
{
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A> - ";
}
}
}
$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0)
{
$fin = $fin - $nb_affichage_par_page;
}
// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total)
{
$cible = $query.$fin;
$lien = ' <A HREF="'.$cible.'">>></A>';
}
else
{
$lien='';
}
$barre .= $lien;
return $barre;
}
Hors ligne