Limiter le resultat de la recherche.

9 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour a tous,

j'ai un souci dans le module de recherche cdr qu'il n y pas de limite au résultat de la recherche.

ma question ou insérer la limite dans le fichier search.php ?

quel est la syntaxe exact ?

j'ai fais plusieurs tests avec LIMIT 0,50 Après SELECT DESTINCT mais j'obtiens un message d'erreur.

merci pour votre aide.

abdel

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

limit doit se mettre en fin de requête

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

voici mon code

/////////////////////////////////////////////////////////////////

// build the sql statement

// this will build the sql based on the given information

function build_sql($table_name, $terms, $fields, $match)

{

$SQL = "SELECT DISTINCT(p.id), c.id AS categorie_id, p.nom_".$_SESSION['langue'].", p.description_".$_SESSION['langue']."

, p.image1, p.prix, p.reference, c.nom_".$_SESSION['langue']." AS categorie

FROM peel_produits p, peel_produits_categories pc, peel_categories c, peel_sites_pivots sp

WHERE sp.produit_id = p.id AND sp.site_id = '".intval($_SESSION['ecom']['id'])."' AND p.id = pc.produit_id AND pc.categorie_id = c.id AND p.etat = '1' AND LIMIT 0,10";

$SQL.= build_terms_clause($terms, $fields, $match);

return $SQL;

}

?>

voici l'erreur que j'ai :

Une erreur de connexion à la base s est produite 36.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0,10 ( ( p.nom_fr LIKE '%AMILO%' OR p.description_fr LIKE '%AMILO%' O' at line 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

...AND p.etat = '1' AND LIMIT 0,10";

---> Il n'y a pas de "AND" précedent une clause LIMIT

---> Ecrire simplement : ...AND p.etat = '1' LIMIT 0,10";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

j'avais déjà fais le test sans resultat, quand je supprime le AND" a la fin de la ligne je reçoi toujours une erreur.

voici le code de mon fichier search.php:

/////////////////////////////////////////////////////////////////

// build the sql statement

// this will build the sql based on the given information

function build_sql($table_name, $terms, $fields, $match)

{

$SQL = "SELECT DISTINCT(p.id), c.id AS categorie_id, p.nom_".$_SESSION['langue'].", p.description_".$_SESSION['langue']."

, p.image1, p.prix, p.reference, c.nom_".$_SESSION['langue']." AS categorie

FROM peel_produits p, peel_produits_categories pc, peel_categories c, peel_sites_pivots sp

WHERE sp.produit_id = p.id AND sp.site_id = '".intval($_SESSION['ecom']['id'])."' AND p.id = pc.produit_id AND pc.categorie_id = c.id AND p.etat = '1' LIMIT 0,10";

$SQL.= build_terms_clause($terms, $fields,$match);

return $SQL;

}

?>

voici l'erreur :

Une erreur de connexion à la base s est produite 36.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( ( p.nom_fr LIKE '%amilo%' OR p.description_fr LIKE '%amilo%' OR p.refere' at line 4

merci pour vos réactions.

abdel

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour paulanna,

tu n'as pas une idée ou chercher ?

mon site est en ligne maintenant, tu peux faire un test sur www.htech.be

taper par exemple la letre A dans la zone de recherche et il va afficher tous les articles de la base (26000 articles!)

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

donc dans search.php, juste au dessus de ta requête, tu as un truc du genre :

$cmptype="AND";

if($match!=1) $cmptype="OR";

$where_clause.= " (".implode( $termArray, " $cmptype " ).") ";

$where_clause.="order by p.id desc";

Tu le mets ici ton LIMIT...

$cmptype="AND";

if($match!=1) $cmptype="OR";

$where_clause.= " (".implode( $termArray, " $cmptype " ).") ";

$where_clause.="order by p.id desc limit 0, 50";

Et dans ta requête, tu laisses le AND"; à la fin.

AND p.etat = '1' AND";

Dis moi si cela fonctionne chez toi.

Thierry

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

donc dans search.php, juste au dessus de ta requête, tu as un truc du genre :

$cmptype="AND";

if($match!=1) $cmptype="OR";

$where_clause.= " (".implode( $termArray, " $cmptype " ).") ";

$where_clause.="order by p.id desc";

Tu le mets ici ton LIMIT...

$cmptype="AND";

if($match!=1) $cmptype="OR";

$where_clause.= " (".implode( $termArray, " $cmptype " ).") ";

$where_clause.="order by p.id desc limit 0, 50";

Et dans ta requête, tu laisses le AND"; à la fin.

AND p.etat = '1' AND";

Dis moi si cela fonctionne chez toi.

Thierry

Super, le problème est reglé, je ne voudrai pas abuser mais j'ai une autre question sur ce fichier search.php

que faut-il changer dans le code pour pouvoir chercher le nom d'une catégorie ?

merci encore pour votre aide.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

je ne comprends pas bien ta demande.

Tu veux pouvoir faire une recherche par catégorie comme tu as la possibilité de faire une recherche par marque ?

(comme sur mon site ?)

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping