J'utilise le code de cyrano concernant l'affichage d'éléments page par page. Tout fonctionne bien. Mais si je veux afficher un grand nombre d'élément qui provient d'une recherche, cela bug.
Voici la partie du code
<h2>Résultat de la recherche dans le répertoire des commerçants</h2>
<?php
/* Paramètres de connexion */
include_once("includes/connexion.php");
// création des variables
$searchterm= trim($searchterm);
$searchterm= htmlspecialchars($searchterm);
if (!$searchtype || !$searchterm)
{
echo "Vous n'avez pas entrer les éléments de recherches. S.V.P. essayer de nouveau";
exit;
}
/* Paramètres de pagination */
$nb_element_par_page = 6; /* nombre d'élément affichées sur chaque page */
$url = "./liste.php?page=";
/* Détermine quelle est la page qui est actuellement affichée */
$page_en_cours = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee = ($page_en_cours + 1);
/* Requête pour compter les renseignements */
$sql_nb = "SELECT COUNT(*) FROM entreprises WHERE $searchtype like '%$searchterm%'ORDER by nom_entreprise" ;
/* Exécution de la requête et récupération du résultat */
$resultat_1 = mysql_query($sql_nb);
$nb_element = mysql_result($resultat_1, 0);
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nb_element / $nb_element_par_page);
/**
vérifier si plusieurs pages, et au moins une
*/
if($nb_pages > 0)
{
/* variable qui pour les données de navigation */
$barre_nav = "";
/*au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/**
vérifier si plusieurs pages, et au moins une
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> ";
}
}
/**
affiche la page en cours
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." / ". $nb_pages ." ";
}
else
{
/* une seule page */
$barre_nav .= "page 1/1";
}
/**
vérifier si plusieurs pages, et au moins une
*/
$debut = $page_en_cours * $nb_element_par_page;
$sql_n = "SELECT id_entreprise, nom_entreprise, adresse,telephone FROM entreprises WHERE $searchtype like '%$searchterm%' ORDER BY nom_entreprise LIMIT ". $debut .", ". $nb_element_par_page .";";
$element = mysql_query($sql_n);
?>
<p class="situation"><?php echo($page_affichee); ?></p>
<?php
while($nouv = mysql_fetch_assoc($element))
{
?>
<?php $id_entreprise=$nouv['id_entreprise'];?>
<?php $nom_entreprise=$nouv['nom_entreprise'];?>
<?php echo "<blockquote><a href=voir.php?id_entreprise=$id_entreprise> $nom_entreprise </a></blockquote></p>";
}
echo "<blockquote>_________________________________________________</blockquote>";
/* Libèration la mémoire */
mysql_free_result($resultat_1);
mysql_free_result($element);
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/**
aucune page affiche un message */
echo "Aucun résultat ";
}
?>
Tout va bien. Le nobre de page est affiché correctement mais lorsque je passe à la page 2, la réponse que j'obtiens est que je n'ai pas entrer d'éléments de recherche.Merci de l'aide
Alain