PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 07-11-2011 02:01:31

zoulou
Membre
Inscription : 07-11-2011
Messages : 2

article84 affichage page par page

Bonjour à tous,

je suis en train de tester le Tuto  Flyingcow qui permet d'afficher les enregistrement d'une DB mysql  en définissant le nombre des dits enregistement

après pas mal d'heure de creusage de tete pour l'adapter (j'ai surtout oublié de créer le fichier Fonction.php)

je suis arrivé a ce que cela fonction ou presque

les boutons pages suivante et précedentes ne fonctionnent pas il me renvoient un Url pas correct

que faudrait il changer pour qu'il fonctionne

url correct avec les numéro de page (la ca fonctionne nickel après qque modif)   http://localhost/seb/index.php?page=results&limite=4

je mets le code du fichier fonctions.php que j'ai modifié

<?php

//récupération de $limite

    if(isset($_GET['limite']))

        $limite=$_GET['limite'];
    else   $limite=0;


function verifLimite($limite,$total,$nombre) {

    // je verifie si limite est un nombre.

    if(is_numeric($limite)) {

       
// si $limite est entre 0 et $total, $limite est ok

        // sinon $limite n'est pas valide.

        if(($limite >=0) && ($limite <= $total) && (($limite%$nombre)==0)) {

            // j'assigne 1 à $valide si $limite est entre 0 et $max

            $valide = 1;

        }    

        else {

            // sinon j'assigne 0 à $valide

            $valide = 0;

        }

    }

    else {

            // si $limite n'est pas numérique j'assigne 0 à $valide

            $valide = 0;

    }

// je renvois $valide

return $valide;

}

function displayNextPreviousButtons($limite,$total,$nb,$page) {
$limiteSuivante = $limite + $nb;
$limitePrecedente = $limite - $nb;
echo  '<table><tr>'."\n";
if($limite != 0) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="précédents">'."\n";
        echo  '<input type="hidden" value="'.$limitePrecedente.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
}
if($limiteSuivante < $total) {
        echo  '<td valign="top">'."\n";
        echo  '<form action="'.$page.'" method="post">'."\n";
        echo  '<input type="submit" value="suivants">'."\n";
        echo  '<input type="hidden" value="'.$page.'?page=results&limite='.$limiteSuivante.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
           
}
echo  '</tr></table>'."\n";
}

function affichePages($nb,$page,$total) {
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td ><a href = "'.$page.'?page=results&limite='.$limite.'">'.$numeroPages.'</a></td>'."\n";
        $limite = $limite + $nb;
        $numeroPages = $numeroPages + 1;
        $compteurPages = $compteurPages + 1;
            if($compteurPages == 10) {
            $compteurPages = 1;
            echo '<br>'."\n";
            }
        }
        echo '</tr></table>'."\n";
}
?>

Merci de m'expliquer ce qu'il faut modifier

bien à tous

Hors ligne

#2 07-11-2011 04:58:13

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : article84 affichage page par page

Bonjour,

Tout d'abord que dire d'un tel système^^. Moi perso je n'y avais jamais pensé, je l'avoue, mais je doute de sa pertinence lorsque l'a gestion d'un formulaire doit être intégré à la page car cela augmente le risque de conflits et sa complique inutilement mais ce n'est que mon avis.
Ensuite question lien de tes pages (puisque c'est cela qui ne fonctionne pas), il y a beaucoup de choses à dire.
- Au niveau navigation tu ne testes pas si la page courante est la dernière pour désactiver le next et idem pour la première pour désactiver le prev.
- Dans un contexte de gestion php seul, ta méthode oblige à passer à la fonction le lien de la page (tu as besoin de javascript pour ça donc pb). Or ta fonction ne prends en paramètre qu'un seul lien de page et elle sert à la fois pour un prev et un next, ce qui implique que la page précédente sera la même que la suivante.
- Pour corriger ce problème dans la construction du lien de ta page, une solution serait d'utiliser $page comme constante de lien par ex $page='livrep'; et si $nb corresponds au numéro de la page suivante, tu pourrais faire un truc du genre


// pour la suivante
$next=$nb+1;
echo  '<form action="'.$page.$next.'.php" method="post">'."\n";
// pour la précédente
$prev=$nb-1;
echo  '<form action="'.$page.$prev.'.php" method="post">'."\n";
 

Voilà pour l'essentiel
PS: Pour reprendre une expression appréciée par notre cher MK, l'exercice relève de la capilotraction wink
++

Dernière modification par Jc (07-11-2011 05:03:10)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 07-11-2011 08:57:33

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : article84 affichage page par page

pourquoi tant de code ?????????????????
après on s'étonne que vous vous perdiez roll
enfin moi, j'm'y perd hmm


function verifLimite($limite,$total,$nombre) {
 return (is_numeric($limite) &&  $limite >=0 & $limite <= $total && $limite%$nombre==0) ? 1 :0 ;
}
 

a++

Hors ligne

Pied de page des forums