Voilà mon problème, j'espère que quelqu'un pourra m'aider parce que je suis dessus depuis 3 jours!!
J'ai un moteur de recherche interne lié à une bdd qui fonctionne très bien. Cependant je n'arrive pas à faire marcher mon système de pagination en fonction des résultats du moteur de recherche... comment "mélanger" les deux? j'ai des messages d'erreur.
Voici mes 2 codes:
le 1er pour le moteur de recherche:
<html>
<form method="POST" action="222.php">
Rechercher un mot : <input type="text" name="recherche">
<input type="SUBMIT" value="recherche">
</form>
</html>
<div class="affichagesalons">
<?php include("connectionbdd2.php");
// Récupère la variable
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : '';
// la requete mysql
$sql = mysql_query("SELECT nom, adresse, localite, id FROM liste_salons WHERE nom LIKE '%$recherche%'" .
" OR localite LIKE '%$recherche%'" . " OR adresse LIKE '%$recherche%'") or die (mysql_error());
// affichage du résultat
while(list($nom, $adresse, $localite)=mysql_fetch_array($sql))
{
echo ''.$nom.', '.$adresse.' à '.$localite.' <br />';
}
?>
et le 2ème pour le système de pagination:
<?php include("connectionbdd2.php");
$messagesParPage=5; //Nous allons afficher 5 messages par page.
//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM liste_salons WHERE localite="prilly"'); //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 nom, adresse, id, localite FROM liste_salons WHERE localite="prilly" ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
while($donnees_messages=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 '
<strong>'.stripslashes($donnees_messages['nom']).'</strong><br>
'.nl2br(stripslashes($donnees_messages['adresse'])).'<br>
'.nl2br(stripslashes($donnees_messages['localite'])).'<br><br>
';
//J'ai rajouté des sauts à la ligne pour espacer les messages.
}
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="111.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';
?>
Merci d'avance pour vos solutions!