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 759
    J'aime reçus:
    234
    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 759
    J'aime reçus:
    234
    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 759
    J'aime reçus:
    234
    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
Problème avec boite mail OVH e-commerce Hier à 18:39
Search Console Problème d'ergonomie mobile sur GSC avec les URL distinctes Problèmes de référencement spécifiques à vos sites Hier à 18:00
Probleme avec le crawl Mobile sur Search Console Crawl et indexation Google, sitemaps Samedi à 10:00
Problème avec ...html dans un mail Administration d'un site Web 9 Septembre 2019
Problème de bot click AdSense 23 Août 2019
Problème échappement code HTML Développement d'un site Web ou d'une appli mobile 17 Août 2019
Problème de caractères dans l'outil d'analyse des balises h1 h2 h3 Rédaction web et référencement 4 Août 2019
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice