Problème d'écriture des certaines lettres

5 messages dans ce sujet

Posté(e) · Signaler ce message

Bon comme la réponse apporté ne permet pas la correction de mon problème je recommence.

J'ai une version 2.8 de peel Premium.

Une réponse de Gilles indique de rajouter un code sur le fichier search... cela n'a eu aucun effet.

Voici à quoi ressemble le fichier search sur mon site :

<?php

include("configuration.inc.php");

$DOC_TITLE = "[PEEL.FR]";

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']."";

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 "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";

echo "<tr>";

echo "<td valign=\"TOP\" class=\soustitrepage\"><b>R&eacute;sultats de la recherche</b><p>&nbsp;</p></td>";

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

$i = 1;

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

$nom = eregi_replace($searchtext, "<span style=\"background:#FFFF00\">".$searchtext."</span>", $prod['nom_'.$_SESSION['langue'].'']);

$descriptif = eregi_replace($searchtext, "<span style=\"background:#FFFF00\">".$searchtext."</span>", $prod['descriptif_'.$_SESSION['langue'].'']);

$urlprod = "$wwwroot/achat/produit_details.php?catid=".$prod['categorie_id']."&id=.$prod['id];

$urlcat = "$wwwroot/achat/index.php?catid=".$prod['categorie_id'];

echo nl2br("<b>$i.</b> <a href=\"$urlcat\" class=\"normal\">".stripslashes($prod['categorie'])."</a> - <a href=\"$urlprod\" class=\"normal\">".stripslashes($nom)."</a>&nbsp;\n".stripslashes($descriptif)."</a>\n");

$i++;

}

}

else {

echo "<span class=\"normal\">Votre recherche ne comporte pas de r&eacute;sultats. merci de la renouveler.</span>";

}

}

}

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="GET" name="searchform">

<table cellpadding=0 cellspacing=0 border=0 >

<tr><td class="entete" align=center ><?echo strtoupper(SEARCH_PRODUCT)?></td></tr>

</table>

<table border="0" cellspacing="0" cellpadding="2">

<tr>

<td align="CENTER" valign="MIDDLE">

<br />

<table border="0" cellpadding="2" cellspacing="0" class="texte">

<tr>

<td align="right">

&nbsp;&nbsp;Rechercher:&nbsp;&nbsp;</td>

<td>

<input type="text" name="search" size="40" value="<?php echo $searchtext; ?>">&nbsp;

<input class="bouton" type="Submit" value="Rechercher" />&nbsp;&nbsp;</td>

</tr>

<tr>

<td align="right">&nbsp;</td>

<td>

<input type="hidden" name="mode" value="1">

<select name="match">

<option value="1" <?php if($match==1) echo "selected"; ?>>Tous les mots</option>

<option value="2" <?php if($match==2) echo "selected"; ?>>N'importe quel mot</option>

<option value="3" <?php if($match==3) echo "selected"; ?>>La phrase exacte</option>

</select>

&nbsp;&nbsp;&nbsp;&nbsp;

</td>

</tr>

</table>

</td>

</td>

</tr>

</table>

</form>

<p>

<b class="label">Aide sur la recherche</b><br />

<span class="normal"><br />

ET par d&eacute;faut. Dans ce cas, la recherche pour chien et chat retourne tous les

messages contenant ces mots quelque part. <br />

Les GUILLEMETS (") permettent des recherches sur des phrases. Dans ce cas, la recherche pour "chien chat" retourne

tous les messages contenant cette phrase exacte, avec l'espace. <br />

Le MOINS (-) &eacute;limine les mots. Dans ce cas, la recherche pour chien et -chat retourne tous les messages contenant chien mais pas chat. Vous pouvez mettre un MOINS (-) devant une phrase entre GUILLEMETS ("), comme chien -"chat siamois". <br />

Le moteur de recherche ne diff&eacute;rencie pas majuscules et minucules ; il recherche

dans le champ que vous choisissez. </span>

<p>

<p>

<?php

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

/* FONCTIONS */

function build_search_terms($search, $match)

{

$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 {

$quote_terms=array();

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=addslashes($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 p.id desc";

}

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

WHERE 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;

}

?>

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

J'ai supprimé votre message dans http://forum.peel.fr/probleme-d-ecriture-mots-bo-t3631.html pour recadrer ici la discussion.

Si vous appliquez sur un fichier :"

Bonjour,

C'est que vous devez avoir une vieille version qui n'a pas :

header('Content-type: text/html; charset=utf-8') ;

au début du fichier modules/search/produit.php

et/ou

utf8_encode($prodSearch['nom_' . $_SESSION['langue']])

dans le contenu généré dans ce fichier.

Dans votre version ce fichier est peut-être ailleurs dans l'arborescence.

Vous pouvez le trouver je pense en cherchant "reference LIKE" sans les guillemets

Gilles"

Il y a forcément un effet !

Sinon c'est que vous ne travaillez pas sur le bon fichier.

Le fichier que vous donnez est un fichier de recherche qui affiche une page, pas un fichier de réponse à une requête javascript / AJAX.

Votre version étant beaucoup trop ancienne, je ne peux pas vous aider sur la localisation du fichier à modifer.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour. merci de votre réponse

la recherche LIKE, c'est quoi.. je doit la faire sur tous mes fichier pour trouver le bon fichier.

Je ne sais pas comment on procéde à une recherche LIKE ? Avec quel outils, logiciel....

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Re.

Voici une image de mon répertoire.... peut être pouvez me dire ou j epeux trouver le fichier sur lequel je doit ajouter :

header('Content-type: text/html; charset=utf-8') ;

au début du fichier modules/search/produit.php

et/ou

utf8_encode($prodSearch['nom_' . $_SESSION['langue']])

dans le contenu généré dans ce fichier.

Image2.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

LIKE est un mot clé SQL, je vous invite à regarder la documentation de MySQL si vous voulez découvrir comment fonctionnent les recherches sur du texte.

Concernant la localisation du fichier, comme dit préalablement sur le forum, je ne peux pour ma part vous fournir un support spécifique à la version 2.8 qui est beaucoup trop ancienne.

Gilles

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