Page 1 sur 1

Pagination automatique à partir de dream !!!

Posté : 02 mars 2006, 13:33
par lafieau
Salut !!!
Oui je sais le titre ne va pas plaire, mais bon j'ai commencé avec donc je persiste avec dream !

J'ai eu beau lire ce tuto : http://www.phpfrance.com/forums/voir_sujet-8874.php et bien d'autres mais sans succès, je ne m'y retrouve pas avec le code généré par dream.

Mon code :
<?php require_once('Connections/connexion.php'); ?> 
<?php
$currentPage = $HTTP_SERVER_VARS["PHP_SELF"];

$categorie2=$_POST['categorie2'];

$maxRows_Recordset1 = 5;
$pageNum_Recordset1 = 0;
if (isset($HTTP_GET_VARS['pageNum_Recordset1'])) {
  $pageNum_Recordset1 = $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 = $pageNum_Recordset1 * $maxRows_Recordset1;

mysql_select_db($database_connexion, $connexion);
$query_Recordset1 = "SELECT tb_hotel.departement, tb_hotel.ville, tb_hotel.type, tb_hotel.nom, tb_hotel.descriptif, tb_hotel.petitephoto, tb_hotel.id_hotel FROM tb_hotel WHERE tb_hotel.categorie='$categorie2' ORDER BY tb_hotel.categorie";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $connexion) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

if (isset($HTTP_GET_VARS['totalRows_Recordset1'])) {
  $totalRows_Recordset1 = $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
  $all_Recordset1 = mysql_query($query_Recordset1);
  $totalRows_Recordset1 = mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 = ceil($totalRows_Recordset1/$maxRows_Recordset1)-1;

$queryString_Recordset1 = "";
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
  $params = explode("&", $HTTP_SERVER_VARS['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_Recordset1") == false && 
        stristr($param, "totalRows_Recordset1") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_Recordset1 = "&" . implode("&", $newParams);
  }
}
$queryString_Recordset1 = sprintf("&totalRows_Recordset1=%d%s", $totalRows_Recordset1, $queryString_Recordset1);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="600" height="371" border="0" align="center" cellspacing="3">
  <tr> 
    <td width="90" colspan="5">Liste des h&ocirc;tels de <?php echo $categorie2 ;?></p> 
      <table width="600" border="1" cellpadding="1" bordercolor="#FFFFFF">
        <tr bgcolor=F5CB37> 
          <td class="td1">D&eacute;partement</td>
          <td class="td1">Ville</td>
          <td class="td1">Type</td>
          <td class="td1">Nom</td>
          <td class="td1">Descriptif</td>
          <td class="td1">Photo</td>
        </tr>
        <?php do { ?>
        <tr bgcolor="DAECA4"> 
          <td class="td1"><?php echo $row_Recordset1['departement']; ?></td>
          <td class="td1"><?php echo $row_Recordset1['ville']; ?></td>
          <td class="td1"><?php echo $row_Recordset1['type']; ?></td>
          <td class="td1"><a href="javascript:;" onClick="MM_openBrWindow('popup.php?id_hotel=<?php echo $row_Recordset1['id_hotel']; ?>','popup','width=600,height=400')"><?php echo $row_Recordset1['nom']; ?></a></td>
          <td class="td1"><?php echo $row_Recordset1['descriptif']; ?></td>
          <td><a href="javascript:;" onClick="MM_openBrWindow('popup.php?id_hotel=<?php echo $row_Recordset1['id_hotel']; ?>','popup','width=600,height=400')"><img src="testvisuelschbre/<?php echo $row_Recordset1['petitephoto']; ?>" border="0"></a></td>
        </tr>
        <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
      </table>
      <p class="td2">&nbsp; Enregistrements <?php echo ($startRow_Recordset1 + 1) ?> &agrave; <?php echo min($startRow_Recordset1 + $maxRows_Recordset1, $totalRows_Recordset1) ?> sur <?php echo $totalRows_Recordset1 ?></p>
      <table border="0" width="50%" align="center">
        <tr> 
          <td width="23%"  class="td2"> <?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, 0, $queryString_Recordset1); ?>">Premier</a> 
            <?php } // Show if not first page ?> </td>
          <td width="31%"   class="td2"> <?php if ($pageNum_Recordset1 > 0) { // Show if not first page ?>
            <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, max(0, $pageNum_Recordset1 - 1), $queryString_Recordset1); ?>">Pr&eacute;c&eacute;dent</a> 
            <?php } // Show if not first page ?> </td>
          <td width="23%"  class="td2"> <?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, min($totalPages_Recordset1, $pageNum_Recordset1 + 1), $queryString_Recordset1); ?>">Suivant</a> 
            <?php } // Show if not last page ?> </td>
          <td width="23%"   class="td2"> <?php if ($pageNum_Recordset1 < $totalPages_Recordset1) { // Show if not last page ?>
            <a href="<?php printf("%s?pageNum_Recordset1=%d%s", $currentPage, $totalPages_Recordset1, $queryString_Recordset1); ?>">Dernier</a> 
            <?php } // Show if not last page ?> </td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Le problème c'est qu'il m'affiche bien ma première page avec les enregistrements, mais sur la 2ème dans mon tableau de résultat je n'ai plus rien, il n'arrive pas à récupérer la variable $categorie2.

Si quelqu'un pouvait m'aider ça serait sympa !
Merci

Posté : 02 mars 2006, 15:02
par Ryle
Utilise le tag PHP au lieu de code lorsque tu envois du code php sur le forum, ça le met en couleur et ça le rend plus lisible.. si tu peux éditer ton message précédent et changer juste ça ;)

Sinon à premiere vue le problème viendrait de tes liens précédent / suivant. Ils ne transmettent pas la variable categorie2, du coup c'est normal si tu ne la récupères pas sur la page d'après :) A noter que quand tu cliques sur un lien, les données seront envoyées en GET et pas en POST... donc à gérer quand tu récupères $categorie2 si le problème vient bien de là... j'attend la version couleur ;)

Posté : 02 mars 2006, 15:51
par Ryle
Tu n'étais pas obligé de tout reposter, suffisait juste d'éditer le premier ;)

Je pense que le problème vient bien de tes liens, il te manque la valeur de categorie2 pour les pages suivantes. Essaye de modifier tes 4 printf (précédent, suivant, début...) en ajoutant le code en rouge :

printf("%s?pageNum_Recordset1=%d%s&categorie2=%s", $currentPage, 0, $queryString_Recordset1, $categorie2);

A changer également au début de ton script, la récupération de $categorie2, qui du coup arrivera en get au lieu du post :)
$categorie2 = (isSet($_POST['categorie2'])) ? $_POST['categorie2'] : $_GET['categorie2'];

Posté : 02 mars 2006, 15:59
par lafieau
Ca marche !!! :wink:

Bien plus simple que tout ce que j'avais pu voir jusqu'ici, pfuuuuuuuuuu et dire que je me prends la tête depuis des lustres !!!

Encore merci Ryle !!!