Comment faire pour afficher cette requete sur plusieur pages ?

cs_skyman272 Messages postés 34 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 26 novembre 2007 - 17 oct. 2005 à 21:08
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 18 oct. 2005 à 09:20
Bonjour, question pour les pros du PHP

La requette dans le code ci dessous fonctionne mais le resultat devrait s'afficher sur plusieurs pages. 5 résultat par page. Or ça ne marche pas j'ai tous les résultats qui s'affiche toujours sur la meme page.
Je ne suis pas un cador du php. Si quelqu'un de génial arrivait à trouver l'anomalie dans mon code...
Merci

Voici le code commenté :

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

<?php require_once('Connections/fichier.php'); ?>
<?php


// Connnexion à la base
mysql_select_db($database_fichier, $fichier) or die(mysql_error());


// Parametres de la requete
$varRegion = $select;
$varType = $select2;
$nb_rep_pages=5;


// Requete SQL
if(empty($page)) $page = 1;
if(empty($fin)){
if($varType == Tous)
$sql = "SELECT *
FROM Fiche_produit
WHERE Fiche_produit.Region ='$varRegion'
ORDER BY Identite";
else
$sql = "SELECT *
FROM Fiche_produit
WHERE Fiche_produit.Region ='$varRegion'
AND Fiche_produit.Type ='$varType'
ORDER BY Identite";
}


// Déclaration de la variable début
$debut = ($page - 1) * $nb_rep_pages;


$nbpages = ceil($fin / $nb_rep_pages);


// Interrogation de la base
$result = mysql_query($sql, $fichier) or die(mysql_error());


// Nombre de lignes de résultat
$totalRows = mysql_num_rows($result);


if ($totalRows == 0)
{
echo "La recherche n'a retourné aucun résultat

";
}
else
{
echo "

Résultat de la recherche : $totalRows produits.


Secteur |
Type |
Prix de vente du bien |
Présentation |
Photo |
Accès |

\";

for($i = 1;$i <= $nbpages;$i ++){
echo \"Page $i\";
if($i < $nbpages) echo \" - \";
}

// Récupération ligne par ligne des résultats
while ($row = mysql_fetch_array($result))

{
echo \"----

{$row['Secteur']},
{$row['Type']},
{$row['Prix']} &euro;,
{$row['Presentation']},
,
Découvrir le bien,

\";
}

echo "
";


}
for($i = 1;$i <= $nbpages;$i ++){
echo "Page $i";
if($i < $nbpages) echo " - ";
}


while( $contenu = mysql_fetch_array ($result))



// Libération mémoire
mysql_free_result($result);


// Fermeture de la connexion
mysql_close($fichier);


?>
<td width="210" height="189" background="images/5.gif">

&nbsp;

Autres recherches




<form action ="fiche_select.php" method="post" name="table_recherche">

<label>Region
<select name="select" tabindex="1">
<option value="Midi-Pyrénées">Midi-Pyr&eacute;n&eacute;es</option>
<option value="Languedoc">Languedoc</option>
<option value="Provence">Provence</option>
<option value="Aquitaine">Aquitaine</option>
<option value="Autres-régions">Autres R&eacute;gions</option>
</select>
</label>



<label>Type
<select name="select2" tabindex="2">
<option value="Manoir-Ch&acirc;teau">Manoirs et Ch&acirc;teaux</option>
<option value="Propri&eacute;t&eacute;-rurale">Propri&eacute;t&eacute;s rurales</option>
<option value="Belle-Demeure">Belles demeures</option>
<option value="Maison-de-Campagne">Maisons de campagne</option>
<option value="Maison-de-village">Maisons de village</option>
<option value="Maison-de-ville">Maisons de ville</option>
<option value="Villa">Villas</option>
<option value="Autre-bien">Autres Biens</option>
<option value="Tous" selected>Tous les biens</option>
</select>
</label>



<label>

</label>


</form>
</td>

</html>

2 réponses

jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
18 oct. 2005 à 00:37
Salut,
voila ce donc j'ai compris:

tu ajoutes en debut de page: $nb= 5;
if(isset($_GET['start'])) {$start = $_GET['start'];} else {$start=0;}

ensuite,

remplace: if($varType == Tous)
$sql = "SELECT *
FROM Fiche_produit
WHERE Fiche_produit.Region ='$varRegion'
ORDER BY Identite LIMIT ".$start.",".$nb;
else
$sql = "SELECT *
FROM Fiche_produit
WHERE Fiche_produit.Region ='$varRegion'
AND Fiche_produit.Type ='$varType'
ORDER BY Identite LIMIT ".$start.",".$nb;
}

ajoute en bas de ce que je t dis de remplacer:

$result=mysql_query("SELECT COUNT(*) FROM `Fiche_produit` WHERE Fiche_produit.Region ='$varRegion'") OR die("Comptage Impossible");
$row = mysql_fetch_row($result);

voici un petit code pour afficher les pages:

if ($start == 0) {
echo ' [1] ';
} else {
echo '[tapage.php?start =0 [1]]&nbsp;';
}
for($index=1;($index*$nb)<$row[0];$index++) {
$pg = $index+1;
if(($index*$nb)!=$start) {
print('[tapage.php?start='.($index*$nb).' ');
echo '['.$pg.']';
print("]");
}
else {
echo ' ['.$pg.']';
}
voilà......aissai de comprendre ce petit code....

Jn
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 oct. 2005 à 09:20
hello,



bon, pour expliquer le principe, qui est très simple :



les requêtes doivent utiliser la clause LIMIT.

Cette clause est en fait un pointeur. Il indique à mysql combien de lignes renvoyer, et à partir de quelle ligne commencer...

La doc ici : http://dev.mysql.com/doc/refman/5.0/en/select.html



Ensuite, tu te fais 2 liens, 2 boutons, comme tu veux, qui vont
renvoyer à la même page un compteur, que tu vas utiliser dans LIMIT
justement.

Imaginons que tu pagines de 10 en 10.

Pour aller vers la droite, tu auras $compteur +=10, vers la gauche :
$compteur -=10 (sachant qu'il ne doit pas descendre en dessous de 0).
Et tes liens vont simplement l'envoyer à la page, et la requête dans ta
page va s'en servir dans la requête sur LIMIT (avec un test
d'existence).



En gros hein.
0
Rejoignez-nous