Recherche+pagination

squago Messages postés 12 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 5 octobre 2010 - 5 oct. 2010 à 21:45
squago Messages postés 12 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 5 octobre 2010 - 5 oct. 2010 à 21:47
Bonjour à tous,
C’est un homme au bord de la crise de nerfs qui vous écrit…
Je cherche à adapter un code de recherche et pagination que j’ai récupéré un peu partout, et que j’ai testé avec une petite table comportant 105 lignes, et dans laquelle je fais une recherche simple, je lui demande de m’afficher les entrées comportant un « f » (LIKE '%f%') . Tout marche, il me donne 42 résultats, qu’il m’affiche sur 5 pages, puisque je lui ai demandé 10 lignes par page. Si vous voulez, je vous envoie le code…
Maintenant, j’essaie d’y adapter une requête, avec laquelle je permets à mes visiteurs de lancer une recherche dans mon catalogue, en entrant un ou plusieurs mots. Ce script fonctionne également parfaitement seul, sans la pagination, je l’ai essayé.
J’ai un peu bricolé pour assembler le tout, et adapter la pagination. J’avais, entre autres, le souci de compter le nombre de lignes, avant de mettre le nombre de pages. J’ai testé dans le petit script de pagination, en incluant une requête en parallèle, qui me donne le nombre de lignes, et par le même, le nombre de pages, en éclipsant le « LIMIT ». Tout ceci fonctionne sur le script avec la recherche simple, sans aucun problème.
Mais sur mon bricolage (pardon pour les puristes), la première page, c’est super, deuxième page, tout blanc, pas plus de réponse à la requête que de n° de page. Et quand j’affiche le code, je n’ai que la première ligne, où sont les liens css.
De plus, quand je fais une recherche avec plusieurs mots, sur la première page, il m’indique bien le nombre de résultats, et le nombre de pages qui va avec, mais entre c’est deux lignes, j’ai juste un message d’erreur sur la ligne 63 (while...). Quant aux pages suivantes, elles sont toujours blanches.
Voilà le topo, si quelqu’un avait une idée, je serais volontiers preneur.
Merci d’avance.
Squago

<link rel= "stylesheet" href="pagination.css" type="text/css" />
<?php include("fonction_pagination.php"); ?>
 <?php
 if(isset($_GET['q'])){
if (strlen($q)<=3) {
        echo "Vous n'avez pas entré assez de caractères pour une recherche.<hr size='1'>";
} else {		

        //connection à la base de données
        mysql_connect('xxxxxx', 'xxxx', 'xxxx');   
    	mysql_select_db('xxxxxx'); 

// Numero de page (1 par défaut)
if( isset($_GET['page']) && is_numeric($_GET['page']) )
$page = $_GET['page'];
else
$page = 1;

// Nombre d'info par page
$pagination = 10;

// Numéro du 1er enregistrement à lire
$limit_start = ($page - 1) * $pagination;

// Préparation de la requête			
echo "Vous cherchez  $q . ";
$q =$_GET['q'];
$s=explode(" ",$q);          
$sql="SELECT libelle_produit,marque,poids FROM catalogue";
$i=0;
foreach($s as $mot){
if($i==0){
$sql.=" WHERE ";
}
else{
$sql.=" OR ";
}
$sql.="libelle_produit LIKE '%$mot%'";
$sql.="LIMIT $limit_start, $pagination";
$i++;	

$aaa="SELECT libelle_produit,marque,poids FROM catalogue";
$i=0;
foreach($s as $mot){				
if($i==0){	
$aaa.=" WHERE ";
}
else{
$aaa.=" OR ";
}
$aaa.="libelle_produit LIKE '%$mot%'";
$i++;		
}
}
// Requête SQL  
$resultat = mysql_query($sql);
$resu = mysql_query($aaa);
$f = mysql_num_rows($resu);
echo "Il y a $f résultat(s) trouvé(s)<hr size='1'>";

// Traitement et affichage des données
while($donnee = mysql_fetch_assoc($resultat)){ 
    
echo "{$donnee["libelle_produit"]}

";
    echo "{$donnee["marque"]}

";
echo "{$donnee["poids"]}

<hr size='3'>";

}
 
// Pagination
$nb_pages = ceil($f / $pagination); 

// Affichage
echo '' . pagination($page, $nb_pages) . '

';
}
}

?

1 réponse

squago Messages postés 12 Date d'inscription samedi 1 mai 2010 Statut Membre Dernière intervention 5 octobre 2010
5 oct. 2010 à 21:47
Je remets le message, car je trouve qu'il a un drôle de tête. Comment on fait pour mettre les n° des lignes sde codes?
Bonjour à tous,
C’est un homme au bord de la crise de nerfs qui vous écrit…
Je cherche à adapter un code de recherche et pagination que j’ai récupéré un peu partout, et que j’ai testé avec une petite table comportant 105 lignes, et dans laquelle je fais une recherche simple, je lui demande de m’afficher les entrées comportant un « f » (LIKE '%f%') . Tout marche, il me donne 42 résultats, qu’il m’affiche sur 5 pages, puisque je lui ai demandé 10 lignes par page. Si vous voulez, je vous envoie le code…
Maintenant, j’essaie d’y adapter une requête, avec laquelle je permets à mes visiteurs de lancer une recherche dans mon catalogue, en entrant un ou plusieurs mots. Ce script fonctionne également parfaitement seul, sans la pagination, je l’ai essayé.
J’ai un peu bricolé pour assembler le tout, et adapter la pagination. J’avais, entre autres, le souci de compter le nombre de lignes, avant de mettre le nombre de pages. J’ai testé dans le petit script de pagination, en incluant une requête en parallèle, qui me donne le nombre de lignes, et par le même, le nombre de pages, en éclipsant le « LIMIT ». Tout ceci fonctionne sur le script avec la recherche simple, sans aucun problème.
Mais sur mon bricolage (pardon pour les puristes), la première page, c’est super, deuxième page, tout blanc, pas plus de réponse à la requête que de n° de page. Et quand j’affiche le code, je n’ai que la première ligne, où sont les liens css.
De plus, quand je fais une recherche avec plusieurs mots, sur la première page, il m’indique bien le nombre de résultats, et le nombre de pages qui va avec, mais entre c’est deux lignes, j’ai juste un message d’erreur sur la ligne 63. Quant aux pages suivantes, elles sont toujours blanches.
Voilà le topo, si quelqu’un avait une idée, je serais volontiers preneur.
Merci d’avance.
Squago
0
Rejoignez-nous