Systeme de pagnation en php

Bonjour a toutes et tous.

voila mon soucis,
j’ai un srcipt en php de recherche qui fonctionne bien. Mais j’aimerais bien créer un système de pagnation pour que lorsqu’il me trouve les recherche demandé, il ne m’affiche que 4 résultat par page.

Pouvez vous m’aidez s’il vous plait.


<div id="contener">
	<?php
if (isset($_POST['rechercher']))
{
	mysql_connect("localhost", "root", "mysql");
	mysql_select_db("belgitopia");
	$q=$_POST['rechercher'];
	switch($_POST['choix'])
	{
		case "commune": $choix = "commune";
		break;	
		case "cp": $choix = "cp";
		break;	
		case "nom": $choix = "nom";
		break;	
		case "type_activite": $choix = "type_activite";
		break;	
		// On vérifie toutes les possibilités, pour ne pas pouvoir chercher dans des champs non autorisés.
	}
	if ($q == '') 
	{
		echo 'Veuillez entrez votre recherche svp <br/>';
	}

	else
	{
		$sql ="SELECT * FROM recherche WHERE $choix LIKE '%$q%'"; // On recherche dans la base séléctionnée
		$req=mysql_query($sql) or die(mysql_error());
		mysql_close();
		
		echo "<br/><br/><br/>";
		while($d=mysql_fetch_assoc($req)){
	?>
	<div class="image_nom">
		<div class="nom">
			<?php echo $d['nom']; ?>
		</div> <!--fermeture di nom-->
		<div class="image">
			<img class="image1_1" src="<?php echo $d['image1']; ?>" title="clic pour agrandir" alt="image" />
		</div> <!--dermeture div image-->
	</div> <!--fermeture div image nom-->
		
	<div class="coordonee">
		<p>
		<b>Adresse:</b>
		</p>
		<p>
		<?php echo $d['adresse'] ?>
		<br/>
		<?php echo $d['cp'] ?>
		<?php echo $d['commune'] ?>
		</p>
		<p>
		<b>Tel:</b> <?php echo $d['tel'] ?>
		<b>Fax:</b> <?php echo $d['fax'] ?>
		</p>
		<p>
		<b>E-mail:</b> <?php echo $d['mail'] ?>
		</p>
	</div> <!--fermeture coordonee-->
	
	<div class="sous_descriptif">
				<a title="clic pour plus d'info" href="#" onclick="description1(<?php echo $d['id'];?>); return false;" style="color:#525253; margin-left: 25px;">Plus d'info</a> 
			</div> <!--fermeture sous_descriptif-->
			<div class="deco">
				<div id="cadre1<?php echo $d['id'];?>" style="display:none; border:3px solid #fff; padding: 5px;" >
					<div class="image2"> <a href="<?php echo $d['image2']; ?>" rel="lightbox"><img class="image2_2" src="<?php echo $d['image2']; ?>" title="clic pour agrandir"  alt="image" /></a>
					<p><?php echo $d['texte'];?></p>
					</div> <!--fermeture div image2-->
					<div class="texte_fin"><br/><br/>
					<strong>Horaire</strong><br/>
						<?php echo $d['horaires'];?><br/><br/>
					<div class="image_deco">
						<a href="<?php echo $d['image3']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image3']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image4']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image4']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image5']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image5']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image6']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image6']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<a href="<?php echo $d['image7']; ?>" rel="lightbox"> <img class="image2_3" src="<?php echo $d['image7']; ?>"   title="clic pour agrandir" alt="image" /></a>
						<br/>
					</div> <!--fermeture div image deco-->
					</div> <!--fermeture div texte fin-->
				</div> <!--fermeture div cadre1-->
			</div> <!--fermeture div deco-->
	
					<?php
		}
	}
}
		
		?>
			
	
	</div> <!--fermeture div contener-->
	
	<div id="menu_recherche">
		<div id="titre_recherche">
			Recherche par -->
		</div> <!--fermeture div titre recherche-->
		<div id="recherche_par">
			<form method="post" action="recherche.php">
   <p>
       <select name="choix">
           <option value="commune">Commune</option>
           <option value="cp">Code postal</option>
           <option value="nom">Nom</option>
           <option value="type_activite">Type</option>
       </select>
   </p>
   <p>
		<input title="inscrivez le nom de votre recherche" type="text" name="rechercher" /> <br/>
		<input type="submit" name="envoyer" value="rechercher" />
   </p>
   
</form>
	<p> <?php echo mysql_num_rows ($req).'résultat trouver'; //affiche le nombre de resulta ?> </p>
		</div> <!--fermeture div recherche par-->

Merci a vous de me donné un petit coup de pouce :slight_smile:

Bon, j’ai survolé et un truc : sépare ton code de ta présentation : l’appel à la base est une fonction séparée. Du coup, stratégie :

Pour une pagination, tu dois avoir les X résultats affichés, et y, le nombre de résultats existants sachant que tu proposera X/y + 1 pages. 2 solutions :

1 - tu exécute ta requête, stock le résultat dans une variable de session qui sera je présume un tableau, affiche les lignes 0 à (X -1), détermine y comme étant le nombre de ligne et affiche la navigation. Par la suite, tu récupérera les résultats (p * X) - X à (p * X) - 1 où p est la page à afficher (en fait le premier coup, tu récupère selon cette formule mais p = 1 :wink: ) dans ton tableau et calcule la navigation.

2 - Tu récupère les X résultats qui vont bien en base (paramétrage du select), donc au premier passage les X premiers, ainsi que le count du total, affiche le résultat, puis en fonction du choix de page, le select est paramétré pour aller à ces résultats là.

Bonjour Martopioche,

en fait j’ai déjà fait un système de pagination, mais avec une requête simple, ici je doit le mettre dans mon script avec la recherche, et je n’arrive pas :frowning: je ne sais pas comment faire, j’essaie depuis hier matin mais je n’ai que des erreur :s. ca doit etre surement simpe j’en doute pas mais comme suis sassé débutant ben voilà quoi. enfin bon je cherche encore lol