[PHP] Aide sur une fonction

Résolu/Fermé
txiki
Messages postés
3928
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
6 avril 2022
- 11 févr. 2007 à 18:29
txiki
Messages postés
3928
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
6 avril 2022
- 14 févr. 2007 à 12:35
Bonsoir a tous les as du php !
J'ai un souci avec une fonction php qui consiste a afficher des liens vers des pages sous forme de (comme sur CCM).
J'ai une table de 380 enregistrements que je voudrai afficher en limitant a 10 ou 15 lignes par écran.
De plus, il y a un bouton suivant qui s'affiche (tant qu'il y a des enregistrements) et à partir de la seconde page le bouton Précédent doit s'afficher en plus.

Quelqu'un peut-il me regarder ce code et le corriger (en mettant un commentaire sur ce qu'il touche pour que je puisse voir ce que j'ai oublié.
En effet, les n° et le bouton s'affichent bien mais en cliquant dessus on revient en début d'écran (comme si on mettait une # pour remonter en haut des pages).

J'ai un autre Pb à savoir que la liste ne commence pas où elle devrait mais on verra plus tard.
Merci d'avance pour vos explications.

// fonction qui affiche les liens sous forme de n° vers les pages a afficher
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.'?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";
}
**********************// j'ai de gros doutes ici
//récupération de $limite
    if(isset($_GET['limite'])) 

        $limite=$_GET['limite'];
    else   $limite=0;
**********************// jusqu'ici
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;
}
?>


Le bonheur est la seule chose que l'on peut donner sans l'avoir.

1 réponse

multicite
Messages postés
47
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
22 juillet 2009
14
13 févr. 2007 à 22:31
Salut,

Le problème n'a pas l'air d'etre dans cette partie de code.

Mais le symptome semble indiquer que tu recharges la meme page (c'est pour cela que tu reviens au début).

Que fais tu de ta variable $limite que tu récupères avec $_GET['limite'] ?

ec
0
txiki
Messages postés
3928
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
6 avril 2022
506
13 févr. 2007 à 23:21
Bonsoir multicite et merci pour ta réponse,
? ? ? je ne comprends pas bien ce que tu veux dire.
Tu sais je ne suis pas un as du php, bien au contraire :-(

0
multicite
Messages postés
47
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
22 juillet 2009
14
13 févr. 2007 à 23:31
Je pense que cette partie de code qui crée les liens est bonne.

Par contre tu ne donnes pas la partie qui permet d'afficher la page numéro x ? Comment fais tu ?

Si tu ne l'as pas écrite... le problème est là !!! ;-)

ec
0
txiki
Messages postés
3928
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
6 avril 2022
506
13 févr. 2007 à 23:58
Voici les 3 fonctions (require fonctions) qui s'appelle fonctions.php.
Il n'y a que ça dans cette page.
<?
function displayNextPreviousButtons($limite,$total,$nb,$page) { // fonction qui affiche boutons Précédent  Suivant
$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="'.$limiteSuivante.'" name="limite">'."\n";
        echo  '</form>'."\n";
        echo  '</td>'."\n";
            
}
echo  '</tr></table>'."\n";
}

function affichePages($nb,$page,$total) { // fonction qui affiche les liens vers les pages
        $nbpages=ceil($total/$nb);
        $numeroPages = 1;
        $compteurPages = 1;
        $limite  = 0;
        echo '<table border = "0" ><tr>'."\n";
        while($numeroPages <= $nbpages) {
        echo '<td ><a href = "'.$page.'?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";
}

//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;

}

?>
Le Pb se trouve alors ici ! mais je ne vois (faut dire que je débute et qu'à force de regarder.....

Merci encore.


Le bonheur est la seule chose que l'on peut donner sans l'avoir.
0
multicite
Messages postés
47
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
22 juillet 2009
14
14 févr. 2007 à 08:17
Salut,

Ce qu'il faudrait que tu nous montres c'est la partie qui appelle ces fonctions.

Comment fais tu ton SELECT dans la base pour choisir les enregistrements à afficher ? Comment est construite ta requete ? Comment appelles tu les fonctions affichePages, displayNextPreviousButtons ?

Je pense que l'erreur est plutot dans cette autre partie.

ec
0
txiki
Messages postés
3928
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
6 avril 2022
506 > multicite
Messages postés
47
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
22 juillet 2009

14 févr. 2007 à 12:35
Salut multicite et merci,
Je suis au bureau donc je ne peux pas t'envoyer cette partie de code que tu voudrais voir.
Alors ce soir ?
;-))
0