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

PHP & Base de données Discussion :

pagination renvoi même resultat sur toutes les pages [MySQL]


Sujet :

PHP & Base de données

Vue hybride

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut pagination renvoi même resultat sur toutes les pages
    Bonjour,

    J'ai repris un système de pagination trouvé sur ce site il marche bien et je l'ai combiné avec mon code pour afficher mes films donc 8 par pages.

    A priori le script fonctionne bien qu'il me trouve 32 pages cela doit venir du fait qu'il compte mes films au total et ne differencis pas par numero de categorie déjà ca fait un problème ^^

    Le second soucis c'est qu'il m'affiche non pas 8 éléments par page comme convenu mais la totalité de mes films de ma catégorie choisie et ce sur toutes les pages oO

    Si qqun peut m'aider voici le code de ma page

    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
    <?php
    //Connexion à la base de données
     
    $messagesParPage=8; //Nous allons afficher 8 messages par page.
     
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM films'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="films.php?page='.$i.'&numcatfilm='.$_GET['numcatfilm'].'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    ?>
               </td>
              </tr>
             </table>
     
             <table>
              <tr>
               <td>
               <?php
                  $nb = 3; //nbre de film par ligne
                  $sql2 = "SELECT *
                  FROM films
                  WHERE num_cat_film = ".(int)$_GET['numcatfilm'];
                  $result2 = mysql_query($sql2) or die ('Erreur SQL : impossible d\'effectuer la requête : <br />'.$sql2);
    			  $j = 1;
                  while ($categorie = mysql_fetch_array($result2)) {
    			  if($j == 1) { echo '<tr>'; }
    			  echo '<td>';
    			  echo '<table width="300" border="0"><tr>';
    			  echo '<td align="center">';
    			  echo $categorie['nom_film'] ;
    			  echo '</td></tr></table>';
    			  echo'<table width="300" border="0"><tr><td align="center">';
    			  echo '<img border="0" src="images/'. $categorie['img_film'] . '" />';
    			  echo '</td></tr></table>';
    			  echo '<table width="300" border="0"><tr>';
    			  echo '<td align="center">';
    			  echo '<a href="file://' . $categorie['lien_film'] . '">';
    			  echo 'Download';
    			  echo '</a>';
    			  echo '</td></tr></table>';
    			  $j++;
    			  if($j > $nb) { echo '</tr>'; $j = 1; }
    			  echo '</td>';
    			  }
    			?>
    Merci

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    Tu devrais mettre une clause LIMIT à ta requête de sélection pour limiter le jeu de résultat dans le "bloc" en cours.

    Ce qui peut se faire avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql2 = "SELECT * FROM films WHERE num_cat_film=' {$_GET['numcatfilm']}' LIMIT {$premiereEntree}, {$messagesParPage}";

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut
    Merci ca marche nikel par contre j'ai un dernier soucis c'est que ma pagination se fait sur la totalité des enregistrement de ma table films donc il me sort une pagination sur 32 pages alors que ma catégorie de films "action" ne compte des films que sur 17 pages.

    Comment je peux faire pour réduire le calculs et le nombre de pages par rapport au nombres de films dans la catégorie choisie?

    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 108
    Par défaut
    OK c'est bon j'ai trouvé ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Etat] Valeurs non visibles sur toutes les pages
    Par wperezrobles dans le forum IHM
    Réponses: 6
    Dernier message: 17/10/2006, 14h12
  2. [css]ecrire sur toutes les pages
    Par despe59 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/06/2006, 14h01
  3. Réponses: 9
    Dernier message: 29/03/2006, 21h41
  4. La date sur toutes les pages
    Par philippef dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 07/02/2006, 17h44

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