Multipaging

thomy -  
apes Messages postés 5 Statut Membre -
Bonjour,je suis débutant en php, je suis entrain de réaliser un moteur de recherche pour un projet personnel.
J'ai un problème sur mon affichage des résultats, que je souhaiterai voir limité à 30
résultats par page, malgrès de très nombreux tutos je me retrouve avec un problème sur l'affichage de ma seconde page.
j'arrive bien a obtenir le nombre de résultat de ma requête, la première limite est ok mais quand je clic sur la seconde page je me retrouve

avec la totalité de la bdd.
Je ne sais pas si c'est lié à ma requête ou bien peut etre manque t'il une boucle, pourriez vous m'aidez plz ?

<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;

echo '</p>';
$premiereEntree=($pageActuelle-1)*$messagesParPage;

echo "Le nombre total de page : ".$nombreDePages;

echo "<br/>";

echo "La premiere entrée est : ".$premiereEntree;

echo "<br/>";
if ($premiereEntree >10);
{echo $premiereEntree;}

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());
}
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> ';
}
}
echo "<br/>";
mysql_close();
?>

</body>
</html>

7 réponses

ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
ce que je te conseille, c'est de mettre ta requête dans une variable, ainsi tu pourras l'afficher et trouver ce qui cloche.
0
apes Messages postés 5 Statut Membre
 
bonjour il me semble déja avoir tenté de mettre la requête dans une variable il me semble que j'obtenais un truc du genre ressource#3 ou autre valeur en fonction du nombre de mots que je mettais dans ma recherche
0
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
au lieu de faire ça :

$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()); 


fais ça :

echo $requete = "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 ";
$reponse = mysql_query($requete)or die (mysql_error()); 


c'est strictement la même chose, et de cette façon tu pourras afficher ta requête et trouver ton erreur
0
apes Messages postés 5 Statut Membre
 
en fait ce sont des champs indexés si je ne dis pas de bétises, je retrouve donc bien ressource id#(valeur numérique)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
la ligne avec l'echo te donne un ressource id ?

mais la requête s'exécute ?
0
thomy
 
voici ce que je retrouve en faisant un echo sur la requete j'ai fait un copie coller de la requete le resultat est :

SELECT * FROM `rapport`WHERE ( idRapport LIKE '%%' OR NomEntreprise LIKE '%%' OR Formation LIKE '%%' OR Theme LIKE '%%' )ORDER BY 'NomEntreprise' ASC LIMIT 0,10
bizzard comme resultat pas de valeur entre les %%.
0
apes Messages postés 5 Statut Membre
 
ma requete sur la premiere page est bonne mais en cliquant sur le lien me menant sur la seconde page je retrouve la totalité de ma bdd
0