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