IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Pagination avec récupération de données


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut Pagination avec récupération de données
    Bonjour,

    Quelqu'un pourrait il m'aider à améliorer mon code svp?
    sur mon site de rencontre, après avoir rempli un formulaire fait de listes déroulantes, vous êtes redirigé vers la page de résultat avec les critères souhaités. Comme il y a plusieurs résultats, il y a plusieurs pages.
    ma pagination fonctionne mais quand je passe à la page deux, je n'ai aucun résultat car je ne sais pas comment récupérer les données que l'internaute à rentré et les intégrer à mon code de pagination pour que la page 2 3 4 etc m'affiche la suite des résultats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    $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
    $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
    $pays = isset($_POST['pays']) ? $_POST['pays'] : ( !empty($_GET['pays']) ? $_GET['pays'] : '') ;  // 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 statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND pays = '$pays'");
    $result = $req->fetch();
    $total = $result['total'];?>
     
    <?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 statut = '$statut' AND cheveux = '$cheveux' AND yeux = '$yeux' AND pays = '$pays' 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;
    ?>
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    3 possibilités :
    1. utiliser une session
    2. passer à chaque lien de pagination la liste des critères et le traiter à chaque changment de page
    3. une fois les critères définis, utiliser des champs cachés type="hidden" pour les passer d'une page à l'autre

    La meilleure solution et de loin c'est quand même la session.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 20
    Par défaut
    Merci pour ta réponse.

    Je veux bien partir sur une Session, j'ai scruté le net à propos de ça mais mais je sais pas trop comment mettre ça en place.
    Pourrais je avoir encore un peu d'aide svp?

    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Bonjour,

    je pense que ce tutoriel pourrait aider : http://antoine-herault.developpez.co...atique-en-php/.

Discussions similaires

  1. Lien Deski avec récupération de donnée
    Par askit dans le forum Deski
    Réponses: 1
    Dernier message: 09/02/2009, 19h45
  2. Réponses: 2
    Dernier message: 07/02/2008, 10h31
  3. récupération de données SQL avec C++
    Par krusty++ dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 27/03/2006, 15h10
  4. [MySQL] Problème récupération de données avec un SELECT DISTINCT
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/07/2005, 14h48
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo