Limiter affichage ( page suivante precedante)

teler Messages postés 93 Statut Membre -  
teler Messages postés 93 Statut Membre -
Bonjour,

Je débute en php, je fais un site immobilier avec bdd mysql. à chaque fois que la personne selectionne le type de bien qu'elle cherche, les annonces immobiliere se génere en php.
j'aimerais que le nombre de résultat puisse se limité sur la page, exemple : ( 10 annonces s'affiche puis il faut cliquer sur la page suivante pour voir les annonces au delà des 10 premières , j'aimerai aussi un systeme de retour si on est sur celles au delà et qu'on veut revenir au 10 premières.

Le soucis c'est que j'ai regarder sur plein de site comment faire mais je ne comprends pas!

quelqu'un peut-il m'aider??
merci

voici ma page où les annonces sont générées!


<body>
<?php
include("config.inc.php"); ?><div class="contient">
<div class="tete"><img src="images/bandeau2.jpg" border="0" usemap="#Map" />
<map name="Map" id="Map"><area shape="rect" coords="17,31,187,79" href="index.php" target="_parent" />
</map></div>
<div class="trait"></div>
<div class="gauche">
<div class="menugauche"><a href="venteloca.php" target="_parent">
Ventes/Locations</a>
<br />
<img src="images/vert.jpg" /></div>

<div class="menugauche">
<a href="coeur.php" target="_parent">Coup de coeur</a>
<br />
<img src="images/rose.jpg" /></div>

<div class="menugauche"><a href="???.php" target="_parent">
blah bl</a>
<br />
<img src="images/mauve.jpg" /></div>
<div class="menugauche">
<a href="contact.php" target="_parent">Nous contacter</a>
<br />
<img src="images/bleu.jpg" /></div>
</div>

<div class="droite">
<div class="plus">
<div class="titre">Résultat de votre recherche </div>
<div class="fond" style="background-image:url(images/hautfond.png)"></div>
<div class="milieufond" style="background-image:url(images/milieufond.png)">

<?php

// on teste si notre variable est déclarée
if (isset($_POST['trans'])&&($_POST['nombre'])&&($_POST['choix'])&&($_POST['mini'])&&($_POST['maxi'])&&($_POST['mini2'])&&($_POST['maxi2'])&&($_POST['animal'])){

// lancement de la requête
$sql = 'SELECT id,idtrans,catbat,surf,nbre,type,prix,photo,description FROM produits WHERE idtrans ="'.$_POST['trans'].'" AND nbre ="'.$_POST['nombre'].'" AND catbat="'.$_POST['choix'].'"AND surf BETWEEN "'.$_POST['mini'].'" AND "'.$_POST['maxi'].'"AND prix BETWEEN "'.$_POST['mini2'].'" AND "'.$_POST['maxi2'].'" AND type="'.$_POST['animal'].'"';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

while ($data = mysql_fetch_array($req)) {

$texte = $data['description'];
$nbcar = 20;
if (strlen($texte) > $nbcar) {
$extrait_texte = ereg_replace("(.{".$nbcar."})( .*)$","\\1 ...", $texte);
echo '<div class="hautmarge"></div><div class="bas2"><div style="padding-bottom:20px"></div>
<form method="post" action="traitement.php" class="formulaire">
<table width="370" height="140">
<tr>
<td>'.$data['type'].'</td>
<td></td>
</tr>
<tr>
<td>'.$data['nbre'].' pièces '.$data['surf'].' m2</td>
<td align="right">'.$data['prix'].' €</td>
</tr>

<tr>
<td><a href="annonce.php?prod='.$data['id'].'">'.$extrait_texte.'</a></td>
<td align="right"> <a href="photos_annonces/'.$data['photo'].'" rel="shadowbox" title="'.$data['nbre'].' pièces, '.$data['surf'].' m2" ><img height="100px" class="no_cadre" src="photos_annonces/' .$data['photo']. '"/></a></td>
</tr>
<tr><td></td><td align="right">réf : '.$data['id'].'</td></tr>
</table></form></div><div style="padding-bottom:20px"></div>';
}

else {
$extrait_texte = $texte;
}

}

}
else {
echo 'La variable nom_proprio n\'est pas déclarée';
}

?>

</div>
<div class="basfond" style="background-image:url(images/basfond.png)"></div>
</div>
</div>

<div class="traitbleu"></div>
<div class="pieds"></div>
</div>

</body>
A voir également:

2 réponses

LT814 Messages postés 19 Statut Membre
 
Bonsoire,

Si j'ai bien compris ce que tu cherche a faire, c'est une pagination en fonction de ta base de donnée.
Une petite recherche avec le mot pagination sur google t'aurais envoyer

ici => https://antoine-herault.developpez.com/tutoriels/php/pagination-automatique-en-php/

c'est relativement bien expliquer

voila a plus
0
teler Messages postés 93 Statut Membre 5
 
j'ai regardé et adapté le code du site à mon propre code mais je débute et je ne sais comment faire pour la recuperation de la requete, car il y des variables et ont ma aidé un peu pour le code.

je voudrais mettre un where ( quand tel champ est remplis ) voir plus haut les if. et pour le moment ya just ecrit :

$retour_total=mysql_query('SELECT * FROM produits');

en gros au tt debut , ya une variable ($mareq) qui sert pour les conditions de remplissage du formulaire ( tout les if du debut)

puis une la recup sql : $retour_total=mysql_query('SELECT * FROM produits');

j'ai essayé comme ça :$retour_total=mysql_query('$mareq');

mais ça marche pas!

aidez moi svp j'en peux plus!

mais voici le code en entier ici :

<?php
$mareq = 'SELECT COUNT(*) AS total FROM produits WHERE 1';

$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];

$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];

$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];

$animal = $_POST['animal'];

if($trans != null) $mareq.=" AND idtrans = ".$trans;

if($choix != null) $mareq.=" AND catbat = ".$choix;
if($nombre != null) $mareq.=" AND nbre = ".$nombre;

if($surfmini != null) $mareq.=" AND surf >= ".$surfmini;
if($surfmaxi != null) $mareq.=" AND surf <= ".$surfmaxi;

if($prixmini != null) $mareq.=" AND prix >= ".$prixmini;
if($prixmaxi != null) $mareq.=" AND prix <= ".$prixmaxi;

if($animal != null) $mareq.=" AND type LIKE '%".$animal."%'";

$messagesParPage=5; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT * FROM produits'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);

if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else // Sinon
{
$pageActuelle=1; // La page actuelle est la n°1
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT * FROM produits ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($data=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{
//Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
//De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
echo
'<div class="hautmarge"></div><div class="bas2"><div style="padding-bottom:20px"></div>
<form method="post" action="traitement.php" class="formulaire">
<table width="370" height="140">
<tr>
<td>'.$data['type'].'</td>
<td></td>
</tr>
<tr>
<td>'.$data['nbre'].' pièces '.$data['surf'].' m2</td>
<td align="right">'.$data['prix'].' €</td>
</tr>

<tr>
<td><a href="annonce.php?ref='.$data['id'].' &prix='.$data['prix'].' &photo='.$data['photo'].' &type='.$data['type'].' &surf='.$data['surf'].' &nbre='.$data['nbre'].' &description='.$data['description'].'">'.$data['description'].'</a></td>
<td align="right"> <a href="photos_annonces/'.$data['photo'].'" rel="shadowbox" title="'.$data['nbre'].' pièces, '.$data['surf'].' m2" >
<img height="100px" class="no_cadre" src="photos_annonces/' .$data['photo']. '"/></a></td>
</tr>
<tr><td></td><td align="right">réf : '.$data['id'].'</td></tr>
</table></form></div><div style="padding-bottom:20px"></div>';

}

/*$mareq = "SELECT * FROM produits WHERE 1 ";

$trans = $_POST['trans'];
$choix = $_POST['choix'];
$nombre = $_POST['nombre'];

$surfmini = $_POST['mini'];
$surfmaxi = $_POST['maxi'];

$prixmini = $_POST['mini2'];
$prixmaxi = $_POST['maxi2'];

$animal = $_POST['animal'];

if($trans != null) $mareq.= " AND idtrans = ".$trans;
if($choix != null) $mareq.= " AND catbat = ".$choix;
if($nombre != null) $mareq.= " AND nbre = ".$nombre;

if($surfmini != null) $mareq.= " AND surf >= ".$surfmini;
if($surfmaxi != null) $mareq.= " AND surf <= ".$surfmaxi;

if($prixmini != null) $mareq.= " AND prix >= ".$prixmini;
if($prixmaxi != null) $mareq.= " AND prix <= ".$prixmaxi;

if($animal != null) $mareq.= " AND type LIKE '%".$animal."%'";

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($mareq) or die('Erreur SQL !<br />'.$mareq.'<br />'.mysql_error());

while ($data = mysql_fetch_array($req))
{

$texte = $data['description'];
$nbcar = 20;
if (strlen($texte) > $nbcar)
{
$extrait_texte = ereg_replace("(.{".$nbcar."})( .*)$","\\1 ...", $texte);
echo '<div class="hautmarge"></div><div class="bas2"><div style="padding-bottom:20px"></div>
<form method="post" action="traitement.php" class="formulaire">
<table width="370" height="140">
<tr>
<td>'.$data['type'].'</td>
<td></td>
</tr>
<tr>
<td>'.$data['nbre'].' pièces '.$data['surf'].' m2</td>
<td align="right">'.$data['prix'].' €</td>
</tr>

<tr>
<td><a href="annonce.php?ref='.$data['id'].' &prix='.$data['prix'].' &photo='.$data['photo'].' &type='.$data['type'].' &surf='.$data['surf'].' &nbre='.$data['nbre'].' &description='.$data['description'].'">'.$extrait_texte.'</a></td>
<td align="right"> <a href="photos_annonces/'.$data['photo'].'" rel="shadowbox" title="'.$data['nbre'].' pièces, '.$data['surf'].' m2" >
<img height="100px" class="no_cadre" src="photos_annonces/' .$data['photo']. '"/></a></td>
</tr>
<tr><td></td><td align="right">réf : '.$data['id'].'</td></tr>
</table></form></div><div style="padding-bottom:20px"></div>';
}

else {
echo 'Aucune réponse ne correspond à votre recherche';
}

}
*/

echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
//On va faire notre condition
if($i==$pageActuelle) //Si il s'agit de la page actuelle...
{
echo ' [ '.$i.' ] ';
}
else //Sinon...
{
echo ' <a href="traitementBIS.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';

?>
0