Forum Programmation.php Affichage requete multi page

Posté par  .
Étiquettes : aucune
0
21
avr.
2005
Bonjour à tous !
Bon, je souhaiterais afficher les résultats d'une de mes requetes Mysql sur plusieurs pages à la google.
En gros :
Via un moteur de recherche (qui est sur mon site) on obtient 100 réponses pour une recherche, souhaitant afficher que 10 résultat par pages, je voudrais pour générer 10 pages d'affichage.
Comment faire pour cela, sachant que je compte déjà le nb de résultat fait pour une requete ????

Merci à tous, et please soyez clair car j'ai trouvé des pseudo tuto mais qui ne marche pas !!!!!!

P.S : Est il possible de le faire via une méthode POST de formulaire pour faire plus propre ?

Merki !
  • # post | get

    Posté par  . Évalué à 2.

    bah ton formulaire, au lieu de lui foutre method="get", ou de rediriger vers une page avec les parametres dans l'url, tu fais simplement
    <form method="post" action="page de traitement.php">
    <!-- formulaire -->
    </form>

    et dans ta page de traitement.php, tu récupères les valeurs non pas par $variable = $_GET["truc"], mais par $variable = $_POST["truc"]

    oublie pas de vérifier si le "truc" en question existe bien :
    IF (isset($_POST["truc"])) $variable = $_POST["truc"];
    ELSE $variable = valeur_par_défaut;
  • # Programmation PHP

    Posté par  . Évalué à 1.

    <?php
    /*---------------------------------------------------------------------------------------------------------------*/
    /*---------------------------------------------------------------------------------------------------------------*/

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

    /*---------------------------------------------------------------------------------------------------------------*/
    /*---------------------------------------------------------------------------------------------------------------*/

    function displayNextPreviousButtons($limite,$total,$nb,$page) {
    $limiteSuivante = $limite + $nb;
    $limitePrecedente = $limite - $nb;
    echo '<table><tr>'."\n";
    if($limite != 0) {
    echo '<td valign="top">'."\n";
    echo '<form action="'.$page.'?page=compte&limite='.$limite.'" 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.'?page=compte&limite='.$limite.'" 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) {

    $nbpages=ceil($total/$nb);
    $numeroPages = 1;
    $compteurPages = 1;
    $limite = 0;
    echo '<table border = "0" ><tr>'."\n";
    while($numeroPages <= $nbpages) {
    echo '<td ><a href = "'.$page.'?page=compte'">'.$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'espère que cela pourra t'aider -------------
    bonne journée
  • # multi-pages

    Posté par  . Évalué à 2.

    pour commencer, te faut récupérer le nombre de réponses que t'as. Ensuite, en fonction de ca, tu peux trouver combien de pages tu auras ((nombre de résultat / résultats par page) + 1). à partir de ce moment la, selon la page sur laquelle tu es, tu peux spécifier des limits et des offsets dans tes requetes mysql. limit spécifie combien de tuples ramener, offset à partir de ou les prendres (c'est donc bien sur mieux de trier tes résultats, même sur une variable à la con). tu as donc ton select, et tu sais quelle page est demandée. à partir de la, c'est assez simple.
    // on suppose que $requete contient déja select, from, et where
    // $page contient la page demandée
    $limit = 10; // dans ton cas
    $offset = ($page-1)*10 // commencer à 0 pour la page 1
    $requete .= "LIMIT ".$limit." OFFSET ".$offset.";";
    
    // ici, tu devrais avoir un truc du genre pour ta requete :
    // SELECT * FROM table WHERE (champ LIKE '%".$variable."%') ORDER BY ID LIMIT 40 OFFSET 20
    // si tu veux 20 tuples par page, et que tu demandes la 2eme page
    
    note que mysql reconnait également la syntaxe LIMIT $offset,$limit, même si je trouve LIMIT $limit OFFSET $offset préferable pour des questions de compliance (franglais powaa) avec d'autres sgbd... Et je vote qu'il faut rajouter le tag < br > dans la liste des tags utilisables... ca chie toute la mise en page ici :(
  • # phpdebutant

    Posté par  (site web personnel) . Évalué à 1.

    Très bonne référence ici :

    http://www.phpdebutant.org/article84.php(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.