Problème de pagination

jerem69300
Invité n'ayant pas de compte PHPfrance

02 juil. 2009, 09:41

Bonjour tout le monde,

Je vous explique mon problème.
J'ai une page php :
au début une liste déroulante remplie par une reqûete et en fonction de son choix après un on Change l'affichage est différent jusqu'ici aucun problème. Après avoir lu le tutoriel sur la pagination l'avoir correctement étudié un problème apparaît :
Car au départ je l'ai adapté mais sans ma liste déroulante et il marche très bien félication a LA GLOBULE cependant dès que je rajoute ma liste déroulante il y a un problème, c'est à dire que m'a première page s'affiche correctement par contre quand je clique pour aller à la page suivante je me retrouve juste avec ma liste déroulante comme sur ma 1ère page lorque l'utilisateur n'a pas fait encore son choix.
Donc si vous voyez une solution pour ce problème merci d'avance !

Eléphant du PHP | 141 Messages

02 juil. 2009, 12:07

La liste déroulante te sert à gérer les pages ou autre chose ?
Peux-tu nous mettre ton code stp ?

jerem69300
Invité n'ayant pas de compte PHPfrance

02 juil. 2009, 14:16

Voici la page où je souhaite intégrer ma pagination
<p><!--Formulaire-->
  <form name="formulaire" action="./index.php?page=test&categorie=search" method="post" id="site">
</p>
<p align="center"><?php $requete='SELECT id_site,lib_site FROM sites order by lib_site';
			$resultat= mysql_query($requete);?>
   <select name="choix" onChange="document.forms['site'].submit();">
    <option value="0">Choisissez un site</option>
      <?php
				while ($donnees = mysql_fetch_array($resultat)){
                echo '<option value='.$donnees[0].'>';
             	echo $donnees[1];
				echo'</option>';
    			}
			?>

  </select></p>        
<?php
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
if(isset($_POST['choix'])){ 
$sql = 'SELECT count(*) FROM batiments where id_site = '.$_POST['choix'].' ';  
 
// on exécute cette requête  
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on récupère le nombre d'éléments à afficher  
$nb_total = mysql_fetch_array($resultat);  
 
// on teste si ce nombre de vaut pas 0  
if (($nb_total = $nb_total[0]) == 0) {  
echo '&nbsp;&nbsp;&nbsp;&nbsp;Aucune r&eacute;ponse trouv&eacute;e';  
}  
else { ?>
	<p align="center">
<p align="center">
<p align="center">
<?php if(isset($_POST['choix'])){
	$requete2="SELECT lib_site FROM sites
			WHERE id_site ='".$_POST['choix']."'
			";
	$resultat2=mysql_query($requete2);
while ($donnees2 = mysql_fetch_array($resultat2)){
?>

Voici tous les b&acirc;timents du site suivant : <strong><?php echo $donnees2['lib_site'];?></strong><br><br>Pour plus d'informations sur un b&acirc;timent, cliquez sur son nom.<br><br> <?php }

   echo '<div align="center"><table width="500px" border="1" align="center">
    <tr>
      <td><div align="center"><strong>Code B&acirc;timent</strong></div></td>
        <td><div align="center"><strong>Nom B&acirc;timent</strong></div></td>
        <td><div align="center"><strong>Nb Etage B&acirc;timent</strong></div></td>
         <td><div align="center"><strong>Fonction B&acirc;timent</strong></div></td>
      </tr>'; 
   
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0  
if (!isset($_GET['debut'])) $_GET['debut'] = 0; 
   
   $nb_affichage_par_page = 1; 
   
// Préparation de la requête avec le LIMIT  
$sql = 'SELECT code_bat, nom_bat, nbEtage_bat, fct_bat, id_bat, lib_site FROM batiments B, sites S
 WHERE B.id_site='.$_POST['choix'].' 
 AND S.id_site = B.id_site
 ORDER BY code_bat ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;  
 
// on exécute la requête  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
 
// on va scanner tous les tuples un par un  
while ($data = mysql_fetch_array($req)) {  
// on affiches les résultats dans la <table> ?>
 <tr><td><div align="center"><?php echo $data['code_bat'];?></div></td><td><div align="center"><?php
	echo '<a href="./index.php?page=info_bat&categorie=batiment&choix='.$data['id_bat'].'">'.$data['nom_bat'].'</a>';?></div></td><td><div align="center"><?php
	echo $data['nbEtage_bat'];?></div></td><td><div align="center"><?php
	echo $data['fct_bat'];?></div></td></tr><?php
}  
 
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($req); 
   echo '</table><br />'; 
 
   // on affiche enfin notre barre 
   echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 1).'</span>';  
}  
// on libère l'espace mémoire alloué pour cette requête  
mysql_free_result ($resultat);  
 
echo '</table><br />';  
}
?>
</form></div></p>
<?php } ?>
Dans ma page index se trouve la fonction de pagination, elle fonctionne très bien sauf avec la page que je vient de vous mettre précedemment.

Je vous laisse mes includes de ma page index cela peut peut être servir.
<?php
if(isset($_GET['page'])){
	include("./".$_GET['categorie']."/".$_GET['page'].".php");
}else{
	if(!isset($_SESSION['identifiant']) && !isset($_SESSION['motdepasse'])){
			include("./accueil.php"); 
	}else{
			include("./accueil.php"); ?>
           <?php
	}
}

?>