wydook | Bonjour.
J'ai un souci.
Je n'arrive pas a faire une pagination en fonction du mot que je tape dans ma recherche.
Exemple: si je recherche le mot "France", la fonction recherche cherche le mot france dans toutes les entrées de ma base et les affichent, mais il me faut un système de pagination pour ne pas alourdir la page.
Actuellement j'ai ce code:
Code :
- <?
- if(isset($_POST['requete']) && $_POST['requete'] != NULL) // on vérifie d'abord l'existence du post et on vérifie aussi si la requete n'est pas vide.
- {
- mysql_connect('', '', ''); // Connexion à MySQL
- mysql_select_db("" ); // Sélection de la base coursphp
- $requete = htmlspecialchars($_POST['requete']); // on créé une variable $requete pour faciliter lécriture de la requete sql, mais aussi pour empêcher les éventuels malins qui utiliseraient du Php ou du JS, avec la fonction htmlspecialchars().
- $query = mysql_query("SELECT * FROM webcams WHERE pays LIKE '%$requete%' OR ville LIKE '%$requete%' ORDER BY id DESC" ) or die (mysql_error()); // la requête, que maintenant vous devez comprendre ;)
- $nb_resultats = mysql_num_rows($query); // on utilise la fonction mysql_num_rows pour compter les résultats pour vérifier par après
- if($nb_resultats != 0) // si le nombre de résultats est supérieur à 0, on continue
- {
- // maintenant, on va afficher les résultats et la page qui donne les résultats et le nombre de résultats, avec un peu de code HTML pour faciliter la tâche.
- ?>
- <h3>Résultats de votre recherche.</h3>
- <p>Nous avons trouvé <? echo $nb_resultats ; // on affiche le nombre de résultats
- if ($nb_resultats > 1) { echo ' résultats'; } else { echo ' résultat'; } // on vérifie le nombre de résultats pour orthographier correctement.
- ?>
- dans notre base de données. Voici les news que nous avons trouvé :<br/>
- <br/>
- <?
- while($donnees = mysql_fetch_array($query)) // on fait un while pour afficher la liste des fonctions trouvées, ainsi que l'id qui permettra de faire le lien vers la page de la fonction
- {
- ?>
- <table>
- <tr>
- <?php
- // On fait une boucle pour lister tout ce que contient la table :
- {
- $i++;
- echo '<p id="'.$donnees['id'].'">';
- echo '<td><br />
- <div align="center"><h3>'.$donnees['ville'].'</div>'; //ici on rajoute le "<br/>"
- ?>
- <a href="webcams-<? echo $donnees['id']; ?>.php"> <? echo '<a href="webcams-'.$donnees['id'].'.php"><img src="'.$donnees['image'].'" width="140" height="100" alt="webcam '.$data['ville'].'" border="0" / style="filter:alpha(opacity=100); -moz-opacity: 1;" onmouseover="makevisible(this,0)" onmouseout="makevisible(this,1)" /></a></h3></td> ';
- ?></a><?
- if($i == 3)
- {
- echo "</tr><tr>";
- $i = 0;
- }
- }
- ?>
- </tr>
- </table><?
- } // fin de la boucle
- ?><br/>
- <br/>
- <a href="rechercher.php">Faire une nouvelle recherche</a></p>
- <?
- } // fini d'afficher les résultats ! Maintenant, nous allons afficher l'éventuelle erreur en cas d'échec de recherche et le formulaire.
- else
- { // de nouveau, un peu de HTML
- ?>
- <h3>Pas de résultats</h3>
- <p>Nous n'avons trouvé aucun résultats pour votre requête "<? echo $_POST['requete']; ?>". <a href="rechercher.php">Réessayez</a> avec autre chose.</p>
- <?
- }// fini d'afficher l'erreur ^^
- mysql_close(); // on ferme mysql, on n'en a plus besoin
- }
- else
- { // et voilà le formulaire, en HTML de nouveau !
- ?>
- <p>Vous allez faire une recherche dans notre base de données pour rechercher un article. <br />
- Cette recherche s'effectue dans les titres et textes de chaque news.<br />
- <br />
- Tapez un seul mot pour réaliser une recherche.</p>
- <form action="rechercher2.php" method="Post">
- <input type="text" name="requete" size="30">
- <input type="submit" value="Ok">
- </form>
- <?
- }
- // et voilà, c'est fini !
- ?>
|
je voudrait intégrer ce code de pagination au code ci dessus:
Code :
- // On met dans une variable le nombre de messages qu'on veut par page
- $nombreDeMessagesParPage = 20; // Essayez de changer ce nombre pour voir :o)
- // On récupère le nombre total de messages
- $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM webcams');
- $donnees = mysql_fetch_array($retour);
- $totalDesMessages = $donnees['nb_messages'];
- // On calcule le nombre de pages à créer
- $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
- // Puis on fait une boucle pour écrire les liens vers chacune des pages
- echo 'Page : ';
- for ($i = 1 ; $i <= $nombreDePages ; $i++)
- {
- echo '<a href="recherche.php?page=' . $i . '">' . $i . '</a> ';
- }
- ?>
- </p>
- <?php
- if (isset($_GET['page']))
- {
- $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (recherche.php?page=4)
- }
- else // La variable n'existe pas, c'est la première fois qu'on charge la page
- {
- $page = 1; // On se met sur la page 1 (par défaut)
- }
- // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
- $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
- $reponse = mysql_query('SELECT * FROM webcams ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
|
Message édité par wydook le 25-04-2007 à 15:40:09
|