1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

Probleme de pagination

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par mantraax, 7 Mars 2016.

  1. mantraax
    mantraax Nouveau WRInaute
    Inscrit:
    3 Novembre 2015
    Messages:
    9
    J'aime reçus:
    0
    Bonjour,

    y'aurait il un programmeur php expérimenté qui pourrait m'aider svp? car ca fait une semaine que je cherche sans trouver.
    J'ai un formulaire de plusieurs choix qui redirige vers la page de résultat.
    je me connecte à la BDD, je calcule le nombre total de réponses, je filtre avec mes requêtes qui vont bien et ensuite j'affiche.
    Jusque là tout va bien mais quand je clique sur la page suivant, il n'y a plus aucun résultat qui s'affiche. Alors je crois s'avoir qu'il faut utiliser $_cookies ou $_session pour pouvoir enregistrer le choix de l'internaute et le transmettre de page en page mais je galère grave! je ne sais pas écrire le code convenablement. Merci d'avance pour votre aide.

    Code:
    $agemin = isset($_POST['agemin']) ? $_POST['agemin'] : ( !empty($_GET['agemin']) ? $_GET['agemin'] : '') ;  // récupération des données du champs de recherche
    $agemax = isset($_POST['agemax']) ? $_POST['agemax'] : ( !empty($_GET['agemax']) ? $_GET['agemax'] : '') ;  // récupération des données du champs de recherche
    $taimin = isset($_POST['taimin']) ? $_POST['taimin'] : ( !empty($_GET['taimin']) ? $_GET['taimin'] : '') ;  // récupération des données du champs de recherche
    $taimax = isset($_POST['taimax']) ? $_POST['taimax'] : ( !empty($_GET['taimax']) ? $_GET['taimax'] : '') ;  // récupération des données du champs de recherche
    $poimin = isset($_POST['poimin']) ? $_POST['poimin'] : ( !empty($_GET['poimin']) ? $_GET['poimin'] : '') ;  // récupération des données du champs de recherche
    $poimax = isset($_POST['poimax']) ? $_POST['poimax'] : ( !empty($_GET['poimax']) ? $_GET['poimax'] : '') ;  // récupération des données du champs de recherche
    $enfant = isset($_POST['enfant']) ? $_POST['enfant'] : ( !empty($_GET['enfant']) ? $_GET['enfant'] : '') ;  // récupération des données du champs de recherche
    $statut = isset($_POST['statut']) ? $_POST['statut'] : ( !empty($_GET['statut']) ? $_GET['statut'] : '') ;  // récupération des données du champs de recherche
    $cheveux = isset($_POST['cheveux']) ? $_POST['cheveux'] : ( !empty($_GET['cheveux']) ? $_GET['cheveux'] : '') ;  // récupération des données du champs de recherche
    $yeux = isset($_POST['yeux']) ? $_POST['yeux'] : ( !empty($_GET['yeux']) ? $_GET['yeux'] : '') ;  // récupération des données du champs de recherche
    $ville = isset($_POST['ville']) ? $_POST['ville'] : ( !empty($_GET['ville']) ? $_GET['ville'] : '') ;  // récupération des données du champs de recherche
    
    
    ?>
    
    <?php
    $perPage = 12; // resultats max par page
    
    $req = $db->query("SELECT COUNT(*) AS total  FROM profils WHERE enfant = '$enfant' AND age BETWEEN (curdate() - interval '$agemax' year) AND (curdate() - interval '$agemin' year) AND taille BETWEEN '$taimin' AND '$taimax' AND poids BETWEEN '$poimin' AND '$poimax' AND statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND ville = '$ville'");
    $result = $req->fetch();
    $total = $result['total'];?>
    
    <div id="box-right-catalogue"> 
    
    <?php $nbPage = ceil($total/$perPage);
    
    if(isset($_GET['page']) && !empty($_GET['page']) && ctype_digit($_GET['page']) == 1){
        if ($_GET['page'] > $nbPage) {
          $page = $nbPage;
        }else{
          $page = $_GET['page'];
        }
    
    }else{
    
      $page = 1;
    }
    
    $first = ($page-1)*$perPage;
    
    
    $reponse = $db->query("SELECT * FROM profils WHERE enfant = '$enfant' AND age BETWEEN (curdate() - interval '$agemax' year) AND (curdate() - interval '$agemin' year) AND taille BETWEEN '$taimin' AND '$taimax' AND poids BETWEEN '$poimin' AND '$poimax' AND statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND ville = '$ville' ORDER BY age DESC LIMIT $first, $perPage" );
    while ($donnees = $reponse->fetch())
    {
    ?>
    
      <div class="box-cadre-catalogue">
    <img src="profils/<?php echo $donnees['photo']; ?>" class="photo1-catalogue" width="219" height="330">
    <?php echo "<a href='".$donnees['lien']."'>"; ?> <img src="images/1cadre.png"class="cadre1-catalogue"></a>
    <p class="prenom-catalogue"><?php echo $donnees['prenom']; ?> 
                                <?php  echo ageCalculator($donnees['age']);?> ans</p>
                                    
    
    </div>
    
    <?php }  ?>  
    
    <!-- *********** NUMÉROS DE PAGES ************* NUMÉROS DE PAGES ************* NUMÉROS DE PAGES **************-->
    
    <div class="numeros-pages">
    <ul id="pagination">
    
    <?php
    
    if ($page > 1):
        ?><li><a href="?page=<?php echo $page - 1; ?>">Précédent</a></li> <?php
    endif;
    
    for ($i = 1; $i <= $nbPage; $i++):
          if($i == $page){
        ?><li class="active"><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li> 
        <?php
      }
    
      else{
        ?>
            <li><a href="?page=<?php echo $i; ?>"><?php echo $i; ?></a></li><?php  }
    
    endfor;
    if ($page < $nbPage):
        ?> <li><a href="?page=<?php echo $page + 1 ;?>">Suivant</a></li><?php
    endif;
    ?>
    </ul>
    </div>
    </div>
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 809
    J'aime reçus:
    242
    Il faut faire un Post-Redirect-Get: https://fr.wikipedia.org/wiki/Post-Redirect-Get

    - Post: un form en method="post" (comme tu as actuellement).
    - Redirect: ensuite tu construis une URL avec les mêmes paramètres pour faire une redirection.
    - Get: liste des résultats, avec pagination &page=xxx

    Tu peux utiliser directement $_REQUEST qui lit le $_GET et $_POST.

    Edit: ben en fait c'est déjà ce que tu fais, donc tu dois juste construire les liens href="?page=xxx" avec tous les paramètres $_GET (http_build_query())
     
  3. mantraax
    mantraax Nouveau WRInaute
    Inscrit:
    3 Novembre 2015
    Messages:
    9
    J'aime reçus:
    0
    Merci pour ta réponse,

    Alors dans mon lien qui est actuellement comme ceci :
    Code:
    <li><a href="?page=<?php echo $page + 1 ;?>">Suivant</a></li>
    je dois écrire ceci:
    Code:
    <li><a href="<?php $_GET['agemin']['agemax']['taimin']['taimax'](ect...)?>?page=<?php echo $page + 1 ;?>">Suivant</a></li>
    C'est bien ça?
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 809
    J'aime reçus:
    242
    Plutôt du genre:
    PHP:
    <span class="syntaxhtml"><span class="syntaxdefault"><?php<br />$page </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $page </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'?'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> http_build_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">compact</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'agemin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'agemax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'taimin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'taimax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'poimin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'poimax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'enfant'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'statut'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'cheveux'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'yeux'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'ville'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'page'</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'&amp;'</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">?><br /></span><a href="<span class="syntaxdefault"><?php echo $query</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> ?></span>">Suivant</a></span>
     
  5. mantraax
    mantraax Nouveau WRInaute
    Inscrit:
    3 Novembre 2015
    Messages:
    9
    J'aime reçus:
    0
    Merci infiniment, ça marche, j'étais bloqué depuis une semaine.
    ça fait plaisir de se faire aider par des gens vraiment compétent.

    Merci 1000 fois!
     
  6. mantraax
    mantraax Nouveau WRInaute
    Inscrit:
    3 Novembre 2015
    Messages:
    9
    J'aime reçus:
    0
    Salut Spout,

    Pourrais tu me donner un dernier coup de pouce svp?

    J'ai adapté le code pour toute la pagination mais il semblerait qu'il y ait un conflit entre les $page. ($page = page - 1 , $page = $i et $page = + 1) je les ai donc nommé différemment pour contourner le problème mais cela ne marche pas. D'où vient le problème?
    Merci

    Code:
    <div class="numeros-pages">
    <ul id="pagination">
    
    
    <?php
    
    if ($page > 1):
        ?><li><?php
    $page = $page - 1;
    $query = '?' . http_build_query(compact('agemin', 'agemax', 'taimin', 'taimax', 'poimin', 'poimax', 'enfant', 'statut', 'cheveux', 'yeux', 'ville', 'page'), '', '&amp;');
    ?>
    <a href="<?php echo $query; ?>">Precedent</a></li> <?php
    endif;
    
    
    
    for ($i = 1; $i <= $nbPage; $i++):
          if($i == $page){
        ?><li class="active"><a><?php echo $i; ?></a></li> 
        <?php
      }
    
      else{
        ?>
            <li><?php
    $page = $i;
    $query = '?' . http_build_query(compact('agemin', 'agemax', 'taimin', 'taimax', 'poimin', 'poimax', 'enfant', 'statut', 'cheveux', 'yeux', 'ville', 'pagemid'), '', '&amp;');
    ?>
    <a href="<?php echo $query; ?>"><?php echo $i; ?></a></li><?php  }
    
    
    
    endfor;
    if ($page < $nbPage):
        ?> <li><?php
    $page = $page + 1;
    $query = '?' . http_build_query(compact('agemin', 'agemax', 'taimin', 'taimax', 'poimin', 'poimax', 'enfant', 'statut', 'cheveux', 'yeux', 'ville', 'page'), '', '&amp;');
    ?>
    <a href="<?php echo $query; ?>">Suivant</a></li><?php
    endif;
    ?>
    </ul>
    </div>
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 809
    J'aime reçus:
    242
    Alors si t'as un conflit tu dois faire dans ta boucle:
    PHP:
    <span class="syntaxdefault">for </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$i </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i </span><span class="syntaxkeyword"><=</span><span class="syntaxdefault"> $nbPage</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">++):<br /></span><span class="syntaxdefault">    $query </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'?'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> http_build_query</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">array_merge</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">compact</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'agemin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'agemax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'taimin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'taimax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'poimin'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'poimax'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'enfant'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'statut'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'cheveux'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'yeux'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'ville'</span><span class="syntaxkeyword">),</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">'page'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> $i</span><span class="syntaxkeyword">]),</span><span class="syntaxdefault"> </span><span class="syntaxstring">''</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">'&amp;'</span><span class="syntaxkeyword">);<br />endfor;</span><span class="syntaxdefault"></span>
    Regarde la doc de compact: http://php.net/manual/en/function.compact.php
    Vu que c'est $_GET['page'], tu dois avoir une clef "page" passée à http_build_query() pour générer le "&amp;page=xxx" à la fin.
     
  8. mantraax
    mantraax Nouveau WRInaute
    Inscrit:
    3 Novembre 2015
    Messages:
    9
    J'aime reçus:
    0
    Merci Spout tu es génial!

    Tout fonctionne nickel

    Encore merci
     
Chargement...
Similar Threads - Probleme pagination Forum Date
Probleme supression pagination dans wordpress Développement d'un site Web ou d'une appli mobile 9 Mai 2017
Problème de pagination Développement d'un site Web ou d'une appli mobile 18 Juillet 2014
Problème pagination et balise title/description Débuter en référencement 27 Mars 2013
Search Console Premier référencement et problèmes Débuter en référencement Lundi à 00:37
Test d'optimisation mobile : Problèmes de chargement de la page Débuter en référencement Dimanche à 13:29
Problème sur une source Referral Googleads.g.doubleclick.net Google Analytics 7 Novembre 2019
Problème suite à redirection 301 URL Rewriting et .htaccess 4 Novembre 2019
Probléme avec un flux rss Demandes d'avis et de conseils sur vos sites 4 Novembre 2019
Probleme Mise en Cache URL Rewriting et .htaccess 31 Octobre 2019
petit problème booléen... Le café de WebRankInfo 22 Octobre 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice