Bonjour,
J'ai lu l'excellent tutoriel de Antoine Dinimant Jeux de caractères et collations sous MySQL 5
J'ai besoin de rendre possible une requête comme d'avoir = d-avoir et l'exploiter = l-exploiter.
Comment on peut faire ça ?
Version imprimable
Bonjour,
J'ai lu l'excellent tutoriel de Antoine Dinimant Jeux de caractères et collations sous MySQL 5
J'ai besoin de rendre possible une requête comme d'avoir = d-avoir et l'exploiter = l-exploiter.
Comment on peut faire ça ?
Saluton,
En gros tu veux faire quelque chose commeCode:SET colonne= REPLACE(REPLACE(colonne,'d\'','d-'),'l\','l-')
J'ai peut être pas bien compris ce que tu veux dire :(
Ma requête est comme ça
Exemple dans ma baseCode:$result = $mysql->query("SELECT ville FROM mairie WHERE ville='".addslashes($url)."'");
colonne 'ville' = d'ail existe (ça c'est ok) mais j'aimerai que ce soit aussi égal à d-ail
En fait cela ne doit pas "remplacer" mais 'être égal ou équivalent' pour que les deux requêtes sur d' ou d- fonctionnent
Malheureusement non :(
Une autre suggestion ?
Il y avait une faute de frappe dans ma requête, il manquait une quote, je l'ai modifiée.
Qu'est-ce qui ne fonctionne pas ?
J'obtiens "Selection impossible" comme si
N'existait pasCode:
1
2 FROM mairie WHERE '".addslashes($url)."' = REPLACE(REPLACE(ville,'d-','d\''),'l-','l\'')");
donc d-ail = "Selection impossible" et d'ail = sélection possible.
Au cas ou pour plus d'infos sur ma base mysql
Utf8 Interclassement utf8_unicode_ci
Je ne comprends pas ce qui retourne ces messages.
Juste une précision, la colonne ville contient des url, ou des noms de villes présents dans des URL ?
Dans le deuxième cas ce n'est pas = mais LIKE qu'il faudrait utiliser
WHERE addslashes($url)
LIKE CONCAT('%',REPLACE(REPLACE(ville,'d-','d\''),'l-','l\''),'%');
Dans mes pages j'ai par exemple la ville de d'ail qui s'affiche et je récupère l'affichage pour faire un lien hypertexte comme ça
$ville n'est pas une url mais une villeCode:<a href="'.$page->path.'mairie/mairie'.nettoie_url($ville).'.html">'.$ville.'</a>
ensuite on clique sur la ville d'ail et on obtiens la page d-ail.htm parce que la fonction nettoie_url($ville) enlève l'apostrophe de d'ail en d-ail.
mais pour le moment seulement la page d'ail.html fonctionne parce que je peux pas forcer mysql a considérer que d'ail et d-ail c'est la même chose
Bon j'ai compris pourquoi je ne peux pas appeler dans la base d- ou l- alors que d' et l' fonctionne.
Ce qui veux dire que quand je fais ma requêteCitation:
Dans mes pages j'ai par exemple la ville de d'ail qui s'affiche et je récupère l'affichage pour faire un lien hypertexte comme ça
Code :
$ville n'est pas une url mais une villeCode:<a href="'.$page->path.'mairie/mairie'.nettoie_url($ville).'.html">'.$ville.'</a>
ensuite on clique sur la ville d'ail et on obtiens la page d-ail.htm parce que la fonction nettoie_url($ville) enlève l'apostrophe de d'ail en d-ail.
mais pour le moment seulement la page d'ail.html fonctionne parce que je peux pas forcer mysql a considérer que d'ail et d-ail c'est la même chose
d- ou l- n'existe pas dans la base !!!Citation:
Code:$result = $mysql->query("SELECT ville FROM mairie WHERE ville='".addslashes($url)."'");
Si je place devant ma requête
d- et l- appelle d' et l' donc ça marche :yaisse2:Code:$url = str_replace("-","'",$url);
Il me reste à trouver comment utiliser str_replace pour apostrophe et tiret dans la même fonction
ça ne fonctionne pas :(Code:$url = str_replace("-"," \'",$url);
Saluton,
Pourtantretourne bien d'ailCode:
1
2
3 <?php echo str_replace("-"," '","d-ail"); ?>
On est bien d'accord que l'on n'est plus sur une solution MySQL, là ?
Sauf si il existe une fonction comme IGNORE pour sélectionner $ville sans accepter d'injecter un tiret ou un apostrophe dans la requête.Citation:
On est bien d'accord que l'on n'est plus sur une solution MySQL, là ?
ça doit être possible ?