La fonction de recherche produit

19 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour tt le monde,

j'essaye depuis qq tps, de modifier le fichier : search.php ( j'ai tjrs l'original . lol ) malgré de nbrs recherches sur le forum , je trouve pas :-(

Lorsqu'une recherche est lancée coté client, avec un term X , je souhaiterais que l'internaute puisse voir dans le résultat trouvé l'image des produits en plus .

j'aurais aimé que le résultat s'affiche comme si l'on visitait les produits d'une catégorie . ( çà , je pourrais peut être y arriver lol )

j'ai déjà vu ce que je demande , sur un site "référencé" sur peel.fr, mais je ne sais plus lequel , c'est 100 fois mieux question esthétique d'afficher l'image, au lieu de simplement du texte, avec les mots "clés" en sur brillance.

QQ à déjà pratiqué cette modif , afin de m'éclairer sur la méthode ?

( au stade de ma modif , lol , je rentre le mot à rechercher, mais plus aucun résultat ... ) je remettrais le fichier d'origine en attendant...

Bon courage aux autres ... @+

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

tu parles bien de la page search.php ou bien du moteur de recherche en ajax avec le bouton ok ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

tu parles bien de la page search.php ou bien du moteur de recherche en ajax avec le bouton ok ?

Bonjour, Paulanna

Oui ma demande concerne bien le fichier seach.php, je suis sur que c'est pas tres difficile, mais suis pas encore assez doué lol

je te mettrais bien mes modifs en codebox ici, mes cà doit être trp drôle à voir ..! pour les connaisseurs .

Par contre , je ne savais pas, kil y a vait un autre module de recherche en Ajax avec bouton ok ....

A koi sert t'il ? j'ai vu aucun renseignement ds ma V5 à ce sujet .

Merci Paulanna

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

fais moi passer ton fichier

concernant l'autre moteur de recherche :

lorsque tu saisis une lettre par exemple tu as la liste des produits qui s'affichent sans avoir a recharger la page (Ajax)

la validation du formulaire pointe vers search.php

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

C'est bien pratique, j'ai lu un post à ce sujet ds les archives, en ayant rechercher justement le mot " recherche " ou "search.php" ds le forum .

Mais , comme je te disais, je n'ai auncun moyen d'activer ce module Ajax de recherche , du moins, je crois pas l'avoir

je t'ai envoyé mon fichier search.php en mail.

Merc bcp !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

je me suis permis de visiter ton site, c'est ma jolie femme qui va être contente ! lol

Très beau site !

j'ai regarder ton mode de recherche, j'aurais souhaité un style égal , simple, et avec l'affichage des résultats qui correspond au "Template" de ton site .

J'ai supprimé :

le champ des " $match ", pour ne pas choisir : " tous les mots, phrase exacte , etc ..

les aides qui s'affichent qd on est sur la page de recherche ( chien ET chat ...etc... ) ,

J'ai essayé de rajouter une variable $img = $prod ['image1']

mais après je sais plus trop, à cause des liaisons de table ....comment afficher les images des produits qui contiennent le mot recherché ...

Comprend plus trp ( j'ai trouvé qq tuto à ce sujet mais bon... )

çà va rentrer lol .

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

j'ai un fichier ds le repertoire : module/search/produit.php <<<< à quoi sert il ? est ce celui ci qui gère le module de recherche en AJAX ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

le menu recherche de droite est la fonction => affiche_menu_recherche dans bas.php

tu trouveras cette dernière dans templates.php

merci pour ton "appréciation"

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

le menu recherche de droite est la fonction => affiche_menu_recherche dans bas.php

tu trouveras cette dernière dans templates.php

merci pour ton "appréciation"

Voilà le code ds template.php :

<h2><label for="search"><?php echo SEARCH ?></label></h2>
<p>

<form method="get" action="<?php echo $wwwroot ?>/rechercher.html" id="recherche" name="searchform">
<input type="hidden" name="mode" value="1">
<input type="hidden" name="match" value="1">
<input type="text" name="search" id="foo" value="" onkeyup="loadData();" style="width:150px;"/>
<input type="submit" value="<?php echo OK ?>" name="action" />
</form>
</p>

<p><div id="placement_produit"></div></p>[/codebox]

Je ne peux pas afficher les images des produits a partir de ce code ... non ?

C'est bien search.php qui gère le résultat ainsi que son affichage ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

tu as <form method="get" action="<?php echo $wwwroot ?>/rechercher.html" id="recherche" name="searchform">

regarde si tu as un fichier rechercher.html à la racine de ton site sinon c'est :

<form method="get" action="<?php echo $wwwroot ?>/search.php" id="recherche" name="searchform">

peut être que le code a été modifié

ce bout de code permet de faire une recherche avec ajax

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

nous y voilà, lol

Ce fichier, rechercher.html il n'est nul par sur mon serveur ... je l'ai chercher partout ..rien du tout .

je vais donc commencer par comme tu le conseilles change cette " Value "

après je verrais bien ...lol je vais y arriver à afficher mes images !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci Paulanna , mais ..... :

j'avais réussis cà déjà , regardes stp :

$fields[] = "p.image1";

$image = "".$prod['image1']."";

Mais c'est çà que je savais pas faire >> echo "".stripslashes($image)."\n"; ( c'est çà qui est donc censer afficher l'image ? )

çà fonctionne pas .... :)

tu peux vérifier : http://mister-hightech.com et vers le haut, clic donc sur rechercher et mot clé " écran " si tu as le tps .

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

heu oui oups en effet j'ai oublié le chemin de l'image fais donc :

echo "<img  src=\"$repertoire_upload/".$image."\" />";

ps: ton fichier recherche.html existe bien

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

heu oui oups en effet j'ai oublié le chemin de l'image fais donc :

echo "<img  src=\"$repertoire_upload/".$image."\" />";

ps: ton fichier recherche.html existe bien

je crois qu'en fait, c'est pas un fichier, ( en lui même ), comme M.Bagur m'a fait la ré écriture d'url , çà doit être le nom ré écrit de : "search.php" , ( si encore, je comprends qu'est ce que la réécriture d'url ...lol)

Promis, je l'ai cherché vraiment partout, ( tous les fichiers du serveur sont sauvgardés sur une partition de mon HDD , j'ai fais une recherche sur tous mes disques, RAS.

Je dois aller manger, ma femme me crie lol .... Bon apétit à tt le monde .

Merci encore Paulanna, je test après . Bonne soirée si on se "voit" pas !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

oui pour le fichier c'est possible

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Effectivement, Paulanna, avec les connaissances dont je dispose à ce jour, j'aurais pas pu faire cette ligne de code lol !

Merci en tout cas, çà fonctionne super, .

Reste plus qu'à me mettre au boulot , pour que les résultats soient affichés comme s'ils étaient dans une catégorie ...Aie Aie

:)

Encore merci, çà me fait un gros poig en moins ... je vais maintenant étudier mon fichier template.php, pour voir comment je pourrais coder la partie : if (mysql_num_rows($RESULT) > 0)

en affichant le résultat comme l'affichage des produits dans les catégories.

Bye Paulanna ,

PS : heureux de voir , kil n'y a pas que des égoïstes ds les forums !

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

çà y est , Enfin, j'ai bien réussit à afficher tous les résultats comme je le souhaitais ! Cool , suis trop fier lol... merci pour ton aide Paulanna !

Je voudrais faire une petite amélioration, pour limiter le résultat à 8 produits par page, j'ai récupéré la variable ds template :

$LINKS => new multipage (); mais je sais pas ni où ni comment l'insérer ds mon code ,

+ , impossible de récupérer l'image2 du produit , donc , pas de bouton " zoom " dans le résultat de la recherche ...

je doit partir un instant, qd je reviens, je posterais les codes que j'ai fais , si qqn pourrait m'aider à résoudre ces 2 points ... çà serait sympa . Merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

voilà donc les codes :

Dans template.php >> morceau de code que j'ai inserer en plus :

											<!-- MA FONCTION POUR RESULTAT D'UNE RECHERCHE -->
<?
function template_index_produit_search(
$id,
$nom,
$descriptif,
$image1,
$prix)

{

global $wwwroot;
global $dirroot;
global $repertoire_images ;
global $repertoire_upload ;
$sqlProd = "
SELECT p.id
, p.nom_".$_SESSION['langue']."
, p.descriptif_".$_SESSION['langue']."
, p.image1
, p.prix
FROM peel_produits p
WHERE p.etat = '1' AND p.id = '".intval($id)."' ORDER BY RAND() ";

$resProd = mysql_query($sqlProd);

$prod = mysql_fetch_array($resProd);

$resCat = mysql_query("SELECT categorie_id FROM peel_produits_categories WHERE produit_id = '".intval($prod['id'])."'") ;

$Cat = mysql_fetch_object($resCat);

echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"228\" height=\"150\"style=\"background:#ffffff;border:1px solid #2973B6;\"><tr><td colspan=\"2\" valign=\"top\">";

echo "<tr><td valign=\"top\">";
if (empty($prod['on_check'])) {

href_link($prod['id'], vn($Cat->categorie_id), $class="");

}
if (!empty($image1)) {

$width = calcul_largeur_image($repertoire_upload."/".$image1);

$largeur = ($width >= 150) ? "80" : $width;

echo "<img src=\"$repertoire_upload/".$image1."\" width=\"$largeur\" border=\"0\" alt=\"".$nom."\"/>";

} else {

echo "<img src=\"$wwwroot/images/photo-non-disponible.gif\" width=\"80\" alt=\"photo non disponible\" border=\"0\">";

}

echo (empty($on_check)) ? "</a>" : "";
echo "</td><td valign=\"top\" style=\"padding-left:25px;\">";
echo "<h3>".$nom."</h3><br />";
affiche_prix_catalogue($id);
if (empty($on_check)) {

echo "";
} else {

affiche_check($id);

}
echo "</td></tr>";
echo "<tr><td colspan=\"2\" style=\"padding-left:10px;padding-bottom:10px;\" >";
echo (!empty($image2)) ? "<a href=\"".$repertoire_upload."/".$image2."\" rel=\"lightbox\" /><img src=\"".IMG_ZOOM."\"></a>" : "" ;


if (empty($on_check)) {

href_link($prod['id'], vn($Cat->categorie_id), $class="");

echo "<img src=\"".IMG_MORE."\"></a></span>";

}

echo "</td></tr></table>";

if (est_identifie()) {

if (a_priv("admin")) {

echo "<p><a href=\"administrer/produits.php?mode=modif&id=".$id."\" class=\"label\">MODIFIER LE PRODUIT</a></p>";

}

}

}
?>[/codebox]

Mon fichier : search.php :

[codebox]<?php
include("configuration.inc.php");

$DOC_TITLE = "[PEEL.FR]";
define("IN_SEARCH", TRUE);
include("$repertoire_modele/haut.php");

/////////////////////////////////////////////////////////////////
// build the search terms array
// this will build the array to pass to build_sql()

$match = vb($_GET['match']);

$search = vb($_GET['search']);

$fields[] = "p.nom_".$_SESSION['langue']."";

$fields[] = "p.descriptif_".$_SESSION['langue']."";

$fields[] = "p.image1";

if (empty($search)){

$search="";
$searchtext="";

} else {

$search=trim(stripslashes($search));

$searchtext = htmlspecialchars($search);

$terms = build_search_terms($search, $match);

if(count($terms)>0){


$SQL = build_sql("peel_produits", $terms, $fields, $match);

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

if ($RESULT) {

if (mysql_num_rows($RESULT) == 0) {

echo "<h2>".RESULT_SEARCH."</h2>";

} else {

echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"1\" width=\"100%\">";

$nb_cellules = mysql_num_rows($RESULT);

$nb_colonnes = 2;

$j = 0;



while($prod=mysql_fetch_array($RESULT))
{

if ( $j % $nb_colonnes == 0 ) {

echo "<tr>";

}

if($j % $nb_colonnes !=0 OR $j % $nb_colonnes == 0 ) {

// on affiche une cellule
if ( $j % $nb_colonnes == 0 OR $j == $nb_cellules ) { echo "<td class=\"produit2col bordure\">"; } else { echo "<td class=\"produit2col\">"; }

template_index_produit_search(
intval($prod['id']),
html_entity_decode($prod['nom_'.$_SESSION['langue'].'']),
html_entity_decode($prod['descriptif_'.$_SESSION['langue'].'']),
$prod['image1'],
$prod['prix']
);

}

echo "</td>";

$j++;

if ( $j % $nb_colonnes == 0 OR $j == $nb_cellules ) {

echo "</tr>";

}

}



echo "<tr><td align=\"center\" class=\"normal\" colspan=\"2\">";

echo "</td></tr></table>";

}


}

}

}

?>

<?php

include("$repertoire_modele/bas.php");

/* FONCTIONS */

function build_search_terms($search, $match)
{

$terms=array();
$quote_terms=array();
/* Si c'est une phrase exacte */

if($match==3){

$terms[] = $search;

}
/* Si ce n'est pas une phrase exacte, on d&eacute;coupe la chaine */
else {



if ( strstr( $search, '"' ) ){

//first pull out all the double quoted strings (e.g. '"iMac DV" or -"iMac DV"')
preg_match_all( '/-*".*?"/', $search, $match );
$search = preg_replace( '/-*".*?"/', '', $search );
$quote_terms = preg_replace( '/"/', '', $match[0] );
}

//finally pull out the rest words in the string
$terms = preg_split( "/\s+/", $search, 0, PREG_SPLIT_NO_EMPTY );



}

$test = array_merge( $terms, $quote_terms);

//merge them all together and return
return array_merge( $terms, $quote_terms);


}

/////////////////////////////////////////////////////////////////
// build the sql statement's where clause
// this will build the sql based on the given information

function build_terms_clause($terms, $fields, $match)
{

static $where_clause;

if(empty($where_clause)){

while (list ($junk, $term) = each ($terms)) {

if(substr($term, 0, 1)=="-"){

$notmod="NOT ";

$term=substr($term, 1);

} else {

$notmod="";

}

reset($fields);

unset($likeArray);

while (list ($key, $val) = each ($fields)) {

$term=htmlspecialchars($term, ENT_QUOTES);

sql_tagcloud($term);

$likeArray[]=" $val $notmod "."LIKE '%$term%' ";


}

$termArray[] = " (".implode( $likeArray, " OR " ).") ";

}

$cmptype="AND";


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

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

$where_clause.="order by rand()";

}

return $where_clause;

}

/////////////////////////////////////////////////////////////////
// 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.descriptif_".$_SESSION['langue']."
, p.image1, p.prix, 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";

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

return $SQL;
}

?>

Si vous voulez sur votre site le module de recherche Ajax , inserez le code suivant dans votre fichier : haut.php ou bas.php,

suivant l'endroit que vous souhaitez qu'il apparaisse :

code : <?php affiche_menu_recherche()?>

*********************

Je suis loin d'être un pro du développement, il y a peut être des lignes qui sont inutiles, dans ces codes , je ne déchiffre pas encore tout lol.

En tout cas, tel quel , tout fonctionne bien sur mon site , vous pouvez allez voir si vous le souhaitez : http://mister-hightech.com ( Attention, le site est encore en test ! pas d'achat SVP )

J'espere que ce post pourra aider plusieurs personnes ! bye @+

PS: ( si qq améliore ce code, ( il n'aura pas de mal ) lol , ce serait sympa de m'informer ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ATTENTION !

LES MESSAGES DANS CE TOPIC , SONT EN RAPPORT AVEC MA V5 DE PEEL.

A vous d'arranger le code en fonction de votre version, et de vos codes d'origines.

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