Hi,
es ist schon fast peinlich bei so einem bekannten Problem noch immer keine (gute) Lösung zu haben, aber ich dachte, ich wende mich mal an die Profis.
Ich habe ein Minimalbeispiel mit jquery und dem autocomplete-plugin gebastelt, welches Städte aus einer Datenbank auslesen soll.
Da ich noch mehr mit Ajax machen will, habe ich mir gedacht, ich kodiere meine Datenbank gleich auf uft-8 (utf8_unicode_ci).
Hier meine kleinen Dateien:
html
Alles anzeigen
php:
Alles anzeigen
In der Datenbank stehen Werte wie "München" oder "Málaga". Diese sollen beim Suchen auch erfasst werden. Mit der aktuellen Lösung (Funktion iconv) ist das zwar der Fall, jedoch gibt es ein unbefriedigendes Ergebnis. Wenn ich Mü eingebe, wird das M markiert, das ü nicht mehr. Wenn ich das dann auswähle, steht im Eingabefeld München. Das ist natürlich sehr unschön anzusehen für den Benutzer.
Ich suche nun die richtige Kombination von Zeichensätzen. Ich dachte, da ich alles auf utf-8 eingestellt habe, sollte es gehen. Das ist aber nicht wirklich der Fall.
Danke im Voraus
es ist schon fast peinlich bei so einem bekannten Problem noch immer keine (gute) Lösung zu haben, aber ich dachte, ich wende mich mal an die Profis.
Ich habe ein Minimalbeispiel mit jquery und dem autocomplete-plugin gebastelt, welches Städte aus einer Datenbank auslesen soll.
Da ich noch mehr mit Ajax machen will, habe ich mir gedacht, ich kodiere meine Datenbank gleich auf uft-8 (utf8_unicode_ci).
Hier meine kleinen Dateien:
html
Quellcode
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>rent-a-jet</title>
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/jquery.autocomplete.js"></script>
- </head>
- <body>
- <p><input id="autocomplete" type='text' /></p>
- <script type="text/javascript">
- function selectItem(li) {
- return false;
- }
- function formatItem(row) {
- return row[0];
- }
- $(document).ready(function() {
- $("#autocomplete").autocomplete("livesuche.php", {
- max:10,
- delay:10
- });
- });
- </script>
- </body>
- </html>
php:
Quellcode
- <?php
- /* livesuche.php - Ajax-Livesuche */
- require_once('inc/config.inc.php');
- require_once('classes/mysql.class.php');
- header('Content-type: text/html; charset="UTF-8"',true);
- $db =& new db_mysql($db_host, $db_user, $db_pass, $db_name);
- $q = $db->prepare(iconv("UTF-8", "ISO-8859-1", trim(strip_tags($_GET['q']))));
- $sql = "SELECT `name` FROM `cities` WHERE `name` LIKE '".$q."%' ";
- $res = $db->query($sql) or $db->raise_error("Livesuche fehlgeschlagen.");
- while($row = $db->fetch_array($res)){
- echo htmlentities($row['name'])."\n";
- }
- $db->close();
- ?>
In der Datenbank stehen Werte wie "München" oder "Málaga". Diese sollen beim Suchen auch erfasst werden. Mit der aktuellen Lösung (Funktion iconv) ist das zwar der Fall, jedoch gibt es ein unbefriedigendes Ergebnis. Wenn ich Mü eingebe, wird das M markiert, das ü nicht mehr. Wenn ich das dann auswähle, steht im Eingabefeld München. Das ist natürlich sehr unschön anzusehen für den Benutzer.
Ich suche nun die richtige Kombination von Zeichensätzen. Ich dachte, da ich alles auf utf-8 eingestellt habe, sollte es gehen. Das ist aber nicht wirklich der Fall.
Danke im Voraus
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von mad ()