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 ?
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 comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part SET colonne= REPLACE(REPLACE(colonne,'d\'','d-'),'l\','l-')
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
J'ai peut être pas bien compris ce que tu veux dire
Ma requête est comme ça
Exemple dans ma base
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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
Non, en fait, c'est moi qui n'avais pas compris.
Peut-être que ça peut fonctionner comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "SELECT ville FROM mairie WHERE '".addslashes($url)."' = REPLACE(REPLACE(ville,'d-','d\''),'l-','l\'')"
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
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 ?
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
J'obtiens "Selection impossible" comme si
N'existait pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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\''),'%');
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
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 ville
Code : Sélectionner tout - Visualiser dans une fenêtre à part <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êteDans 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 ville
Code : Sélectionner tout - Visualiser dans une fenêtre à part <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 !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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
Code : Sélectionner tout - Visualiser dans une fenêtre à part $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 : Sélectionner tout - Visualiser dans une fenêtre à part $url = str_replace("-"," \'",$url);![]()
Saluton,
Pourtantretourne bien d'ail
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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à ?
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
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.On est bien d'accord que l'on n'est plus sur une solution MySQL, là ?
ça doit être possible ?
Partager