Affichage par page page : pages blanches à la fin
bonjour,
je fais (tente de faire) un affichage page par page des résultats d'une requête.
Les premières pages indiquent les bons résultats, mais après il y a des liens vers des pages vides.
En outre, le nombre total de réponses indiquées est inexact, et, en plus, il a l'air lié au contenu d'une cellule : si mon premier résultat affiché a pour contenu de la cellule "lieu", 75012, on m'indiquera : il y a75 réponses.
Si le contenu de la cellule lieu est 91000 on m'indiquera il y a 91 réponses. Si il y a en fait 30 réponses, les 30 premières pages seront OK, les 61 suivantes seront vides...
Voici le code de la requête qui permet de calculer le nombre total de réponses et de l'afficher.
Si quelqu'un comprend le problème, je veux bien ses lumières.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT lieu, description, activite, dates, tarifs, horaires, adresse, adresse2, cp, ville, public, s_nom, aide_ac.c_civ, aide_ac.c_tel, aide_ac.c_email FROM aide_ac, aide_st where aide_ac.structure=aide_st.s_clef';
if (isset($_SESSION['public'])&&($_SESSION['public'])!="#")
{
$sql .= ' AND public = "'.$_SESSION['public'].'"';
}
if (isset($_SESSION['lieu'])&&($_SESSION['lieu'])!="#")
{
$sql .= ' AND lieu = "'.$_SESSION['lieu'].'"';
}
if (isset($_SESSION['activite'])&&($_SESSION['activite'])!="#")
{
$sql .= ' AND activite = "'.$_SESSION['activite'].'"';
}
if (isset($_SESSION['mot'])&&($_SESSION['mot'])!="#")
{
$sql .= ' AND (description LIKE "%'.$_SESSION['mot'].'%" OR lieu LIKE "%'.$_SESSION['mot'].'%" OR dates LIKE "%'.$_SESSION['mot'].'%" OR specifique LIKE "%'.$_SESSION['mot'].'%")';
}
// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);
// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune activité ne correspond à vos critères de recherche.';
}
else {
echo '<span class="txtp"> il y a '.$nb_total.' réponse(s) correspondant à votre recherche</span> '; |
merci beaucoup pour votre aide.
Re: Affichage par page page : pages blanches à la fin
1 :
Tu devrais utiliser la fonction COUNT pour tes requêtes SQL de comptabilisation : http://sql.developpez.com/sqlaz/ensembles/
2 :
Lorsque tu fais ça :
Citation:
Envoyé par carelha
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune activité ne correspond à vos critères de recherche.';
}
else {
echo '<span class="txtp"> il y a '.$nb_total.' réponse(s) correspondant à votre recherche</span> '; [/code]
tu vas affecter le lieu au résultat de ta recherche avec ton if (simple "=" est une affectation) car avec le $nb_total = mysql_fetch_array($resultat) on récupère un tableau avec toute les données du SELECT et non le nombre de résultat.
Utilise ton mysql_fetch_array pour afficher tes recherches tout simplement, mais ne modifies pas son contenu.
Tu devrais jeter un oeil sur les tutoriels MySQL pour plus de détails.