Gizmalin
Messages postés3Date d'inscriptionmercredi 1 février 2006StatutMembreDernière intervention15 avril 2008
-
14 avril 2008 à 16:49
Gizmalin
Messages postés3Date d'inscriptionmercredi 1 février 2006StatutMembreDernière intervention15 avril 2008
-
15 avril 2008 à 15:26
Bonjour .
Apres quelques recherche non fructueuse sur le forum ,j'ai decidé de demander .( bon apres si j'ai raté la reponse dans le forum excusez moi en ;) )
Je suis en train de faire un moteur de recherche pour un site ( recherche simple ) juste des mots cléfs dans different champs, mais comme beaucoup (impression ) je galere avec la Case.
Alors un peu de code ;)
if(!empty ($_POST['txt_search'])){
//verification de la base
$search=$_POST['txt_search'];
// On selectionne les enregistrements contenant le mot clé
// dans les keywords ou le titre
$query = "SELECT *
FROM `publish`
WHERE `categorie`='".$cate."' AND `title` LIKE '%$search%'
OR `categorie`='".$cate."' AND `keywords` LIKE '%$search%'
OR `categorie`='".$cate."' AND `comment` LIKE '%$search%'";
$result = mysql_query($query);
$row = mysql_num_rows($result);
$Nombre = $row;
// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") {
echo ("
Aucun résultat ne correspond à votre recherche
" );
}else {
$query = "SELECT *
FROM `publish`
WHERE `categorie`='".$cate."' AND `title` LIKE '%$search%'
OR `categorie`='".$cate."' AND `keywords` LIKE '%$search%'
OR `categorie`='".$cate."' AND `comment` LIKE '%$search%'";
$result = mysql_query($query);
$row = mysql_num_rows($result);
$Nombre = $row;
// Si un seul enregistrement est trouvé, on affiche un message au singulier
if ($Nombre == "1") {
echo ("Un article trouvé
");
// Dans le cas contraire le message est au pluriel...
}else {
echo ("Résultat: $Nombre articles trouvés
");
};
..................
Voila donc le probleme est donc le suivant arrivé a ce que si l'utilisateur recherche :"article" qu'il trouve dans la base autant les mots "Article" que "article".
En vous remerciant tous d'avance.
Cordialement un NB dans le besoin ;)
Axe971
Messages postés75Date d'inscriptionmardi 20 novembre 2007StatutMembreDernière intervention 9 janvier 20092 14 avril 2008 à 18:32
Salut,
Il me semble que MYSQL gère la casse. M'enfin si ça ne fonctionne pas utilise les fonctions strtolower de PHP et LOWER de MYSQL.
En gros dans ta requête tu utilises LOWER pour chaque champ et en PHP tu utilises strtolower pour chaque variable.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 14 avril 2008 à 19:04
Salut,
Les champs de type TEXT ne sont pas sensibles à la casse, contrairement aux champs de type BLOB.
Lire la doc pour plus de détails : http://dev.mysql.com/doc/refman/5.0/fr/blob.html <hr size="2" width="100%" />Neige
N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
yoman64
Messages postés962Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 2 août 20102 14 avril 2008 à 22:46
Hello,
Moi je te fait juste quelques remarques sur ton code au passage.
$row = mysql_num_rows($result);
$Nombre = $row;
// Si aucun enregistrement n'est retourné,
// on affiche un message adéquat
if ($Nombre == "0") {
Euh non pourquoi réassigner deux fois la valeur de numrows ? En passant il retourne un ENTIER par une chaine alors pourquoi == "0"
psst: if (($Nombre mysql_num_rows($result)) 0) {
Aussi échape ta valeur, parce que la l'injection est possible (enfin pourquoi personne y pense jamais ). Sinon un champ text ou varchar est insensible à la casse, a moin que tu compare avec LIKE BINARY
Gizmalin
Messages postés3Date d'inscriptionmercredi 1 février 2006StatutMembreDernière intervention15 avril 2008 15 avril 2008 à 15:26
Bon je n'arrive pas a edité mon post precedent , donc je vais le doublé pour dire encor une fois merci a tout le monde et donné la solution de tout ce mik mak .
j'ai raisolu le probleme qui etait tout simplement l'interclassement de ma table utf8_bin qui comme son nom l'indique (ou pas ) est binaire et donc sensible a la case meme sur des champs de type texte ;) c est Yoman 64 qui ma mis sur la voie avec le compare LIKE BINARY Donc voila maintenant sa marche comme ca devrais .
A bientot tout le monde encor merci probleme resolue ;)