Montrer image dans le resultat d'une recherche

8 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour à tous :angry:

Actuellement quand on fait une recherche, on obtient comme affichage:

Numero + Categorie + Titre de l'article

Description du produit/article limité à 400 caractère.

Est il possible de modifier cela par l'affichage suivant :

3 colonnes:

1 ere colonne : numero

2 ieme colonne: image de l'article

3ieme colonne : Nom + description de l'article ?

Si oui, je pensez que cela doir se modifier ici (fichier search.php à la racine) :

if (count($terms) > 0) {
// initialisation pour les recherches
$i = 1;
$terme_existant = array();
$taille_texte_affiche = 400;
$bbcode = array('[tagsearch]', '[/tagsearch]');
$replace_bbcode = array('<span class="search_tag">', '</span>');
// recherche dans les produits
$fields[] = 'p.nom_' . $_SESSION['langue'];
$fields[] = 'p.descriptif_' . $_SESSION['langue'];
$fields[] = 'p.description_' . $_SESSION['langue'];
$fields[] = 'p.reference';
$sql = build_sql_produits($terms, $fields, $match);

unset($fields);

$result = query($sql);

if (num_rows($result) > 0) {
echo '<h2>' . RESULT_SEARCH . "</h2><br />";

while ($prod = fetch_assoc($result)) {
$nom = $prod['nom_' . $_SESSION['langue']];
$reference = $prod['reference'];
$descriptif = $prod['descriptif_' . $_SESSION['langue']];
// on supprime l'html de fckEditor
$description = strip_tags(html_entity_decode_if_needed($prod['description_' . $_SESSION['langue']]));
// on coupe le texte si trop long
if (strlen($description) > $taille_texte_affiche) {
$description = substr($description, 0, $taille_texte_affiche) . '...';
}

if (is_module_url_rewriting_active()) {
$urlprod = $wwwroot . '/' . rewriting_urlencode($prod['categorie']) . '-' . $prod['categorie_id'] . '/' . rewriting_urlencode($nom) . '-' . $prod['id'] . '.html';
$urlcat = $wwwroot . '/achat/cat-' . rewriting_urlencode($prod['categorie']) . '-' . $prod['categorie_id'] . '.html';
} else {
$urlprod = $wwwroot . '/achat/produit_details.php?id=' . $prod['id'];
$urlcat = $wwwroot . '/achat/index.php?catid=' . $prod['categorie_id'];
}
// on fait une recherche sur le texte sans accents avec les mots de l'utilisateur,
// si quelque chose est trouvé, on ajoute un BBCODE pour le marquer
// on ajoute dans le tableau $terme_existant[]

foreach($terms as $this_term) {
$preg_condition = getPregConditionCompatAccents($this_term);

$description = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $description, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
$nom = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $nom, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
// certains champ ne sont pas affichés, mais on test pour savoir si le mot se trouve dedans pour l'ajouter au tag_cloud
$reference = preg_match('/' . $preg_condition . '/i', $reference);
if ($reference > 0) {
$terme_existant[] = $this_term;
}
$descriptif = preg_match('/' . $preg_condition . '/i', $descriptif);
if ($descriptif > 0) {
$terme_existant[] = $this_term;
}
}
// on remplace le BBcode
$description = str_replace($bbcode, $replace_bbcode, $description);
$nom = str_replace($bbcode, $replace_bbcode, $nom);
// affichage
echo '<p>
<b>' . $i . '. <a href="' . $urlcat . '" class="normal">' . html_entity_decode_if_needed($prod['categorie']) . '</a></b> - <a href="' . $urlprod . '" class="normal">' . html_entity_decode_if_needed($nom) . '</a><br />
' . $description . '
</p>' . "\n";

$i++;
}
}
// recherche dans les articles
$fields[] = 'a.surtitre_' . $_SESSION['langue'] ;
$fields[] = 'a.titre_' . $_SESSION['langue'] ;
$fields[] = 'a.texte_' . $_SESSION['langue'] ;
$fields[] = 'a.chapo_' . $_SESSION['langue'] ;
$sql = build_sql_articles($terms, $fields, $match);
unset($fields);

$result = query($sql);

if (num_rows($result) > 0) {
if ($i == 1) {
echo '<h2>' . RESULT_SEARCH . "</h2><br />";
}
while ($prod = fetch_assoc($result)) {
$surtitre = $prod['surtitre_' . $_SESSION['langue']];
$titre = $prod['titre_' . $_SESSION['langue']];
// on supprime l'html de fckEditor
$texte = strip_tags(html_entity_decode_if_needed($prod['texte_' . $_SESSION['langue']]));
// si trop long, on coupe
if (strlen($texte) > $taille_texte_affiche) {
$texte = substr($texte, 0, $taille_texte_affiche) . '...';
}
$chapo = strip_tags(html_entity_decode_if_needed($prod['chapo_' . $_SESSION['langue']]));

if (strlen($chapo) > $taille_texte_affiche) {
$chapo = substr($chapo, 0, $taille_texte_affiche) . '...';
}

if (is_module_url_rewriting_active()) {
$url_art = $wwwroot . "/lire/" . rewriting_urlencode($prod['rubrique']) . '-' . $prod['rubrique_id'] . '/' . rewriting_urlencode($titre) . '-' . $prod['id'] . ".html";
$url_rub = $wwwroot . "/lire/" . rewriting_urlencode($prod['rubrique']) . '-' . $prod['rubrique_id'] . ".html";
} else {
$url_art = $wwwroot . "/lire/article_details.php?rubid=" . $prod['id'];
$url_rub = $wwwroot . "/lire/index.php?rubid=" . $prod['rubrique_id'];
}
// on fait une recherche sur le texte sans accent avec les mots de l'utilisateur,
// si qqchose est trouvé, on ajoute un BBCODE pour le marquer
// on ajoute dans le tableau $terme_existant[]
foreach($terms as $this_term) {
$preg_condition = getPregConditionCompatAccents($this_term);

$texte = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $texte, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
$titre = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $titre, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
// certains champ ne sont pas affichés, mais on test pour savoir si le mot se trouve dedans pour l'ajouter au tag_cloud
$surtitre = preg_match('/' . $preg_condition . '/i', $surtitre);
if ($surtitre > 0) {
$terme_existant[] = $this_term;
}

$chapo = preg_match('/' . $preg_condition . '/i', $chapo);
if ($chapo > 0) {
$terme_existant[] = $this_term;
}
}
// on remplace le BBcode
$texte = str_replace($bbcode, $replace_bbcode, $texte);
$titre = str_replace($bbcode, $replace_bbcode, $titre);
// affichage
echo '<p>
<b>' . $i . '. <a href="' . $url_rub . '" class="normal">' . html_entity_decode_if_needed($prod['rubrique']) . '</a></b> - <a href="' . $url_art . '" class="normal">' . html_entity_decode_if_needed($titre) . '</a><br />
' . $texte . '
</p>' . "\n";

$i++;
}
}[/codebox]

mais j'essaie de voir comment je peux m'y prendre.

Merci pour votre aide :$

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

euh.... personne ne peut me répondre :-s

j'ai deja fait les colonnes pour la recherche et il ne me reste plus qu'a mettr l'image du produit...

please , je seche :'(

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans le code que vous avez indiqué, à côté des autres lignes avec $fields[], rajoutez :

$fields[] = 'p.image1';

et ensuite là où vous avez votre code HTML avec les colonnes, rajoutez une balise image qui appelle en attribut src la valeur $GLOBALS['wwwroot'].'/upload/'.$prod['image1']

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Dans le code que vous avez indiqué, à côté des autres lignes avec $fields[], rajoutez :

$fields[] = 'p.image1';

et ensuite là où vous avez votre code HTML avec les colonnes, rajoutez une balise image qui appelle en attribut src la valeur $GLOBALS['wwwroot'].'/upload/'.$prod['image1']

Super ca marche... ou presque :huh:

Ben vi, il reste le cas ou l'on choisit une couleur ou plusieurs couleurs pour un article, dans ce cas, il me semble qu'il doit se connecter à une autre table pour recuperer le lien de l'image, non ?

Une idée ? :)

Encore un grand merci :angry:

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Oui il y a des images par couleurs qui existent, mais ça donnent N images pour un même produit. Or là on est dans la logique de recherche donc il me semble cohérent de ne pas y toucher.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Oui il y a des images par couleurs qui existent, mais ça donnent N images pour un même produit. Or là on est dans la logique de recherche donc il me semble cohérent de ne pas y toucher.

oui, tout a fait d'accord mais pour ces articles, on ne peut pas afficher l'image.

voila le lien pour exemple:

http://www.domainehaisha.com/boutique/sear...e=1&match=2

hors, il y a bien des photos pour ces produits :angry:

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Plutôt que des images par couleur, est-ce que pour ces produits, vous n'avez pas des image2, ou 3, ... défini et non pas image1 ?

Regardez en BDD via phpmyadmin, ça vous éclairera.

Si vous voulez apporter le support des images N, alors rajoutez

$fields[] = 'p.image2';

...

et ensuite

$i=1;

while(empty($prod['image'.$i]) && $i<=10){

$i++;

}

et ensuite si $i vaut moins que 10, alors c'est $prod['image'.$i] qu'il faut prendre, sinon c'est qu'il n'y a pas d'image.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Plutôt que des images par couleur, est-ce que pour ces produits, vous n'avez pas des image2, ou 3, ... défini et non pas image1 ?

Regardez en BDD via phpmyadmin, ça vous éclairera.

Si vous voulez apporter le support des images N, alors rajoutez

$fields[] = 'p.image2';

...

et ensuite

$i=1;

while(empty($prod['image'.$i]) && $i<=10){

$i++;

}

et ensuite si $i vaut moins que 10, alors c'est $prod['image'.$i] qu'il faut prendre, sinon c'est qu'il n'y a pas d'image.

Merci pour ton aide :)

J'y suis arrivé à présent...

Voilà ce que j'ai fait :


if (num_rows($result) > 0) {
echo '<h2>' . RESULT_SEARCH . "</h2><br />";
echo '<table border="0" cellpadding="1" cellspacing="0">
<tr>
<td width="30"><h2>N°</h2></td>';
// <td width="100"><center><h2>Catégorie</h2></center></td>
echo' <td><h2><center>Article + Description</h2></center></td>
<td width="80"><center><h2>Image</h2></center></td>
</tr>';

while ($prod = fetch_assoc($result)) {
$id = $prod['id'];
$cid = $prod['default_color_id'];
$nom = $prod['nom_' . $_SESSION['langue']];
$reference = $prod['reference'];
$descriptif = $prod['descriptif_' . $_SESSION['langue']];
// on supprime l'html de fckEditor
$description = strip_tags(html_entity_decode_if_needed($prod['description_' . $_SESSION['langue']]));
// on coupe le texte si trop long
if (strlen($description) > $taille_texte_affiche) {
$description = substr($description, 0, $taille_texte_affiche) . '...';
}

if (is_module_url_rewriting_active()) {
$urlprod = $wwwroot . '/' . rewriting_urlencode($prod['categorie']) . '-' . $prod['categorie_id'] . '/' . rewriting_urlencode($nom) . '-' . $prod['id'] . '.html';
$urlcat = $wwwroot . '/achat/cat-' . rewriting_urlencode($prod['categorie']) . '-' . $prod['categorie_id'] . '.html';
} else {
$urlprod = $wwwroot . '/achat/produit_details.php?id=' . $prod['id'];
$urlcat = $wwwroot . '/achat/index.php?catid=' . $prod['categorie_id'];
}
// on fait une recherche sur le texte sans accents avec les mots de l'utilisateur,
// si quelque chose est trouvé, on ajoute un BBCODE pour le marquer
// on ajoute dans le tableau $terme_existant[]

foreach($terms as $this_term) {
$preg_condition = getPregConditionCompatAccents($this_term);

$description = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $description, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
$nom = preg_replace('/' . $preg_condition . '/i', $bbcode[0] . '$0' . $bbcode[1], $nom, -1, $compteur);
if ($compteur > 0) {
$terme_existant[] = $this_term;
}
// certains champ ne sont pas affichés, mais on test pour savoir si le mot se trouve dedans pour l'ajouter au tag_cloud
$reference = preg_match('/' . $preg_condition . '/i', $reference);
if ($reference > 0) {
$terme_existant[] = $this_term;
}
$descriptif = preg_match('/' . $preg_condition . '/i', $descriptif);
if ($descriptif > 0) {
$terme_existant[] = $this_term;
}
}
// on remplace le BBcode
$description = str_replace($bbcode, $replace_bbcode, $description);
$nom = str_replace($bbcode, $replace_bbcode, $nom);

// affichage
?>

<tr bgcolor="<?echo ($i % 2 == 0 ? '#FFFAAE' : '#ffffff' );?>">
<?php
echo'<td><center>'.$i .'</center></td>';

echo'<td><b><u><a href="' . $urlprod . '" class="normal">' . html_entity_decode_if_needed($nom) . '</a></b></u><br />' . $description . '</td>';
if (!empty($prod['image1'])&& $cid==0)
echo' <td width="80"><center><a href="' . $urlprod . '" class="normal"><img src="'.$GLOBALS['wwwroot'].'/upload/'.$prod['image1'].'" width="50" height="50"></a></center></td>';
if($cid>0)
{
$sql_condition = ' AND couleur_id = "'.intval($prod['default_color_id']).'"'; // Si il n'y a pas de couleur choisie, on séléctionne la couleur par défaut choisie
$sql = 'SELECT *
FROM peel_produits_couleurs
WHERE produit_id="' . intval($prod['id']) . '" ' . $sql_condition . "
ORDER BY couleur_id ASC
LIMIT 1" ;
$q = query($sql);
if ($resultimage = fetch_assoc($q)) {

for($j = 1;$j <= 10;$j++) {
if (!empty($resultimage['image' . $j])) {
$product_images[] = $resultimage['image' . $j];
}
}
}

echo' <td width="80"><center><a href="' . $urlprod . '" class="normal"><img src="'.$GLOBALS['wwwroot'].'/upload/'.$resultimage['image1'].'" width="50" height="50"></a></center></td>';

}
echo' </tr>';

$i++;
}
echo '</table>';
}[/codebox]

à présent via ce lien: http://www.domainehaisha.com/boutique/sear...e=1&match=2, on peut voir que tout s'affiche :)

Problème résolu ;)

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