Comment faire pour afficher cette requete sur plusieur pages ?

Signaler
Messages postés
34
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
26 novembre 2007
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

Messages postés
258
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012

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
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.