Aller au contenu

multipaging perte de requête


Sujets conseillés

Posté

Bonjour, je suis débutant php / mysql, je tente de faire un moteur de recherche sur plusieurs mots clés.

sur une seule page mes résultats ne me génère pas de problème par contre en multipaging la ça se corse,

en gros je fais une boucle for dans laquelle je fais ma recherche j'obtiens bien :

  • le nombre de resultat
  • le nombre de pages a afficher

la première page est bonne mais le lien sur la seconde page me renvoi la totalité de la bdd, je pense que le problème viens du fait que j'ecrase la requete à chaque boucle éffectuée mais je ne parviens pas à modifier mon code pour les conservées, j'ai tenté de faire un tableau de requête ainsi en faisant une boucle for executer une à une les requete mais la je crois que je suis parti en sucette a mon avis il y a beaucoup plus simple pourriez vous m'aider je mais le code de mon programme ci dessous.


<html>
<head>
<title>mon site</title>
</head>
<body>
<center><H1>BIENVENUE SUR LE SITE CRD SALLE 104</H1></center>

<BR></BR>
<BR></BR>
<BR></BR>
<BR></BR>

<form method="post" action="page.php">
<center>Recherche : <input type="text" name="Valeur" size="50"><input type="submit" value="OK"><BR></center>
</form>
<?php
$messagesParPage=10;
mysql_connect("localhost","root");
mysql_select_db("test");
$mot = isset ( $_POST['Valeur'] ) ? $_POST['Valeur'] : '' ;
echo "<br />";
$keywords = preg_split("/[\s,]+/", $mot);
$nbrtbl=sizeof($keywords);
echo "Vous avez tapé ".$nbrtbl." Mots clés";
echo "<br/>";
for ($j=0;$j<$nbrtbl;$j++)
{
$reponse = mysql_query("SELECT * FROM `rapport`WHERE (idRapport LIKE '%". $keywords[$j]."%'
OR NomEntreprise LIKE '%". $keywords[$j]."%'
OR Formation LIKE '%". $keywords[$j]."%'
OR Theme LIKE '%". $keywords[$j]."%')")or die (mysql_error());
$m=$j+1;
echo "le mot clé n° ".$m." est : ".$keywords[$j];
echo "<br/>";
}
$total = mysql_num_rows($reponse);
echo "il y a : ".$total." résultats.";
echo "<br/>";
mysql_free_result($reponse);
echo "<br/>";


$nombreDePages=ceil($total/$messagesParPage);


if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}}
else
$pageActuelle=1;
echo "La page actuelle est : ".$pageActuelle;
$premiereEntree=($pageActuelle-1)*$messagesParPage;
echo "Le nombre total de page : ".$nombreDePages;
echo "<br/>";
echo "La premiere entrée est : ".$premiereEntree;
echo "<br/>";
for ($j=0;$j<$nbrtbl;$j++)
{
$reponse = mysql_query
("SELECT * FROM `rapport`WHERE
(
idRapport LIKE '%". $keywords[$j]."%'
OR NomEntreprise LIKE '%". $keywords[$j]."%'
OR Formation LIKE '%". $keywords[$j]."%'
OR Theme LIKE '%". $keywords[$j]."%'
)ORDER BY 'NomEntreprise' ASC
LIMIT $premiereEntree,$messagesParPage ")or die (mysql_error());

echo "test valeur".$reponse;
}

while($donnees = mysql_fetch_array($reponse))
{ echo "<table>";
echo "<td>".$donnees['idRapport']."</td>";
echo "<td>".$donnees['NomEntreprise']."</td>";
echo "<td>".$donnees['Theme']."</td>";
echo "<td>".$donnees['Formation']."</td>";
echo "</table>";

}
echo '<p align="center">Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{

if($i==$pageActuelle)
{echo ' (( '.$i.' )) ';
}
else
{
echo ' <a href="page.php?page='.$i.'">'.$i.'</a> ';

}
}


mysql_close();
?>

</body>
</html>

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...