Rechercher : dans
Par :

[PHP] Aide sur une fonction

Dernière réponse le 14 fév 2007 à 12:35:53 txiki, le 11 fév 2007 à 18:29:39 
 Signaler ce message aux modérateurs

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.
Configuration: Windows XP
Firefox 1.5.0.9

Meilleures réponses pour « [PHP] Aide sur une fonction » dans :
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Affichage de texte sur le navigateur VoirLe but de PHP est de permettre la création de pages web dynamiques, ainsi son but premier est de pouvoir envoyer des données au navigateur. Les trois fonctions standards PHP fournit 3 fonctions permettant d'envoyer du texte au navigateur. Ces...
PHP - Les cookies et les en-têtes HTTP VoirLes en-têtes HTTP Lors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une...

1

multicite, le 13 fév 2007 à 22:31:03

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

Répondre à multicite

2

txiki, le 13 fév 2007 à 23:21:40

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 :-(


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

Répondre à txiki

3

multicite, le 13 fév 2007 à 23:31:48

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

Répondre à multicite

4

txiki, le 13 fév 2007 à 23:58:55

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.

Répondre à txiki

5

multicite, le 14 fév 2007 à 08:17:10

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

Répondre à multicite

6

 txiki, le 14 fév 2007 à 12:35:53

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 ?
;-))
Le bonheur est la seule chose que l'on peut donner sans l'av­oir.

Répondre à txiki
Collection CommentÇaMarche.net