Soucis avec limit sur plusieurs requetes

Répondre
diodon
le 08/12/2013 à 11:08
diodon
Bonjour tout le monde et bon dimanche

voila je rencontre un soucis j'ai crée une pagination qui affiche 50 références par page jusque la tout vas bien

mais lorsque que je place un filtre pour ne voir par EX que les films comédies la pagination m'affiche toujours le meme nombre de pages alors que je devrais en avoir moins ce qui est logique car je n'ai pas que des comédies dans ma base de données.

et si je clique sur page 2 par Ex le filtre se coupe

comment pourrais-je faire pour que mes filtres genres et supports s'applique a ma pagination

Merci d'avance

voici mon code

<?php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
############################################################
INDEX.PHP
############################################################
-->
<?php require_once("config.inc.php"); ?>
<?php
ini_set('display_errors', 1);
$genre = "Tous les films";
$support = "Supports";
$search = "";
$n_derniers = "20";
$afficher_entetes = true;
$titre_fenetre = "Mes Dvd";
$titre_liste = "&nbsp;&nbsp;Liste des films ";
$liste_dateMAJ = true;
$pied_dateMAJ = true;
$infos = false;
$infos_libelle = "";
$auteur = true;
$auteur_nom = "Contactez Michel";
$auteur_mail = "michel.tombal@skynet.be";
$lien_retour = true;
$lien_retour_nom = "";
$lien_retour_url = "http://mesdvd.olympe.in";
$afficher_prets = true;
$afficher_non_vu = true;
$afficher_titre_haut = false;
$titre_haut = "";
$LigneParPage=50; # nombre de lignes a afficher par page

# Lecture du fichier date de mise à jour
$dateMAJ = '?';

$filename = 'update.txt';
if (file_exists($filename)) {
$handle = fopen($filename, "r");
$dateMAJ = fread($handle, filesize($filename));
fclose($handle);
}

# Count du nombre total des enregistrements de films
mysql_select_db($database_fmt, $fmt);
$query_Recordset5 = "SELECT * FROM " . $nom_table;
//echo "query_Recordset5 : ".$query_Recordset5;
$Recordset5 = mysql_query($query_Recordset5, $fmt) or die(mysql_error());
//echo $query_Recordset5;
$row_Recordset5 = mysql_fetch_assoc($Recordset5);
$Nbr_Enrg = mysql_num_rows($Recordset5);
$totaldefilms = mysql_num_rows($Recordset5);

if($_GET['ids_pagi']){
$ids_pagi=$_GET['ids_pagi'];
}else $ids_pagi=0;



# Liste des genres
mysql_select_db($database_fmt, $fmt);
$query_Recordset2 = "SELECT DISTINCT Genre FROM " . $nom_table . " ORDER BY Genre";
//echo $query_Recordset2;
$Recordset2 = mysql_query($query_Recordset2, $fmt) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);


# Liste des supports
mysql_select_db($database_fmt, $fmt);
$query_Recordset4 = "SELECT DISTINCT Support FROM " . $nom_table . " ORDER BY Support";
//echo $query_Recordset4;
$Recordset4 = mysql_query($query_Recordset4, $fmt) or die(mysql_error());
$row_Recordset4 = mysql_fetch_assoc($Recordset4);
$totalRows_Recordset4 = mysql_num_rows($Recordset4);



# Count du nombre total des enregistrements de films
mysql_select_db($database_fmt, $fmt);
$query_Recordset5 = "SELECT * FROM " . $nom_table;
//echo "query_Recordset5 : ".$query_Recordset5;
$Recordset5 = mysql_query($query_Recordset5, $fmt) or die(mysql_error());
//echo $query_Recordset5;
$row_Recordset5 = mysql_fetch_assoc($Recordset5);
$Nbr_Enrg = mysql_num_rows($Recordset5);
$totaldefilms = mysql_num_rows($Recordset5);


# Les 30 dernières entrées
mysql_select_db($database_fmt, $fmt);
$query_Recordset3 = "SELECT ID, TitreVF FROM " . $nom_table . " ORDER BY EntreeDate DESC, ID DESC LIMIT " . $n_derniers;
//echo $query_Recordset3;
$Recordset3 = mysql_query($query_Recordset3, $fmt) or die(mysql_error());
$row_Recordset3 = mysql_fetch_assoc($Recordset3);
$totalRows_Recordset3 = mysql_num_rows($Recordset3);



# Liste des films
if ( (isset($_POST['genre'])) && ($_POST['genre']!="") ) {
$genre = stripslashes(urldecode($_POST['genre']));
$query_Recordset1 = sprintf( "SELECT ID, Reference, TitreVF, Genre, Support, Annee, FilmVu, PretEnCours FROM %s WHERE Genre LIKE '%s' ORDER BY TitreVF ASC", $nom_table , $genre ); }
elseif ( (isset($_POST['support'])) && ($_POST['support']!="") ) { $support = stripslashes(urldecode($_POST['support']));
$query_Recordset1 = sprintf( "SELECT ID, Reference, TitreVF, Genre, Support, Annee, FilmVu, PretEnCours, Support FROM %s WHERE Support LIKE '%s' ORDER BY TitreVF ASC", $nom_table , $support ); }
elseif ( (isset($_POST['search'])) && ($_POST['search']!="") ) { $search = stripslashes(urldecode($_POST['search']) );
$query_Recordset1 = sprintf( "SELECT ID, Reference, TitreVF, Genre, Support, Annee, FilmVu, PretEnCours FROM %s WHERE %s LIKE '%s' ORDER BY Annee DESC", $nom_table , $_POST['zonerecherche'] , '%' . addslashes($search) . '%' ); }
else $query_Recordset1 = "SELECT ID, Reference, TitreVF, Genre, Support, Annee, FilmVu, PretEnCours FROM " . $nom_table . " ORDER BY TitreVF ASC";



//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($Nbr_Enrg/$LigneParPage);
//echo "nombr page : ".$nombreDePages;
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)*$LigneParPage; // On calcul la première entrée à lire
$LIMIT=" LIMIT ".$premiereEntree.", ".$LigneParPage;
$query_Recordset1=$query_Recordset1.$LIMIT;

mysql_select_db($database_fmt, $fmt);
$Recordset1 = mysql_query($query_Recordset1, $fmt) or die(mysql_error());
//echo $query_Recordset1;
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>
<head>

<link rel="icon" type="image/png" href="filmotech_img/favicon.png">

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="author" content="http://www.filmotech.fr" />
<title><?php echo($titre_fenetre); ?></title>
<link href="filmotech_css.css" rel="stylesheet" type="text/css" />
<script type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//-->
</script>
</head>

<body>


<script type="text/JavaScript"></script>
<div id="page">
<div id="top" onclick="MM_goToURL('parent','index.php');return document.MM_returnValue"><?php if ($afficher_titre_haut) { echo("<h1>".$titre_haut."</h1>"); } ?></div>
<div id="wrapper">
<ul id="menu-demo2">
<li><a href="http://mesdvd.olympe.in/">Accueil</a>
</li>
<li><a href="http://mesdvd.olympe.in/galerie.php">Les affiches</a>
</li>
<li><a href="">Lien Divers</a>
<ul>
<li><a href="http://www.allocine.fr/" target="blank">Allo Ciné</a></li>
<li><a href="http://www.dvdfr.com/" target="blank">Dvd-Fr</a></li>
<li><a href="http://www.allmovie.com/" target="blank">Allmovies</a></li>
<li><a href="http://www.dvdempire.com/" target="blank">Dvd Empire</a></li>
<li><a href="http://www.cinefilms-hd.com/index.html" target="blank">Cinéfilms</a></li>
<li><a href="http://picpusdan.free.fr/" target="blank">Picpusdan</a></li>
<li><a href="http://www.filmotech.fr/">Filmotech</a></li>
<li><a href="https://www.google.be/">Google</a></li>
</ul>
</li>
<li><a href="">Jacquettes</a>
<ul>
<li><a href="http://moviecovers.com/" target="blank">Movie Cover</a></li>
<li><a href="http://www.cinemapassion.com/jaquette-de-dvd-1-9.php" target="blank">Cinéma passion</a></li>
<li><a href="http://www.absolutecover.net/" target="blank">Absolute Cover</a></li>
<li><a href="http://www.cinefilms-hd.com/index.html">Cinéfilms- Hd</a></li>
</ul>
</li>
</ul>
<div id="main">



<?php if ($lien_retour) { ?><div class="retour"><a href="<?php echo($lien_retour_url); ?>"><?php echo($lien_retour_nom); ?></a></div><?php } ?>
<h1><?php echo($titre_liste); ?><?php if ($genre != "Tous les films") echo( " : <span class='selection'>" . $genre . "</span>" ); ?><?php if ($support != "Supports") echo( " : <span class='selection'>" . $support . "</span>" ); ?><?php if ($search != "") echo( " contenant <span class='selection'>" . $search . "</span>" ); ?></h1>

<?php if ($totalRows_Recordset1>0) { ?>
<table cellpadding="0" cellspacing="0" id="listefilms">
<?php if ($afficher_entetes) { ?>

<tr><?php if ($afficher_prets || $afficher_non_vu) { ?><th>&nbsp;</th><?php } ?><th><font size="2">Réf.</font></th><th><font size="2">Titre</font></th><th><font size="2">Genre</font></th><th><font size="2">Sup.</font></th><th><font size="2">Date&nbsp;&nbsp;&nbsp;</font></th></tr>


<?php } ?>
<?php do { ?>

<tr class="ligne" onclick="MM_goToURL('parent','detail.php?id=<?php echo($row_Recordset1['ID']); ?>');return document.MM_returnValue" onmouseover="className='ligne_on'" onmouseout="className='ligne'">

<?php if ($afficher_prets || $afficher_non_vu) { ?>
<td class="Puces">
<?php
if ( ($afficher_prets) && ($afficher_non_vu) ) {
if ( ($row_Recordset1['FilmVu'] == 'NON') && ($row_Recordset1['PretEnCours'] == 'OUI') )
echo ( '<img src="filmotech_img/fmt_point_vert_orange.png" alt="Film prêté et non visionné" />' );
elseif ($row_Recordset1['FilmVu'] == 'NON')
echo ( '<img src="filmotech_img/fmt_point_vert.png" alt="Film non visionné" />' );
elseif ($row_Recordset1['PretEnCours'] == 'OUI')
echo ( '<img src="filmotech_img/fmt_point_orange.png" alt="Prêt en cours" />' );
}
elseif ( ($afficher_prets) && ($row_Recordset1['PretEnCours'] == 'OUI') )
echo ( '<img src="filmotech_img/fmt_point_orange.png" alt="Prêt en cours" />' );
elseif ( ($afficher_non_vu) && ($row_Recordset1['FilmVu'] == 'NON') )
echo ( '<img src="filmotech_img/fmt_point_vert.png" alt="Film non visionné" />' );
?>
</td>
<?php } ?>
<td class="Reference"><?php echo( htmlentities($row_Recordset1['Reference'],ENT_COMPAT, "ISO-8859-1") ); ?></td>
<td class="TitreVF"><?php echo( htmlentities($row_Recordset1['TitreVF'],ENT_COMPAT, "ISO-8859-1") ); ?></td>
<td class="Genre"><?php echo( htmlentities($row_Recordset1['Genre'],ENT_COMPAT, "ISO-8859-1") ); ?></td>
<td class="Support"><?php echo( htmlentities($row_Recordset1['Support'],ENT_COMPAT, "ISO-8859-1") ); ?></td>
<td class="Annee"><?php echo( htmlentities($row_Recordset1['Annee'],ENT_COMPAT, "ISO-8859-1") ); ?></td>
<!--
alphabetique
-->

</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<tr>
<?php if ($afficher_prets || $afficher_non_vu) { ?>


</tr><tr>
<td colspan="3" class="Legende">
<?php
if ( ($afficher_prets) && ($afficher_non_vu) ) {
echo ( '<img src="filmotech_img/fmt_point_orange.png" alt="Prêt en cours" />' );?>
&nbsp;Prêt en cours | <?php
echo ( '<img src="filmotech_img/fmt_point_vert.png" alt="Film non visionné" />' );?>
&nbsp;Film non visionné <?php }
elseif ($afficher_prets) {
echo ( '<img src="filmotech_img/fmt_point_orange.png" alt="Prêt en cours" />' );?>
&nbsp;Prêt en cours <?php }
elseif ($afficher_non_vu) {
echo ( '<img src="filmotech_img/fmt_point_vert.png" alt="Film non visionné" />' );?>
&nbsp;Film non visionné <?php }
?>
</td>

<?php } else { ?>

<td colspan="3" class="total"><text-align:left><font size="2" color="#FEFEFE"><?php printf( "%d référence(s)&nbsp; par page et %d film(s) au total&nbsp; dans la base" , $totalRows_Recordset5, $totaldefilms ); ?></font></td>

<?php } ?>
</tr>
</table>

<div id="pagination">
<?php
// Affichage pagination

echo '<p align="center">'; //Pour l'affichage, on centre la liste des pages
if($pageActuelle!=1)
{
$precedent=$pageActuelle-1;
echo'<th> <a id="paginationG" href="galerie.php?page='.$precedent.'">&laquo; Précédent</a></th>';

}
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{

echo'<th> <a id="paginationG" href="galerie.php?page='.$i.'">'. $i .'</a></th>';
}


if($pageActuelle<$nombreDePages)
{
$suivant= $pageActuelle+1;
echo'<th> <a id="paginationG" href="galerie.php?page='.$suivant.'">Suivant &raquo;</a></th>';
}
echo '</p>';

// fin d'affichage pagination
?>

<td colspan="3" class="total"><font size="2" color="#FEFEFE"><?php printf( "%d référence(s)&nbsp; par page et %d film(s) au total&nbsp; dans la base et vous êtes sur la page :&nbsp;%d " , $totalRows_Recordset1, $totaldefilms,$pageActuelle ); ?></font></td>


</Div>
<?php } else { ?>
<center>
<font size="3"; color="#FEFEFE">
<p>Aucun film à afficher... <?php if ($liste_dateMAJ) echo( ' | Dernière mise à jour : ' . $dateMAJ ); ?></p>
</font>
</center>
<?php } ?>


<center>
<font size="4">
<?php if ($search != "") echo( "<div class='retour'><a href=''>Tout afficher retour à l'écran principal</a></div>" ); ?>
</font>
</center>

</div> <!-- End #main --><div id="sidebar">

<div id="recherche">
<h4>Recherche spécifique et tri</h4>
<form id="form2" name="form2" method="post" action="">
<center>
<input name="zonerecherche" type="radio" value="TitreVF" checked="checked" />
Titre
<input name="zonerecherche" type="radio" value="Realisateurs"/>
R&eacute;alisateurs
<input name="zonerecherche" type="radio" value="Acteurs"/>
Acteurs
</center>
<input type="text" name="search" size="31" >
<input type="submit" name="Submit" value="Go">
</form>
<P> </p>
<p> </p>
<form id="form1" name="form1" method="post" action="">
<?php
?>
<select name="genre" style="width:155px;" onchange="javascript:form1.submit();" >
<option value="" <?php if ($genre==$row_Recordset2['Genre']) echo( 'Selected="selected"' ); ?>>Tous les films</option>
<?php if ($totalRows_Recordset2>0) do { ?>
<?php if ($row_Recordset2['Genre']!="") { ?>
<option value="<?php echo( $row_Recordset2['Genre'] ); ?>" <?php if ($genre==$row_Recordset2['Genre']) echo( 'Selected="selected"' ); ?>>
<?php echo( $row_Recordset2['Genre'] ); ?></option><?php } ?>
<?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
</select>

&nbsp;
<select name="support" style="width:87px;" onchange="javascript:form1.submit();" >
<option value="" <?php if ($support==$row_Recordset4['Support']) echo( 'Selected="selected"' ); ?>>Supports</option>
<?php if ($totalRows_Recordset4>0) do { ?>
<?php if ($row_Recordset4['Support']!="") { ?>
<option value="<?php echo( $row_Recordset4['Support'] ); ?>" <?php if ($support==$row_Recordset4['Support']) echo( 'Selected="selected"' ); ?>>
<?php echo( $row_Recordset4['Support'] ); ?></option><?php } ?>
<?php } while ($row_Recordset4 = mysql_fetch_assoc($Recordset4)); ?>
</select>
<center>

<h4><?php if ($genre != "Tous les films") echo( "<div class='retour'><a href=''>Désactiver le filtre << $genre >></a></div>" ); ?><h4>
<h4> <?php if ($support != "Supports") echo( "<div class='retour'><a href=''>Désactiver le filtre << $support >></a></div>" ); ?></h4>
</center>
</form>
</div>

<div id="dernieresentrees">
<h4>Un film au hasard pour ce soir</h4>
<P> </p>
<?php
$nb_T = 0;
$opdir = opendir("Affiches/");
while ($T = readdir($opdir))
{
if (!is_dir($T)) $nb_T++;
}
closedir($opdir);
?>
<script language='javascript'>
function alleatoire() {
// le nombre suivant correspond au nombre d'images total répertorier dans le répertoire
var nombre_images = <?=$nb_T?>;
// on demande un nombre alleatoire a l'ordinateur
var nombre_alleatoire = Math.random();
var numero = Math.round( ( nombre_images - 1 ) * nombre_alleatoire ) + 1;
images = new Array;
<?php
function trouverExt ($fichier)
{
// coupe le nom du fichier
$tableau = explode(".",$fichier);
// retourne les caractere apres le dernier .
return $tableau[count($tableau)-1];
}
// open directory
$myDirectory = dir("Affiches/");
$nb_T = 1;
// get each entry
while($entryName = $myDirectory->read())
{
if($entryName != '.')
{
if($entryName != '..')
{
if($entryName != 'thumbs.db')
{
if (!is_dir($entryName))
{
$extention = trouverExt($entryName);

if($extention = 'gif' or $extention = 'jpg' or $extention = 'bmp' or $extention = 'png'){
{
print("images[$nb_T] = '$entryName';");
$nb_T++;
}
}
}
}
}
}
}
// close directory
$myDirectory->close();
?>
var image = images[numero];
document.write("<div align='center'><a href=''><img src='Affiches/" + image + "' alt='Patientez Svp recherche' border='3' width='130' border-color='#FFFFFF'></a></div>");
}
alleatoire();
</script>

<center>
<a title="Cliquez ici pour voir un autre film au hasard" href="http://mesdvd.olympe.in/"><img src="filmotech_img/refresh2.png" alt="Un autre film"></a>
</center>
</div>

<div id="dernieresentrees">
<h4>Les 20 dernières entrées</h4>
<P> </p>
<?php
if ($totalRows_Recordset3>0) {
echo "<marquee width='100%' scrollamount='3' scrolldelay='1' behavior='alternate' loop='800' onmouseover='this.stop();' onmouseout='this.start();'>";
do {
$filename = sprintf('Affiches_mini/Filmotech_%05d.jpg' , $row_Recordset3['ID'] ) ;

if (file_exists($filename)) {
echo("<a href='detail.php?id=".$row_Recordset3['ID']."'>
<img src='".$filename."' alt='".$row_Recordset3['TitreVF']."'>
</a>");
};
}While ($row_Recordset3 = mysql_fetch_assoc($Recordset3));
echo "</marquee>";
};
?>
<center>
<font color="#F7F701">
<p> Cliquez sur une affiche pour accéder directement sur le détail du film</p>
</font>
</center>
</div>



</div> <!-- End #sidebar -->
</div> <!-- End #wrapper -->


<div id="footer">
<p>&nbsp;&nbsp;
<?php if ($pied_dateMAJ) echo( 'Dernière mise à jour : ' . $dateMAJ . " | " ); ?>
<?php if ($infos) echo( $infos_libelle . " | " ); ?>
<?php if ($auteur) echo( '<a title="Pour envoyer un mail à Michel Tombal" href="mailto:' . $auteur_mail . '">' . $auteur_nom . "</a> | "); ?>
Réalisé par : &nbsp; <font color ="#FFFF33">Michel Tombal</font></p>

</div> <!-- End #footer -->
</div> <!-- End #page -->
</body>
</html>
<?php mysql_free_result($Recordset1); mysql_free_result($Recordset2); mysql_free_result($Recordset3); mysql_free_result($Recordset4); mysql_free_result($Recordset5);?> ?>
LA GLOBULE
le 08/12/2013 à 15:07
LA GLOBULE
Alors plusieurs choses :
- vers la ligne 100, la où tu récupères tes films avec tes limit, tu filtres bien ton listing de films en utilisant ton paramètre. Mais ce filtrage, il faut aussi le faire sur ton calcul du nombre total de films en utilisant ce même paramètre (vers la ligne 45)
- lorsque tu affiches tes liens de pagination (vers la ligne 270), pour que ton paramètre de filtrage se propage, il faut que tu le passes dans tes liens en plus du paramètre page
diodon
le 08/12/2013 à 18:22
diodon
Bonsoir la globule

Merci pour ta réponse mais étant un peut débutant dans le Php peut tu SVP me montrer un example sa serais super gentil de ta part

cordialement

Michel
LA GLOBULE
le 08/12/2013 à 20:16
LA GLOBULE
Ben par exemple, dans ta selection de données, si tu as une condition du genre :
WHERE toto = '3' LIMIT 0,10


Il te faudra faire la même restriction sur ton calcul de nombre total d'element, avec un :
SELECT count(*) FROM table WHERE toto = '3'


Ensuite, cette valeur de '3', il faut la propager dans la pagination. Exemple :

<a href="galerie.php?page=<?=$suivant?>&toto=3">Suivant</a>


Et il te faudra récupérer la valeur de $_GET['toto'] pour l'injecter dans tes requêtes SQL.
diodon
le 08/12/2013 à 20:34
diodon
houla merci pour ta réponse c'est vraiment SUPER sympa mais la tu parles chinois pour moi je suis désolé
de pas comprendre excuse moi

c'est compliqué a corriger mon code ?

moi ce que j'ai fais j'ai fais cela a partir de tutoriel sur le web donc pas évident mais j'ai tres envie de comprendre tout et surtout envie que ma pagination fonctionne sur mes filtres

excuse moi encore pour mes connaissance de débutant en php je viens de VB6 donc pas évident

encore mille fois merci à toi pour tes réponses
LA GLOBULE
le 08/12/2013 à 20:42
LA GLOBULE
Si tu ne maîtrises pas ce que tu écris, ne cherche pas à modifier ton code, mais cherche plutôt à le comprendre :/

Les modifications à faire sur ton code pour arriver à ce dont tu désires, elles sont simples.

Que ne comprends tu pas dans ton code ?
diodon
le 09/12/2013 à 09:02
diodon
bonjour

la pagination sur une seule requete je l'ai bien comprise car j'en ai fait une egalement sur une galerie d'images qui fonctionne tres bien mais ce que j'essaye de comprendre c'est ce que tu m'explique

pour faire la pagination j'ai suivi un tuto "page par page" trouvé sur google
LupusMic
le 09/12/2013 à 10:49
LupusMic
Franchement, si tu ne comprends pas avec les explications de la Globule, ça va être tendu. Je vais essayer de reformuler :

- la pagination, c'est une optimisation pour la visualisation
- cette optimisation se fait en prenant un ensemble de résultats (la liste des films ; la liste de films par catégories), puis d'en afficher un nombre limité par page.

La Globule a pointé qu'à la ligne 45, tu déterminait le nombre d'entrées à afficher à partir de l'ensemble des enregistrements que tu as. Tu auras donc toujours le même nombre de films, quelque soient les critères de sélection, de filtrage ; à moins que tu ne modifie cette requête (le mieux encore, c'est d'encapsuler la construction de la requête, histoire que tu mettes en commun la construction de la clause where de tes requêtes).
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
diodon
le 09/12/2013 à 10:52
diodon
LupusMic
le 09/12/2013 à 10:49 LupusMic a écrit
Franchement, si tu ne comprends pas avec les explications de la Globule, ça va être tendu. Je vais essayer de reformuler :

- la pagination, c'est une optimisation pour la visualisation
- cette optimisation se fait en prenant un ensemble de résultats (la liste des films ; la liste de films par catégories), puis d'en afficher un nombre limité par page.

La Globule a pointé qu'à la ligne 45, tu déterminait le nombre d'entrées à afficher à partir de l'ensemble des enregistrements que tu as. Tu auras donc toujours le même nombre de films, quelque soient les critères de sélection, de filtrage ; à moins que tu ne modifie cette requête (le mieux encore, c'est d'encapsuler la construction de la requête, histoire que tu mettes en commun la construction de la clause where de tes requêtes).


bonjour

merci pour ta réponse sa fait plaisir de voir des personnes qui comprennent que je débute

donc si je comprend bien je dois mettre une clause where dans ma requette pricipal ?

Cordialement
LA GLOBULE
le 09/12/2013 à 11:31
LA GLOBULE
Exact.

Le même WHERE que celui de ta selection de films.

Le principe reste extremement simple :

Cas général
  • Combien ai je de films ? => 125
  • Combien de pages ai je pour mes films ? => 125 films / 10 films par page => 13 pages


Cas avec restriction
  • Combien ai je de films de guerre ? => 8
  • Combien de pages ai je pour mes films de guerre ? => 8 / 10 => 1 page


Or toi tu fais :

  • Combien ai je de films ? => 125
  • Combien de pages ai je pour mes films de guerre ? => 125 / 10 => 13 pages


=> Ca ne colle pas. Il faut que tu comptes ton nombre de films en prenant en compte le critère de sélection que tu utilises pour ta pagination.
Répondre
LoadingChargement en cours