SQL : tenir compte des accents mais pas de la casse
Fermé
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
-
13 févr. 2013 à 15:31
Utilisateur anonyme - 16 févr. 2013 à 07:44
Utilisateur anonyme - 16 févr. 2013 à 07:44
A voir également:
- SQL : tenir compte des accents mais pas de la casse
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Sql pix - Forum Python
- Dupliquer une table sql ✓ - Forum Programmation
- Sql commence par ✓ - Forum Webmastering
9 réponses
Utilisateur anonyme
13 févr. 2013 à 16:27
13 févr. 2013 à 16:27
Bonjour
Il faut utiliser une collation bin (en choisissant la bonne selon ton encodage) :
Il faut utiliser une collation bin (en choisissant la bonne selon ton encodage) :
...WHERE UCASE(ortho) collate utf8_bin LIKE UCASE('$mot')...
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
13 févr. 2013 à 20:24
13 févr. 2013 à 20:24
Quelqu'un a t-il une solution ?
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
14 févr. 2013 à 15:55
14 févr. 2013 à 15:55
SVP je stagne vraiment... J'ai besoin de vous !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
14 févr. 2013 à 16:43
14 févr. 2013 à 16:43
oops désolé, j'actualisais la page avec l'ancre de mon message et donc tes messages n'apparaissaient pas ! Vraiment désolé et merci de ta réponse, je vais essayer ça et je te tiens au courant... Encore merci !
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
14 févr. 2013 à 17:03
14 févr. 2013 à 17:03
Alors ça me met cette erreur : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...
Je te met ma nouvelle requête :
Merci encore de ton aide !
Je te met ma nouvelle requête :
SELECT * FROM lexique WHERE UCASE(ortho) collate utf8_bin LIKE UCASE('$mot') ORDER BY freq DESC
Merci encore de ton aide !
Utilisateur anonyme
14 févr. 2013 à 17:35
14 févr. 2013 à 17:35
La requête a l'air d'être correcte.
Tu peux donner le bout de code de la préparation de la requête au mysql_fetch_array ?
Tu peux donner le bout de code de la préparation de la requête au mysql_fetch_array ?
mat8883
Messages postés
41
Date d'inscription
mercredi 7 octobre 2009
Statut
Membre
Dernière intervention
26 février 2014
15 févr. 2013 à 19:50
15 févr. 2013 à 19:50
function type($mot) { // Donne le premier type du mot $base = mysql_connect ('localhost:/tmp/mysql5.sock', '****', '****'); mysql_select_db ('****', $base); $reponseb = mysql_query("SELECT * FROM lexique WHERE UCASE(ortho) collate utf8_bin LIKE UCASE('$mot') ORDER BY freq DESC"); $aaa = 'a' ; while ($donneesb = mysql_fetch_array($reponseb) AND $aaa == 'a') { $type = $donneesb['type']; $aaa = 'b' ; } if ($type == "") { $type = "NPRO" ; } return $type ; }
Voilà merci encore !
Utilisateur anonyme
16 févr. 2013 à 07:44
16 févr. 2013 à 07:44
Curieux ton nom d'hôte 'localhost:/tmp/mysql5.sock'. J'ai plus l'habitude de voir localhost tout court, mais je suppose quand même que c'est bien celui que t'a donné ton hébergeur.
Ton message d'erreur signifie qu'il y a eu un problème d'exécution de la requête. comme ce problème peut venir d'un problème de connexion, on va rajouter (pour diagnostic, tu pourras les retirer après) quelques 'or die (mysql_error())'
Quelques remarques quand même sur ton code :
Ta connexion à ta base de données est à l'intérieur d'une fonction. Ce n'est pas très logique : en principe, tu n'as à te connecter à ta base de données qu'une seule fois, alors que ta fonction est destinée à être appelée plusieurs fois. Et si tu utilises ta base de données ailleurs dans ton script, tu l'ouvres aussi à chaque fois ? C'est un gros gaspillage de ressources.
Il vaut mieux mettre la connexion dans un fichier inclus et mettre un instruction include_once : la connexion sera faite une seule fois.
Et à quoi sert ton $aaa = 'a' ; ? À t'arrêter dès la première réponse ? Mais si tu ne veux pas boucler sur plusieurs réponse, il ne faut pas utiliser de boucle, tout simplement ! Tu peux tester avec un simple if :
Ton message d'erreur signifie qu'il y a eu un problème d'exécution de la requête. comme ce problème peut venir d'un problème de connexion, on va rajouter (pour diagnostic, tu pourras les retirer après) quelques 'or die (mysql_error())'
$base = mysql_connect ('localhost:/tmp/mysql5.sock', '****', '****') or die (mysql_error()); mysql_select_db ('****', $base) or die (mysql_error()); $reponseb = mysql_query("SELECT * FROM lexique WHERE UCASE(ortho) collate utf8_bin LIKE UCASE('$mot') ORDER BY freq DESC") or die (mysql_error());
Quelques remarques quand même sur ton code :
Ta connexion à ta base de données est à l'intérieur d'une fonction. Ce n'est pas très logique : en principe, tu n'as à te connecter à ta base de données qu'une seule fois, alors que ta fonction est destinée à être appelée plusieurs fois. Et si tu utilises ta base de données ailleurs dans ton script, tu l'ouvres aussi à chaque fois ? C'est un gros gaspillage de ressources.
Il vaut mieux mettre la connexion dans un fichier inclus et mettre un instruction include_once : la connexion sera faite une seule fois.
Et à quoi sert ton $aaa = 'a' ; ? À t'arrêter dès la première réponse ? Mais si tu ne veux pas boucler sur plusieurs réponse, il ne faut pas utiliser de boucle, tout simplement ! Tu peux tester avec un simple if :
if ($donneesb = mysql_fetch_array($reponseb)) $type = $donneesb['type']; else $type = "NPRO" ;