8791 sujets

Développement web côté serveur, CMS

Salut la communautée Smiley cligne

Voila j'ai une fonction de pagination sur mon site, et en fait je possède enomement de résultat dans ma bdd du coup il maffiche plus de 900 pages .... xD

Voici le code de ma fonction :


function pagination($url,$parpage,$nblignes,$nbpages){
    $html = precedent($url,$parpage,$nblignes);
    if ($nbpages > 1) {
        for ($i = 0 ; $i < $nbpages ; ++$i) {
	        $limit = $i * $parpage;
	        $limit = $limit.",".$parpage;
	        $html .= "<a style='margin-top:50px;' href=".$url.$limit.">".($i + 1)."</a> " ;
        }
	} else {
        $html .= "";
    }
    $html .= suivant($url,$parpage,$nblignes);
    return $html;
}
function validlimit($nblignes,$parpage,$sql){
    if (isset($_GET['limit'])) {
        $pointer = preg_split('[,]', $_GET['limit']);
        $debut = $pointer[0];
        $fin = $pointer[1];
        if (($debut >= '0') && ($debut < $nblignes) && ($fin == $parpage)) {
            $limit = $_GET['limit'];
            $sql .= " LIMIT ".$limit.";";
            $result = mysql_query($sql);
        } else {
            $sql .= " LIMIT 0,".$parpage.";";
            $result = mysql_query($sql);
        }
    }else {
        $sql .= " LIMIT 0,".$parpage.";";
        $result = mysql_query($sql);
    }
    return $result;
}
function precedent($url,$parpage,$nblignes){
    if ($nblignes > $parpage) {
		if (isset($_GET['limit'])) {
            $pointer = preg_split('[,]', $_GET['limit']);
            $pointer = $pointer[0]-$parpage;
            if ($pointer < 0) {
                $precedent = "";
            }else {
                $limit = "$pointer,$parpage";
                $precedent = "<a  href=".$url.$limit.">< Précédent</a> ";
            }
        }else {
            $precedent = "";
        }
    }else {
        $precedent = "";
    }
    return $precedent;
}

function suivant($url,$parpage,$nblignes){
    if ($nblignes > $parpage) {
        if (isset($_GET['limit'])) {
            $pointer = preg_split('[,]', $_GET['limit']);
            $pointer = $pointer[0] + $parpage;
            if ($pointer >= $nblignes) {
                $suivant = "";
            }else {
				$limit = "$pointer,$parpage";
				$suivant = "<a class='pagination' href=".$url.$limit.">Suivant ></a>";
            }
        }
        if (@$_GET['limit']== false) {
            $suivant = "<a href=".$url.$parpage.",".$parpage.">Suivant ></a>";
        }
    }else {
        $suivant = "";
    }
    return $suivant;
}


je vous met un screen du "probleme" que cela pose :

http://img4.hostingpics.net/thumbs/mini_774789Capture.png


je souhaiterai que sa affiche plutot : 1 2 3 4 5 ... 900

Enfin vous m'avez compris

En vous remerciant d'avance ! Smiley lol
Eh bien ça en fait des pages ... le seul cas sur le net que j'ai vu était un topic du forum magic maman .... mais bon au bout de 300 pages le topic a été fermé et un autre recréé ...

Déjà est-ce que c'est normal d'avoir autant de pages ? c'est franchement énorme ...

Si c'est une recherche dans ta BDD qui te donne autant de réponse il faudrait peut-être obliger l'utilisateur à entrer des critères permettant d’alléger le résultat.

Sinon eh bien il faut que tu t'inspire des forums justement , stocke le nombre de pages et le numéro de la page courante, affiche les 5 numéros avant , les 5 après , les liens page suivante , page précédente, première page et dernière page.