Besoin d'aide pour pagination d'un moteur de recherche...
witch32
Messages postés30Date d'inscriptionlundi 31 janvier 2005StatutMembreDernière intervention15 juin 2007
-
24 mai 2007 à 20:27
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
25 mai 2007 à 12:37
alors voila,
j'ai créé un moteur de recherche pour partitions.
aujourd'hui
la base contient 35000 références;pour une recherche si je tombe
sur1200 résultats...tout afficher sur une meme page, c'est pas super!
du coup j'aimerai faire un affichage 50, 100, 250 ou 500 résultats pas page.
j'ai regardé pas mal de source et de tutoriaux, mais je n'ai pas réussi à les mettre en place...
quelqu'un peut m'aider? c'est vraiment important et je ne m'en sors pas!
merci d'avance!!!
ps: c'est un probleme si je n'ai pas un ID défini dans ma table?
$total_table = mysql_num_rows(mysql_query("SELECT AR_Ref FROM am_parts"));
// si c'est le premier appel de la variable auteur
if(!isset($_POST['auteur']))
{
echo "
<center>Bienvenue sur le module de partitions ARPEGES.
A ce jour, vous avez accès à
$total_table références de partitions.
La recherche peut s'effectuer sur 1 à 4 critères.</center>";
return;
}
//on relie les variables
$auteur = $_POST['auteur'];
$titre= $_POST['titre'];
$editeur= $_POST['editeur'];
$instrument= $_POST['instrument'];
include('selection.php');
switch($selection){
case 1 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') ORDER BY auteur , lien ";
$result = mysql_query ($query);
break;
case 2 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 3 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND editeur LIKE '%$editeur%' ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 4 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven,AR_Ref,AR_Ref
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND(instr LIKE '$instrument' OR instr LIKE '$instrument%')
ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 5 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven,AR_Ref,AR_Ref
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
AND editeur LIKE '%$editeur%' ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 6 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND titre_francais LIKE '%$titre%' AND
titre_version_originale LIKE '%$titre%' AND(instr LIKE '$instrument' OR
instr LIKE '$instrument%') ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 7 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (auteur LIKE '%$auteur%' or AR_design like
'%$auteur%') AND editeur LIKE '%$editeur%' AND(instr LIKE '$instrument'
OR instr LIKE '$instrument%') AND ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 8 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%'
ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 9 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
AND editeur LIKE '%$editeur%' ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 10 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
AND(instr LIKE '$instrument' OR instr LIKE '$instrument%') ORDER BY
auteur, AR_design";
$result = mysql_query ($query);
break;
case 11 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE ((titre_francais LIKE '%$titre%' OR
titre_version_originale LIKE '%$titre%' )OR AR_design LIKE '%$titre%')
AND editeur LIKE '%$editeur%' AND(instr LIKE '$instrument' OR instr
LIKE '$instrument%') ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 12 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven FROM am_parts WHERE editeur LIKE '%$editeur%' ORDER BY auteur,
AR_design";
$result = mysql_query ($query);
break;
case 13 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE editeur LIKE '%$editeur%' AND(instr LIKE
'$instrument' OR instr LIKE '$instrument%') ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
case 14 :
$query = "SELECT
Auteur,titre_francais,titre_version_originale,lien,instruments,editeur,dispo,AR_prixven
FROM am_parts WHERE (instr LIKE '$instrument' OR instr LIKE
'$instrument%') ORDER BY auteur, AR_design";
$result = mysql_query ($query);
break;
// si aucun champ n'est rempli
case 15 :
echo "
<center>aucun champ n'est renseigné
!</center>";return;
break;
}
//on teste le nombre de ligne que contient le résultat, s'il est vide c'est que la recherche a été infructueuse
if(!mysql_fetch_row($result)){
echo "aucun résultat";
exit();
}
// affichera le nombre d'enregistrements retournés"
echo "Votre recherche porte sur le(s)
mot(s) clé(s) suivant(s) : $auteur $titre $editeur
$instrument ";
//echo "
";
echo " Nombre de résultats pour votre
requête : " . (mysql_num_rows($result)-1) ;
echo " ";
//variables pour le tableau
$nblignes = mysql_num_rows($result);
$nbchamps = mysql_num_fields($result);
function affiche_titre ($t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8){
witch32
Messages postés30Date d'inscriptionlundi 31 janvier 2005StatutMembreDernière intervention15 juin 2007 25 mai 2007 à 10:01
il n'y a plus d'erreur qui s'affiche, mais par contre la pagination....
j'ai fait ce que tu m'as dit:
for ($i=1; $i<$nbr;$i+=10)
echo '[...?...&lim='.$i.' ...'.$i.']';
mais ca m'affiche
...1...1...1...1...1...1...1...1...1... indéfiniment, jusqu'a ce que ca plante
"fatal error maximum execution time of 30seconds exceeded in index.php on line 226.
(c'est la boucle...)
witch32
Messages postés30Date d'inscriptionlundi 31 janvier 2005StatutMembreDernière intervention15 juin 2007 25 mai 2007 à 11:00
je peux abuser d'un dernier conseil?
echo '[...?...&lim='.$i.' ...'.$i.']';
c'est quoi la ligne exact (avec toute les infos) que je dois faire pour cette ligne?
parceque j'ai tout essayer mais je ne vois pas ...
et je crois que c'est le truc qui fait que rien ne marche...