Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Pagination

Discussion dans 'Développement web' créé par JoyeuxBranleur, 2 Juillet 2003.

Modérateurs: Nephou
  1. JoyeuxBranleur

    JoyeuxBranleur Membre émérite

    Inscrit:
    19 Juillet 2001
    Messages:
    667
    J'aime reçus:
    4
    En fait ce que je veux faire est tt simple, je veux afficher un certain nombre de fiche lors d'une requete sql.
    Je veux que si j'ai bcp de fiche ds ma table il ne les affiche que par 10 avec un bouton suite, retour et le numero des pages (un peu comme les forums de macg) mais je n'arrive pas a faire le script.
    J'en ai récupérer un sur asp-php.net mais il ne marche pas, j'ai pu un peu le modifier mais c'est pas top.
    si qqn pouvait m'aider, c'est vachement important!
     
  2. JoyeuxBranleur

    JoyeuxBranleur Membre émérite

    Inscrit:
    19 Juillet 2001
    Messages:
    667
    J'aime reçus:
    4
    Je me répond a moi-même, j'ai trouvé une solution mais j'attaque deux fois ma base mysql, ds la premiere je compte le nbre de fiche et dans la seconde j'utilise la fonction limit de sql.
    J'ai peur que ce soit un peu lourd sur certaines pages d'attaquer plusieurs fois la base, je cherche donc un moyen qui fonctionne pour n'attaquer qu'une seule fois la base et donc pas utiliser la fonction limit.
    peut être que je m'explique mal? mais si vous pouviez m'aider
     
  3. Dark Templar

    Dark Templar Ex-vénérable sage
    Club MacG

    Inscrit:
    24 Avril 2002
    Messages:
    16 893
    J'aime reçus:
    1 044
    Tout d'abord, mettre en place un petit compteur :
    $compteur = 0;

    Dans mes exemples, $connexion sera tes paramètres de connexion (avec ou sans fonctions d'erreurs, ça dépend de ton code).

    Ensuite, deux possibilités :
    <ul type="square"> [*] Une boucle while de ce type avec if
    while ($truc = mysql_fetch_object($connexion))
    {
    if ($compteur &lt; 10)
    { instructions
    $compteur++;
    }
    }
    Si on atteint 10, il ne se passe rien, donc la deuxième partie est vide.
    tu peux mettre n'importe quel nom à "$truc", ça n'a pas d'importance

    [*] Une boucle for, que je n'utilise pas trop donc que je ne connais pas, mais qui doit ressembler à ça :
    while ($truc = mysql_fetch_object($connexion))
    {
    for ($compteur = 0; $compteur &lt; 10; $compteur++)
    { instructions
    }
    }
    [/list]

    La boucle for est un peu plus simple ici, je ne sais pas si ce sera pareil en vrai.

    Un deernier petit conesil : ne chope pas de scripts sur des sites, ça va te pourrir la vie et tu auras pleins de trucs inutiles, mieux vaut faire simple et tout comprendre [​IMG]

    Attention : la boucle avec for n'était pas bonne je l'ai éditée, j'espère que personne n'a lu au mauvais moment.
     
  4. JoyeuxBranleur

    JoyeuxBranleur Membre émérite

    Inscrit:
    19 Juillet 2001
    Messages:
    667
    J'aime reçus:
    4
    Y a juste un pb ( a mon avis) avec ton code, là tu affiche les x premières pages, mais pour afficher les x suivantes? tu lui dit qd il doit s'arreter de faire la boucle mais pas qd il doit la commencer! Et pour y accéder?
    Ce que j'ai fait moi ca donne a peu près:

    premiere connexion ou on compte le nbre de fiche trouvé
    .....
    deuxieme connexion avec la fonction limit
    {mes instructions...}

    qq script permettant d'afficher les liens suites, les pages et retour avec une variable qui permet de changer les valeurs de limit qd on clique sur la page suivante.

    Mon pb est est ce que le fait qu'il y ait 2 connexions ne va pas ralentir l'affichage de ma page,
    sur asp-php.net y avait un script censé faire la mêm chose avec une connexion mais j'ai du le modifie (je ne vois pas bien comment il aurait pu marché).
     
  5. Dark Templar

    Dark Templar Ex-vénérable sage
    Club MacG

    Inscrit:
    24 Avril 2002
    Messages:
    16 893
    J'aime reçus:
    1 044
    Excuse moi, je n'avais pas bien lu.
    Dans ce cas, tu fais juste une fonction avec la partie LIMIT de mySQL.
    Genre tu passes 2 paramètres avec php (en URL ou en session), un début et un longueur, que tu inséreras dans ta fonction limite.
    Et pour les liens, ben, même URL avec $début - 10 pour précédent et $début + 10 pour suivant.

    Si t'as pas compris, j'essayerais d'être plus clair demain.
     
  6. JoyeuxBranleur

    JoyeuxBranleur Membre émérite

    Inscrit:
    19 Juillet 2001
    Messages:
    667
    J'aime reçus:
    4
    C'est ce que j'ai fait, mais si je ne me connecte qu'une foi avec la fonction limit, je n'ai pas le nbre total de fiche qui apparait, j'ai donc du faire une premiere requete sql sans limit et une seconde avec limit, ca ca marche mais je me demandais si ca ne serai pas un peu long.
    Sur le site asp-php.net il donnait une methode (qui ne fonctionne pas) qui permet de se connecter qu'une fois avec comme tu disais plus haut un compteur mais ils avait l'air d'avoir un moyen de ne pas commencer a la premiere fiche.
     
  7. Dark Templar

    Dark Templar Ex-vénérable sage
    Club MacG

    Inscrit:
    24 Avril 2002
    Messages:
    16 893
    J'aime reçus:
    1 044
    Ben, si tu veux le nombre total, je vois pas d'autre solution, désolé.
    Mais t'en as vraiment besoin ?
    Et puis ça doit pas être très lourd, la première requête sert pas à grand chose.
     
  8. Dark Templar

    Dark Templar Ex-vénérable sage
    Club MacG

    Inscrit:
    24 Avril 2002
    Messages:
    16 893
    J'aime reçus:
    1 044
    Est-ce que tu as utilisé "COUNT (nom_de_colonne)" avec ta requête SELECT ?
    c'est ce qui me paraît le plus simple.
     
  9. JoyeuxBranleur

    JoyeuxBranleur Membre émérite

    Inscrit:
    19 Juillet 2001
    Messages:
    667
    J'aime reçus:
    4
    Je n'ai pas essayé le count, mais pour afficher le nombre de page, il faut savoir combine on a de fiche, or si tu mais un limit 0,10 il ne te trouve que 10 fiches avec le mysql_num_rows donc il n'est pas possible de mettre en dessous le nombre de page.
    Je vais laisser de coté ce pb (j'ai une solution qui marche), il faut que je travaille sur mon pb de gestion des cookies (voir autre post) si tu t'y connais la dedans...
     
Modérateurs: Nephou
Chargement...