Recherches avec FULLTEXT

Répondre
jackbocar
le 04/07/2013 à 17:47
jackbocar
Bonjour,

Oui, c’est exactement ça.

Alors, comment utiliser ton code qui visiblement est bien plus académique que le mien ?

Merci de me faire un exemple

Jack Bocar
LupusMic
le 04/07/2013 à 20:05
LupusMic
Tu vois, ça c'est le genre de question que tu devrais te poser ;)

Bon, l'ordinateur ne sait pas ce qu'est une ville, il faut donc lui dire. Donc il faut que tu prévois une liste de villes.

Mon code n'est pas plus académique, il est juste plus généraliste.

Bref, il faut que tu considères une liste de villes, et que tu l'utilises pour générer le tableau de traduction.

<style>
.highlight
{
font-weight: bolder;
color: #ff0000;
}
</style>
<?php
function highlight($text, $words)
{
$tr_table = array();
foreach($words as $word)
$tr_table[$word] = sprintf('<span class=\'highlight\'>%s</span>'
, htmlentities($word, ENT_NOQUOTES)
);

return strtr($text, $tr_table);
}


$cities = array('Paris', 'Londres', 'Berlin', 'Rome', 'Dublin');

$out = array();

// XXX insère ton code de connexion à la BD et de préparation de la requête
$result = $dbh->query($sql);
if($result)
{
$out[] = '<table>';
foreach ($result as $row)
{
$out[] = '<tr>';
$out[] = '<td>'.htmlentities($row['locomotion'], ENT_NOQUOTES).'</td>';
$out[] = '<td>'.htmlentities($row['date'], ENT_NOQUOTES).'</td>';
$out[] = '<td>'.highlight(htmlentities($row['resumer'], ENT_NOQUOTES), $cities).'</td>';
$out[] = '<td>'.htmlentities($row['impressions'], ENT_NOQUOTES).'</td>';
$out[] = '</tr>';
}
$out[] = '</table>';
}

print implode("\n", $out);
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
jackbocar
le 05/07/2013 à 16:03
jackbocar
Bonjour,

Merci pour ton code et pour le temps que tu as mis à le réaliser.

Ton code trouve toutes les villes et villages mentionnés dans la liste « cities ».

Par contre, j'ai un problème inexplicable pour moi.

Lorsque les caractères sont bruts à la sortie de la base de données, plus exactement accentués, le code n'affiche rien s'il rencontre une lettre é, è, à, ô, ù etc.

Lorsque les caractères sont traduits en entités HTML « é par &#233; », il affiche tout le texte avec les entités HTML exemple été par « &#233;t&#233; »

Lorsque je place la fonction « nl2br », il affiche « <br> ».

J'ai converti quelque entrées de la table en enlevant tous les caractères accentués, et les remplacés « été par ete », tout vas bien, tout s'affiche, correctement, sauf bien sûr les sauts de ligne, « nl2br » affiche toujours « <br> ».

Je ne sais quoi dire sur ces évènements particuliers.

Encore merci
Jack Bocar
LupusMic
le 05/07/2013 à 17:50
LupusMic
La fonction htmlentities retourne une chaîne vide si elle rencontre un encodage erroné.

Je ne sais pas comment tu gère l'encoding, mais c'est un truc qui peut poser problème s'il n'est pas correctement géré.

Tu as mon email, il faudrait que je regardes plus en profondeur ton code et les données en base pour vraiment comprendre ce qui se passe.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours