Problème dans l'affichage de plusieurs page

Fermé
missihafid Messages postés 59 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 5 avril 2014 - Modifié par missihafid le 28/08/2013 à 19:13
missihafid Messages postés 59 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 5 avril 2014 - 29 août 2013 à 18:58
Bonjour,
Voici mon code qui permet d'afficher les videos de chaque type de l'info.
Ce code ça marche en général bien, sauf que si j'ai plus de 5 enregistrent dans sous categorie il m'affiche les 5, et après si je clique sur suivant ou bien sur page 2 il affiche une page si comme je n'ai pas d'autre enregistrement!
Si je ne trompe pas, le problème c'est dans le lien "1" et "2" , "suivant" etc, il faut qu'il rappelle de l'id des sous categorie "id_cat"cpour qu'il affiche d'autres!!


     <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>

     <?php
  //session_start();
    $catinfo=@$_GET['catinfo'] ;
  
  echo "<h3></br><strong>".$catinfo."</strong></h3></br>";
     // Connexion à la base de données
     $host = "localhost";
     $user = "root";
     $pass = "";
     $data = "basedonnee";
     $connect = mysql_connect($host, $user, $pass)
     or die("Connexion au serveur impossible !");
     $db = mysql_select_db($data, $connect)
     or die("Sélection de la base impossible !");

  $sql = "SELECT * FROM categorie,video
  where categorie.ID_CAT=video.ID_CAT 
 and categorie.SOUS_CAT='".$catinfo."'"; // specifier categorie  
   
     $parpage = 5; // Nombre d'enregistrements par page à afficher
    $total = mysql_query($sql);

    $nblignes = mysql_num_rows($total); // Nbre total d'enregistrements
    
     // On calcule le nombre de pages à afficher en arrondissant
     // le résultat au nombre supérieur grâce à la fonction ceil()
     $nbpages = ceil($nblignes/$parpage);

  // On teste en affichant la valeur des variables (facultatif)
  
     // Si une valeur 'limit' est passée par url, on vérifie la validité de
    // cette valeur par mesure de sécurité avec la fonction validlimit()
     // cette fonction retourne automatiquement le résultat de la requête
     $result = validlimit($nblignes,$parpage,$sql);
  echo '</br></br>';
  //echo '<div class="e2-form">';
  echo '<table id="table1"nom_soc >';
  echo '<tr><td><center><h3>Titre</h3></center></br> </td><td><center><h3>Description</h3></center> </br></td><td><center><h3>Voir video</h3></center></br></td></tr>';
  echo '<tr><td colspan="3" ><hr></td></tr>' ;
     // On affiche le résultat de la requête
    // On crée donc ici son propre tableau pour lequel on souhaite une pagination
     while ($ligne = mysql_fetch_array($result)) {
   echo '<tr><td colspan="3" ><hr></td></tr>' ;
    echo '<tr><td width="250"><center>'.$ligne["TITRE_VIDEO"].'</center></td><td width="250"><center>'.$ligne["DESCRIPTION_VIDEO"].' '.$ligne["LIEN_VIDEO"].'</center>></td><td><center><a href="accueil.php?page=supprission&code='.$ligne["ID_VIDEO"].'"><img src="images/voir.png"></a></center></td></tr>';
  echo '<tr><td colspan="3" ><hr></td></tr>' ;
     }
    
    $url="accueil.php?page=info1&limit=";
      // Résultat total de la requête $sql
  
     // Menu de pagination que l'on place après la requête
    // echo "<div class='pagination'>";
     echo pagination($url,$parpage,$nblignes,$nbpages);
  //   echo "</div>";
    echo '</table>';
 //echo '</div>';
     mysql_free_result($result); // Libère le résultat de la mémoire

    
     function pagination($url,$parpage,$nblignes,$nbpages)
     {
     // On crée le code html pour la pagination
     $html = precedent($url,$parpage,$nblignes); // On crée le lien precedent
     // On vérifie que l'on a plus d'une page à afficher
     if ($nbpages > 1) {
     // On boucle sur les numéros de pages à afficher
     for ($i = 0 ; $i < $nbpages ; ++$i) {
     $limit = $i * $parpage; // On calcule le début de la valeur 'limit'
     $limit = $limit.",".$parpage; // On fait une concaténation avec $parpage
     // On affiche les liens des numéros de pages
     $html .= "<a href=".$url.$limit.">".($i + 1)."</a> |" ;
     }
     }
     // Si l'on a qu'une page on affiche rien
     else {
     $html .= "";
     }
     $html .= suivant($url,$parpage,$nblignes); // On crée le lien suivant
     // On retourne le code html
     return $html;
     }
     function validlimit($nblignes,$parpage,$sql)
     {
     // On vérifie l'existence de la variable $_GET['limit']
     // $limit correspond à la clause LIMIT que l'on ajoute à la requête $sql
     if (isset($_GET['limit'])) {
     $pointer = preg_split('[,]', $_GET['limit']); // On scinde $_GET['limit'] en 2
     $debut = $pointer[0];
     $fin = $pointer[1];
     // On vérifie la conformité de la variable $_GET['limit']
     if (($debut >= 0) && ($debut < $nblignes) && ($fin == $parpage)) {
     // Si $_GET['limit'] est valide on lance la requête pour afficher la page
     $limit = $_GET['limit']; // On récupère la valeur 'limit' passée par url
     $sql .= " LIMIT ".$limit.";"; // On ajoute $limit à la requête $sql
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     // Sinon on affiche la première page
     else {
     $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     }
     // Si la valeur 'limit' n'est pas connue, on affiche la première page
     else {
     $sql .= " LIMIT 0,".$parpage.";"; // On ajoute la valeur LIMIT à la requête
     $result = mysql_query($sql); // Nouveau résultat de la requête
     }
     // On retourne le résultat de la requête
     return $result;
     }
    function precedent($url,$parpage,$nblignes)
     {
     // On vérifie qu'il y a au moins 2 pages à afficher
     if ($nblignes > $parpage) {
     // On vérifie l'existence de la variable $_GET['limit']
     if (isset($_GET['limit'])) {
     // On scinde la variable 'limit' en utilisant la virgule comme séparateur
     $pointer = explode('[,]', $_GET['limit']);
     // On récupère le nombre avant la virgule et on soustrait la valeur $parpage
     $pointer = $pointer[0]-$parpage;
     // Si on atteint la première page, pas besoin de lien 'Précédent'
     if ($pointer < 0) {
     $precedent = "";
     }
     // Sinon on affiche le lien avec l'url de la page précédente
     else {
     $limit = "$pointer,$parpage";
     $precedent = "<a href=".$url.$limit.">Précedent</a> | ";
     }
     }
     else {
     $precedent = ""; // On est à la première page, pas besoin de lien 'Précédent'
     }
     }
     else {
     $precedent = ""; // On a qu'une page, pas besoin de lien 'Précédent'
     }
     return $precedent;
     }
     function suivant($url,$parpage,$nblignes)
     {
     // On vérifie qu'il y a au moins 2 pages à afficher
     if ($nblignes > $parpage) {
     // On vérifie l'existence de la variable $_GET['limit']
     if (isset($_GET['limit'])) {
     // On scinde la variable 'limit' en utilisant la virgule comme séparateur
     $pointer = preg_split('[,]', $_GET['limit']);
     // On récupère le nombre avant la virgule auquel on ajoute la valeur $parpage
     $pointer = $pointer[0] + $parpage;
     // Si on atteint la dernière page, pas besoin de lien 'Suivant'
    if ($pointer >= $nblignes) {
    $suivant = "";
     }
     // Sinon on affiche le lien avec l'url de la page suivante
     else {
     $limit = "$pointer,$parpage";
     $suivant = "<a class='pagination' href=".$url.$limit.">Suivant</a>";
     }
     }
     // Si pas de valeur 'limit' on affiche le lien de la deuxième page
     if (@$_GET['limit']== false) {
     $suivant = "<a href=".$url.$parpage.",".$parpage.">Suivant</a>";
     }
     }
     else {
     $suivant = ""; // On a qu'une page, pas besoin de lien 'Suivant'
     }
     return $suivant;
     }
     ?>
   <br />
   <a href="accueil.php" ><img src="images/retour.png" width="70" height="40" /></a>

et merci d'avance
A voir également:

2 réponses

missihafid Messages postés 59 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 5 avril 2014
28 août 2013 à 19:57
Je veux ajoute que si je n'utilise pas sous categorie (@$_GET['catinfo']) et j'utilise la table sans restriction il marche bien, sinon il me génère ce problème!!
Aidez moi S'il vous plait
0
missihafid Messages postés 59 Date d'inscription jeudi 29 octobre 2009 Statut Membre Dernière intervention 5 avril 2014
29 août 2013 à 18:58
Je veux juste me signaler des fautes dans ce code c'est même structure de précédent mais celle ci est plus simple et affiche juste 2 liens une pour page précédente et l'autre pour page suivante:
     <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>

     <?php
	 
	 if(!empty($_GET['id_cat'])){
	 echo "<h3></br><strong>".$_GET['id_cat']."</strong></h3></br>";
     // Connexion à la base de données
     $host = "localhost";
     $user = "root";
     $pass = "";
     $data = "basedonnee"; // Nommer ici la base de données
     $connect = mysql_connect($host, $user, $pass)
     or die("Connexion au serveur impossible !");
     $db = mysql_select_db($data, $connect)
     or die("Sélection de la base impossible !");

   $parpage = 3;
$limit = 1;
// On test si la variable existe
if (isset($_GET['limit'])) {
     // On test si c'est un entier
	 
     if(is_int($_GET['limit'])) {
          $limit = $_GET['limit'];
     }
}
$offset = ($limit - 1) * $parpage ;
	 $sql = "SELECT * FROM categorie,video
	 where categorie.ID_CAT=video.ID_CAT 
	and categorie.ID_CAT='".$_GET['id_cat']."' 
	order by rand()
	LIMIT $offset, $parpage
	
	"; // Requête initiale (à compléter si nécessaire)
    $sql1="SELECT distinct categorie.ID_CAT,categorie.SOUS_CAT FROM categorie,video
	 where categorie.ID_CAT=video.ID_CAT 
	";
      // Nombre d'enregistrements par page à afficher
  $result = mysql_query($sql);
if(mysql_query( $sql, $connect )=== FALSE) {
    die(mysql_error()); // TODO: better error handling
	}
	 echo '</br></br>';
	 //echo '<div class="e2-form">';
	 echo '<table id="table1" >';
	 echo '<tr><td><center><h3>Titre</h3></center></br> </td><td><center><h3>Description</h3></center> </br></td><td><center><h3>Voir video</h3></center></br></td></tr>';
	 echo '<tr><td colspan="3" ><hr></td></tr>' ;
     // On affiche le résultat de la requête
    // On crée donc ici son propre tableau pour lequel on souhaite une pagination
     while ($ligne = mysql_fetch_array($result)) {
	  echo '<tr><td colspan="3" ><hr></td></tr>' ;
    echo '<tr><td width="250"><center>'.$ligne["TITRE_VIDEO"].'</center></td><td width="250"><center>'.$ligne["DESCRIPTION_VIDEO"].' '.$ligne["LIEN_VIDEO"].'</center>></td><td><center><a href="accueil.php?page=voirvideo&code='.$ligne["ID_VIDEO"].'"><img src="images/voir.png"></a></center></td></tr>';
	 echo '<tr><td colspan="3" ><hr></td></tr>' ;
     }

     
  //   echo "</div>";
    echo '</table>';
//if (isset($_GET['limit'])) {
?> 

 <a href="accueil.php?page=info11&limit=<?php echo $limit + 1 ?>">Page suivante</a>
	<a href="accueil.php?page=info11&limit=<?php echo $limit - 1 ?>">Page précédente</a> 
<?php  // }
    }
	 else echo "Pas de videos</br></br>"; ?>
</br>
   <a href="accueil.php" ><img src="images/retour.png" width="70" height="40" style=" float:right" /></a>



il m'affiche bien les 3 premiers lignes mais le probléme si je clique sur lien précédent ou suivant?
J'ai utilisé 2 gets pour me recuperer id de categorie et variable $limit!
0