Bonjour,

Je souhaite paginer un moteur de recherche d'article avec les mots clés enregistrés dans une base de données. Le code est ci-dessous.
J'obtiens ma liste dans mon tableau mais je ne vois pas comment sortir des boucles pour mettre une limite d'affichage de 5 articles.
Si je fais un echo de $req à la ligne 53, j'ai la requete:

SELECT Id, article, Resume FROM boutique WHERE article LIKE "%vélo%" OR Resume LIKE "%vélo%" SELECT Id, article, Resume FROM boutique WHERE article LIKE "%chaussure de foot%" OR Resume LIKE "%chaussure de foot%" ..........

Une partie du code ci-dessous

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php //requete pour la liste des articles sauvegardée
$reponse = $session->query("SELECT article FROM list WHERE id_session = '$mon_id' ");
 
while ($donnees = $reponse->fetch())
{
 
	$rec = htmlspecialchars($donnees['article']);
	//On dertermine les identifiants, les noms et les informations des articles et on recherche 
 
	$req = 'SELECT Id, article, Resume,  FROM boutique WHERE ';
 
	if($type==1)
	{//ayant un des mots dans leurs informations
        $mots = explode(' ',$rec);//On separe lexpression en mots cles
		$result = 0;
        foreach($mots as $mot)
        {
                $req .= ' article LIKE "%'.$mot.'%" OR Resume LIKE "%'.$mot.'%"  OR ';
		//$req .= 'ORDER by article ASC ';
		$nb = $bdd->prepare('SELECT COUNT(*) FROM boutique WHERE article LIKE :mot OR Resume LIKE :mot ');
		$nb->execute(array( ':mot' => "%$mot%" ));
 
        }		
        $req .= ' 1=0';
		$convert = $convert + (int)$nb ->fetchColumn();
	}
 
	elseif($type==2)
	{//ayant tous les mots dans leurs informations
        $mots = explode(' ',$rec);//En separe lexpression en mots cles
        foreach($mots as $mot)
        {
                $req .= ' article LIKE "%'.$mot.'%" OR Resume LIKE "%'.$mot.'%"  AND ';
				$nb = $bdd->prepare('SELECT COUNT(*) FROM boutique WHERE article LIKE :mot OR Resume LIKE :mot ');
				$nb->execute(array( ':mot' => "%$mot%" ));
 
        }
        $req .= ' 1=1';
		$convert = $convert + (int)$nb ->fetchColumn();	
	}
	else
	{//ayant l'expression exacte dans leurs informations
 
        $req .= ' article LIKE "%'.$rec.'%" OR Resume LIKE "%'.$rec.'%"';
		$nb = $bdd->prepare('SELECT COUNT(*) FROM boutique WHERE article LIKE :rec OR Resume LIKE :rec ');
		$nb->execute(array( ':rec' => "%$rec%" ));
 
	}
	$convert = $convert + (int)$nb ->fetchColumn();
 
$requete = $bdd->query($req);		
 
 
//On affiche les resultats
 
	while($dnn = $requete->fetch())	
	{		
		?>
		<tr>	 
		<td style="background-color:#DCDCDC;border:1px #C0C0C0 solid;text-align:left;vertical-align:top;height:12px"><span style="color:#000000;font-family:Arial;font-size:11px;"><div onClick="window.open('../description.php?Id=<?php echo $dnn['Id'] ?>','','width=600,height=200')"><?php if($surligner)//Si il faut surligner les mots, on les surligne
					{
						if($type==3)
						{
							echo substr((preg_replace('#('.preg_quote($rec).')#i', '<strong>$1</strong>', $dnn['article'])),0,70);//On surligne l'expression exacte
						}
						else
						{
							echo substr((preg_replace('#('.str_replace(' ','|',preg_quote($rec)).')#i', '<strong>$1</strong>', $dnn['Emission'])),0,70);//On surligne les mots cles de la recherche
						}
					}
					else
					{
						echo substr(($dnn['Emission']),0,70);//On ne surligne pas
					} ?></span>
</td></tr>
</table>
 
<?php
	}
 
}
?>
Merci pour votre aide et vos conseils.

Willm_007