le 19/02/2009 à 14:49
Problème avec une recherche
merci beaucoup pour la réponse elle m'a vraiment aidé. j'ai essayé de raffiner un peu mon code et j'ai introduit un affichage de page par page que j'ai trouvé sur ce site mais le résultat de ma recherche s'affiche seulement sur une première page la deuxième s'affiche vide
avez vous de solution...
avez vous de solution...
recherche-livre.php
<?php
echo'<form action="catalogue-livre.php" method="Post" >
<table align="center" border="0" cellpadding="5" cellspacing="5">
<tr>
<td>Auteur :</td>
<td><input type="text" name="auteur" size="50"></td>
</tr>
<tr>
<td>Mot du titre :</td>
<td><input type="text" name="titre" size="50"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Chercher" name="go" class="SubmitBleu">Recherche avancée</td>
</tr>
</table>
</form>'
?>
<?php
require 'fonction_num.php';
require('connect.php');
if (isset($_POST['go']) && $_POST['go']=='Chercher')
{
($auteur = htmlentities(mysql_real_escape_string($_POST['auteur'])));
($titre = htmlentities(mysql_real_escape_string($_POST['titre'])));
$req = "SELECT count(*) FROM livres WHERE auteur LIKE '%$auteur%' AND titre LIKE '%$titre%'";
$resultat = mysql_query($req) ;
$nb_total = mysql_fetch_array($resultat);
if (($nb_total = $nb_total[0]) == 0)
{
echo 'Aucune réponse trouvée';
} else {
if (!empty($auteur)||!empty($titre))
{
if (!isset($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 2;
$req = "SELECT * FROM livres WHERE auteur LIKE '%$auteur%' AND titre LIKE '%$titre%' ORDER BY titre ASC LIMIT ".$_GET["debut"].",".$nb_affichage_par_page;
$exec = mysql_query($req);
$nb_resultats = mysql_num_rows($exec);
if($nb_resultats != 0)
{
echo '<span class="Bleu">Résultat de votre recherche : ';
if($auteur) echo 'Auteur « '.$_POST['auteur'].' »';
if($titre) echo ' Titre « '.$_POST['titre'].' »';
echo '</span><br/>'.$nb_total;
if($nb_resultats > 1)
{
echo ' <span class="Vert">résultats trouvés</span> ';
}
else
{
echo ' <span class="Vert">résultat trouvé</span> ';
}
echo 'dans notre bibliothèque des livres :<br/><br/>';
while($donnees = mysql_fetch_array($exec))
{
?>
<?php
echo '<span>';
echo 'Siécle : '.$donnees['siecle'].'<br/>';
if($donnees['genre']) echo ' Genre : '.$donnees['genre'].'<br/>';
if($donnees['cote']) echo ' Cote : '.$donnees['cote'].'<br/>';
if ($donnees['auteur']) echo 'Auteur : '.$donnees['auteur'].'<br/>';
echo 'Titre : '.$donnees['titre'].'<br/>';
if($donnees['critique']) echo ' Critique : '.$donnees['critique'].'<br/>';
if($donnees['maison_edition']) echo 'Maison d´édition : '.$donnees['maison_edition'].'<br/>';
if($donnees['lieu_edition']) echo 'Lieu d´édition : '.$donnees['lieu_edition'].'<br/>';
if($donnees['collection']) echo 'Collection : '.$donnees['collection'].'<br/>';
if($donnees['annee_edition']) echo 'Année d´édition : '.$donnees['annee_edition'].'<br/>';
echo 'Nombre de page : '.$donnees['nb_pages'].'<br/>';
if($donnees['mots_cles']) echo 'Mots Clés : '.$donnees['mots_cles'].'<br/>';
echo'<hr>';
echo '</span>';
?>
<?php
} // fin de la boucle
?>
<?php }
else
{
echo '<h5>Pas de resultats</h3>';
echo '<pre>Nous n´avons trouver aucun livre avec le mot :
<span class="Vert">« '.$_POST['auteur'].' »</span></pre>';
}
echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';
}
mysql_close();
}
}
?>
fonction_num.php
<?php
function barre_navigation ($nb_total,
$nb_affichage_par_page,
$debut,
$nb_liens_dans_la_barre) {
$barre = '';
// on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}
// on calcul le numéro de la page active
$page_active = floor(($debut/$nb_affichage_par_page)+1);
// on calcul le nombre de pages total que va prendre notre affichage
$nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
// on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
// exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
if ($nb_liens_dans_la_barre%2==0) {
$cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
$cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
}
else {
$cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
$cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
}
if ($cpt_deb1 <= 1) {
$cpt_deb = 1;
$cpt_fin = $nb_liens_dans_la_barre;
}
elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
$cpt_deb = $cpt_deb1;
$cpt_fin = $cpt_fin1;
}
else {
$cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
$cpt_fin = $nb_pages_total;
}
if ($nb_pages_total <= $nb_liens_dans_la_barre) {
$cpt_deb=1;
$cpt_fin=$nb_pages_total;
}
// si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
if ($cpt_deb != 1) {
$cible = $query.(0);
$lien = '<A HREF="'.$cible.'"><<</A> ';
}
else {
$lien='';
}
$barre .= $lien;
// on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
if ($cpt == $page_active) {
if ($cpt == $nb_pages_total) {
$barre .= $cpt;
}
else {
$barre .= $cpt.' - ';
}
}
else {
if ($cpt == $cpt_fin) {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A>";
}
else {
$barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page);
$barre .= "'>".$cpt."</A> - ";
}
}
}
$fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
if (($nb_total % $nb_affichage_par_page) == 0) {
$fin = $fin - $nb_affichage_par_page;
}
// si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
if ($cpt_fin != $nb_pages_total) {
$cible = $query.$fin;
$lien = ' <A HREF="'.$cible.'">>></A>';
}
else {
$lien='';
}
$barre .= $lien;
return $barre;
}
?>
