j'y comprend rien

6 messages dans ce sujet

Posté(e) · Signaler ce message

pourtant la requet a l'air bonne AIDEZ MOI

quand je lance la recherche le filtre en ajax monte tous les produits même ceux hors ligne alors que la requet et bien afficher etat = 1

voici le code : MERCI POUR VOTRE AIDE

<?php

include('../../configuration.inc.php');

header("Pragma: no-cache");

header("Expires: 0");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Content-type: application/xml");

header('Content-type: text/html') ;

if(!empty($_POST['search']))

{

$rqProdSearch = "SELECT * FROM rv_produits INNER JOIN rv_sites_pivots ON (id = produit_id)

WHERE etat = '1' AND site_id = '".intval($_SESSION['ecom']['id'])."'AND etat='1'

AND `nom_".$_SESSION['langue']."` LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']),ENT_QUOTES)) . "%'

OR `reference` LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']),ENT_QUOTES)) . "%'

OR `descriptif_".$_SESSION['langue']."` LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']),ENT_QUOTES)) . "%'

ORDER BY `nom_".$_SESSION['langue']."`

DESC LIMIT 0,2000";

$rsProdSearch = mysql_query($rqProdSearch) or DIE('Une erreur de connexion &agrave; la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());

if (mysql_num_rows($rsProdSearch) > 0) {

echo "\n";

while ($prodSearch = mysql_fetch_array($rsProdSearch)) {

echo "\n<img src=\"$wwwroot/images/menminus.gif\" alt=\"\" />&nbsp;<a href=\"".$wwwroot."/achat/produit_details.php?id=".$prodSearch['id']."\">" . utf8_encode($prodSearch['nom_'.$_SESSION['langue'].'']) . "</a><br />";

}

echo "\n";

}

else {

echo AUCUN_RESULTAT;

}

}

?>

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Il s'agit d'un problème de parenthèses dans le SQL : il y a au moins un OR dans le WHERE, donc il faut forcer ce que vous souhaitez en mettant des parenthèses.

Je viens de vérifier dans Premium 5.5 qui est sortie aujourd'hui : pas de problème.

$rqProdSearch = "SELECT p.*, c.id as categorie_id, c.nom_" . $_SESSION['langue'] . " as categorie

FROM peel_produits p

INNER JOIN peel_produits_categories pc ON p.id = pc.produit_id

INNER JOIN peel_categories c ON c.id = pc.categorie_id

WHERE p.etat = '1'

AND (p.nom_" . $_SESSION['langue'] . " LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%'

OR p.reference LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%'

OR p.descriptif_" . $_SESSION['langue'] . " LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%')

ORDER BY p.nom_" . $_SESSION['langue'] . "

DESC LIMIT 0,10";

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Il s'agit d'un problème de parenthèses dans le SQL : il y a au moins un OR dans le WHERE, donc il faut forcer ce que vous souhaitez en mettant des parenthèses.

Je viens de vérifier dans Premium 5.5 qui est sortie aujourd'hui : pas de problème.

$rqProdSearch = "SELECT p.*, c.id as categorie_id, c.nom_" . $_SESSION['langue'] . " as categorie

FROM peel_produits p

INNER JOIN peel_produits_categories pc ON p.id = pc.produit_id

INNER JOIN peel_categories c ON c.id = pc.categorie_id

WHERE p.etat = '1'

AND (p.nom_" . $_SESSION['langue'] . " LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%'

OR p.reference LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%'

OR p.descriptif_" . $_SESSION['langue'] . " LIKE '" . addslashes(htmlspecialchars(trim($_POST['search']), ENT_QUOTES)) . "%')

ORDER BY p.nom_" . $_SESSION['langue'] . "

DESC LIMIT 0,10";

merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

merci

y a juste un petit probleme concernant la recherche .

apparament le filtre s'exectue correctement mais il affiche le produit (dans la liste sous la recherche )

autant de fois qui est mis dans un rayon

si le produit ce trouve dans 2 rayons l'affichage il affiche 2fois la ligne du produit

merci d'avance

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ajouter GROUP BY p.id avant ORDER BY dans la requête

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir,

La solution proposée par paulanna devrait effectivement vous donner le résultat demandé.

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