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:
    9 182
    J'aime reçus:
    351
    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:
    9 182
    J'aime reçus:
    351
    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:
    9 182
    J'aime reçus:
    351
    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
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites Vendredi à 09:06
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022