Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 21h13   #1
Membre à l'essai
 
Inscription : avril 2007
Messages : 101
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 101
Points : 21
Points : 21
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 :
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
bromlecornu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 23h59   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
1
2
 
$sql2 = "SELECT * FROM films WHERE num_cat_film=' {$_GET['numcatfilm']}' LIMIT {$premiereEntree}, {$messagesParPage}";
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 23h46   #3
Membre à l'essai
 
Inscription : avril 2007
Messages : 101
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 101
Points : 21
Points : 21
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
bromlecornu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 23h57   #4
Membre à l'essai
 
Inscription : avril 2007
Messages : 101
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 101
Points : 21
Points : 21
OK c'est bon j'ai trouvé ^^
bromlecornu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h17.


 
 
 
 
Partenaires

Hébergement Web