Pagination sans passer par un bdd

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dudo, 16 Octobre 2008.

  1. dudo
    dudo WRInaute impliqué
    Inscrit:
    10 Janvier 2004
    Messages:
    581
    J'aime reçus:
    0
    Bonjour,

    Je voudrais savoir si il est possible de faire une pagination sans passer par une BDD et SQl, n'étant pas un expert en php.
    Je m'explique, si je dispose d'une liste de 100 descriptions
    que je mets dans un array
    $array=array(/*Le contenu à paginer*/);

    Est'il possible et surtout comment diviser cela en en 10 * 10 lignes puis
    de d'afficher cela en Page 1 - 2 - 3 - 4 etc.

    Je suppose que certains utilisent ce type de script mais je n'ai
    pas réussie a le trouver pour le moment

    ludo merci
     
  2. slek
    slek WRInaute discret
    Inscrit:
    15 Août 2005
    Messages:
    50
    J'aime reçus:
    0
    Perte des performances

    Le but de la pagination est de ne sélectionner que les données à afficher.

    Car avec ta méthode tu va sélectionner dans la BDD tous les éléments pour en afficher seulement 10 donc perte de l'intéret de la pagination donc des performances.

    En plus tu sera obligé de passer de page en page ton tableau (de la page 1 à la page 2 etc...)

    Extrait tu tes données à afficher d'une BDD ?
    Ou elles sont en dur dans ton code ($tableau={'description 1','description 2'....) ?
     
  3. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 260
    J'aime reçus:
    1
    c'est tout a fait possible en Ajax, mais tu t'y connais assez ? car c'est peut-etre plus compliqué de faire de l'ajax que faire une requete conditionnée à une base de données en php
     
  4. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    566
    J'aime reçus:
    0
    en php, c'est tout simple a faire avec une boucle for :)

    admettons que t'a page se nomme index.php?p=x (x est le numéro de la page à afficher)

    Code:
    // Nombre de résultats par page
    $nb = 10
    
    // On affiche les résultats
    $start = $i*$nb
    $end = $start+$nb
    for ( $i=$start; $i<=$end; $i++ ) {
        echo $array[$i];
        }
    En gros avec ca tu devrais pouvoir te débrouiller :)
     
  5. dudo
    dudo WRInaute impliqué
    Inscrit:
    10 Janvier 2004
    Messages:
    581
    J'aime reçus:
    0
    Re: Perte des performances

    Extrait tu tes données à afficher d'une BDD ? Si oui je peu t'expliquer facilement comment il faut faire ?


    Je crois que vais rester sur une solution de bdd, mais du coup
    il faut que je rentre mes infos sur une bdd. Peux tu me donner
    un exemple de code stye pour rentrer des news automatiquement
    dans une bdd ?
    Ensuite l'extraction cela je sais faire

    ludo
     
  6. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    566
    J'aime reçus:
    0
    Pour insérer des infos dans une BDD, ca se passe avec INSERT INTO...

    Mais je vois pas trop le rapport avec ta premiere question ;)
     
  7. slek
    slek WRInaute discret
    Inscrit:
    15 Août 2005
    Messages:
    50
    J'aime reçus:
    0
    Pour insérer tes données dans une table MYSQL

    mysql_query("INSERT INTO <table> (colonne1,colonne2) VALUES ('valeur1','valeur2')");

    Comme dit NxtGen pas grand rapport avec ta question !
     
  8. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 260
    J'aime reçus:
    1
    NxtGen> non, ta réponse n'est pas correcte, car quand tu passes en page 2, tu le récupère ou ton tableau vu qu'il n'y a pas de BDD. son tableau est crée à la volée dans la page, donc une fois que t as cliqué sur ton pager, t as plus de tableau ...

    lis bien la question : sans BDD / SQL
     
  9. NxtGen
    NxtGen WRInaute impliqué
    Inscrit:
    24 Octobre 2006
    Messages:
    566
    J'aime reçus:
    0
    il le sors d'ou son tableau ?
    si au départ il a un array('texteA', 'texteB', ...) qu'il a généré à la main par exemple, et qu'il est présent sur la page index.php avant le code que j'ai donné plus haut, ca fonctionne bien correctement
     
  10. slek
    slek WRInaute discret
    Inscrit:
    15 Août 2005
    Messages:
    50
    J'aime reçus:
    0
    Sans BDD la solution de NxtGen marchera parfaitement, sinon bien entendu au niveau performance il faut utiliser une solution avec BDD pour effectuer une simple requête plutôt que de charger toutes les infos à chaque page et parcourir un tableau !
     
  11. e-kiwi
    e-kiwi WRInaute accro
    Inscrit:
    23 Décembre 2003
    Messages:
    13 260
    J'aime reçus:
    1
    ah bien sur tout dépend de comment est généré le tableau ... dans ce cas la solution marche, il faudrait connaitre dans son cas d'ou il vient
     
  12. dudo
    dudo WRInaute impliqué
    Inscrit:
    10 Janvier 2004
    Messages:
    581
    J'aime reçus:
    0

    J'ai posé deux questions car en fait, je ne sais pas encore quelle solution choisir
    En fait, je parse un document xml, je controle le nombre de retour de réponses 100 maxi,
    mais lorsque j'interroge, je n'ai pas de variable pour limiter l'affichage par page.
    Donc soit j'insere ces données sur une bdd, puis je pagine, soit je pagine en utilisant un array.
    un exercice que je connais mal

    foreach($parser->document->categories[0]->category[0]->items[0]->product as $product){

    echo "Les infos que l'on me transmet";
     
  13. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    941
    J'aime reçus:
    0
    paginer avec un array, c'est pas un soucis au niveau performance, accéder à la page 10 ou 50 c'est pareil, pour peux que ton tableau soit construit comme il faut :
    Code:
    $infos = array();
    $infos[] = array( "champ1" => "valeur1", "champ2" => "valeur2", "champ3" => "valeur3", [...], "champn" => "valeurn");
    $infos[] = array( "champ1" => "valeur1", "champ2" => "valeur2", "champ3" => "valeur3", [...], "champn" => "valeurn");
    $infos[] = array( "champ1" => "valeur1", "champ2" => "valeur2", "champ3" => "valeur3", [...], "champn" => "valeurn");
    $infos[] = array( "champ1" => "valeur1", "champ2" => "valeur2", "champ3" => "valeur3", [...], "champn" => "valeurn");
    
    ensuite y a un moyen simple de conserver des infos de page en page : la session

    Code:
    session_start();
    
    if( isset($_SESSION['infos'] )
    {
       $infos = $_SESSION['infos'];
    
    }
    else
    {
       $infos = getInfosFromXML_or_BDD_or_File( ... );
        $_SESSION['infos'] = $infos;
    }
    
     
  14. slek
    slek WRInaute discret
    Inscrit:
    15 Août 2005
    Messages:
    50
    J'aime reçus:
    0
    Une solution

    1 - Parser ton XML et enregistrer au fur et a mesure tes données dans la BDD (INSERT INTO)


    2 - appel de la page :

    "index.php?page=1", "index.php?page=2"... (boucle en fonction du nombre de description pour afficher le nombre total de pages)


    3 - recup de la page à afficher :

    $start=$_GET['page']


    4 - recup dans la bdd des infos :

    SELECT info FROM description LIMIT $start,10


    Pas d'utilisation de session, on charge que les infos utiles, pas de parcours de tableau. Les BDD servent a structurer l'information, beaucoup plus performant qu'une gestion des données via tableau php
     
  15. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    941
    J'aime reçus:
    0
    je suis pas tout à fait d'accord sur le principe d'aller chercher les infos au fur et à mesure page en page.
    Un jour mon chef me dit tu connais l'algorithme du clou ?
    - je lui dis non c'est quoi ?
    il me répond c'est ce que tu as codé
    - je lui dis ah bon et c'est quoi l'algorithme du clou ?
    il me répond c'est d'aller chercher 1000 fois un clou alors que tu pourrais rapporter 1 fois 1000 clous
    [...]

    donc si tu sais pertinemment que tes internautes vont paginer, c'est beaucoup plus optimum de pré charger et de conserver quelques pages d'avance en session, après combien c'est un juste calcul à faire en tenant compte du poids des infos
     
Chargement...
Similar Threads - Pagination passer bdd Forum Date
Indexation, pagination : comment gérer les URL de tri des colonnes ? Crawl et indexation Google, sitemaps 24 Septembre 2019
Ancre sur pagination forum Développement d'un site Web ou d'une appli mobile 13 Août 2019
Pagination SEO : Google n'utilise plus link rel=next/prev Référencement Google 22 Mars 2019
WordPress Gros changement de pagination, comment gérer au mieux Crawl et indexation Google, sitemaps 13 Mars 2019
WordPress Référence des pages de paginations Référencement Google 27 Février 2019
Noindex pagination ou pas Débuter en référencement 20 Janvier 2019
URL canonique vers la page 1 pour la pagination ? Référencement Google 23 Novembre 2018
H1 en double pour page avec pagination Débuter en référencement 19 Novembre 2018
Pagination avec nombre de pages variable Référencement Google 29 Octobre 2018
Pagination et Seo Problèmes de référencement spécifiques à vos sites 23 Mai 2017
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice