Mise en majuscules

cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005 - 6 juil. 2005 à 22:28
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005 - 8 juil. 2005 à 19:01
Bonsoir,

Je souhaite que lors d'une recherche dans une base MySQL à partir d'un formulaire en ligne, la recherche se fasse sur les mots de la base qu'ils soient en majuscules, en minuscules ou un mélange. Comment faire ?
Dans un premier temps j'avais pensé forcé les majuscules puisque les mots cherchés sont en général en majuscules (noms propres) mais si on cherche sur d'autres mots que les noms propres ça ne fonctionne plus. J'avais :

$res = strtoupper ($_POST[recherche]);
$req = mysql_query("SELECT url, description from annuaire_tbl where description LIKE '%res%' Order by url Asc limit 0,1 ") or die ("erreur req ".mysql_error());

Mais ça ne marche pas de toute façon.

25 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 juil. 2005 à 16:34
Faut voir ce que contient ta variable

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
8 juil. 2005 à 16:41
Je suis trop bête ! (on n'est jamais si bien servi que par sois-même!)
En fait c'est la limite à 1 réponse et les textes identiques quand à leur contenus qui faussent le résultat. Le résultat ne tient effectivement pas compte de la casse, c'est juste le surlignage à l'affichage qui ne reprend que la graphie exacte de la recherche !!!

En changeant le texte avec des "NOUS" uniquement il est bien également donné comme réponse à une recherche de "nous"... mais le mot n'est pas surligné. D'où une nouvelle question : comment faire avec la requête str_replace pour qu'elle remplace toutes les écritures (maj/min et alternances) et pas seulement la version saisie dans le formulaire ?
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 juil. 2005 à 16:44
strtolower($chaine) et tu fais un str_replace de ta chaine passée en
minuscules, ou sinon tu fais un preg_replace('`chaine`i','chaine',$chaine);

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
8 juil. 2005 à 17:14
Un peu compliqué pour moi, tu peux préciser ?

//on ressort les infos par ordre alphabétique
while( $sortie = mysql_fetch_array($req))
{
$var = str_replace ($_POST['recherche'], ''.$_POST['recherche'].'', $sortie['description']);
print '
';
print $sortie[url].'
';
echo $var;
print '<div align="center"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_malaysia Messages postés 50 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 12 juillet 2005
8 juil. 2005 à 19:01
Je voudrais remplacer $tc dans $var = ... par les trois variables précédentes $tb, $tc et $tb mais je ne trouve pas la formulation ?

while( $sortie = mysql_fetch_array($req))
{
$tb = strtoupper ($_POST['recherche']);
$tc = strtolower ($_POST['recherche']);
$td = ucfirst ($_POST['recherche']);
$var = str_replace ($tc , ''.$tb.'', $sortie['description']);
print '
';
print $sortie[url].'
';
echo $var;
print '

J'ai trouvé trim pour effacer les espace au début et à la fin d'une chaine mais pas au milieu. Quelle commande sait le faire ?
0
Rejoignez-nous