[PHP] Aide sur une fonction

Résolu
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   -  
txiki Messages postés 6596 Date d'inscription   Statut Contributeur Dernière intervention   -
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.
A voir également:

1 réponse

multicite Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   14
 
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 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
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   Statut Membre Dernière intervention   14
 
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 6596 Date d'inscription   Statut Contributeur Dernière intervention   521
 
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   Statut Membre Dernière intervention   14
 
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 6596 Date d'inscription   Statut Contributeur Dernière intervention   521 > multicite Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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