Ankündigung

Einklappen
Keine Ankündigung bisher.

Autocomplete und Charset

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Autocomplete und Charset

    Ich hoffe, ich bin hier in der richtigen "Abteilung" gelandet.

    Ich nutze eine Autocomplete-Funktion mittles jQuery.
    http://code.google.com/p/jquery-auto...source/browse/

    Das erste Problem, dass ich damit hatte, habe ich bereits lösen können.
    Es bestand darin, dass der übergebene String für das Textfeld/die Autocomplete Liste immer nur Fragezeichen anstatt Umlauten darstellte.
    Lösung dafür: in der "search.php"
    PHP-Code:
    header('Content-Type: text/html; charset=iso-8859-1'); 
    eintragen.

    Nun werden auch alle Umlaute im Textfeld mit der Autocomplete-Liste richtig dargestellt.
    Die Autocomplete-Funktion funktioniert ja dergestalt, dass man einen Begriff in das Textfeld einträgt und einem dann passende Ergebnisse in einer Liste darunter angezeigt werden. Das funktioniert auch ganz wunderbar, außer, wenn Umlaute ins Spiel kommen.
    Die Übergabe der Umlaute an die "search.php" scheint also irgendwie nicht richtig ausgewertet zu werden.
    Hat jemand von Euch da bereits Erfahrungen gemacht?
    Ich poste hier noch die "search.php".
    Gruß estebu

    PHP-Code:
    header('Content-Type: text/html; charset=iso-8859-1');
    require_once(
    '../Connections/connect.php');
    error_reporting(E_ALL);
    $q '';

    if (isset(
    $_GET['q'])) {
        
    $q strtolower($_GET['q']);
    }
    if (!
    $q) {
        return;
    }


    mysql_select_db($database_connect$connect); 
    $query_schulen "SELECT schul_id, name, strasse, ort FROM Schulen";
    $schulen mysql_query($query_schulen$connect) or die(mysql_error());
    $row_schulen mysql_fetch_array($schulen);
    $totalRows_schulen mysql_num_rows($schulen);
    while (
    $row_schulen mysql_fetch_assoc($schulen)) {
    $items[] = array($row_schulen['name'],$row_schulen['strasse'],$row_schulen['ort'],$row_schulen['schul_id']);
    }

    //print_r($items);

    foreach ($items as $key => $value) {
        
    $combined = ($value[0].', '.$value[1].', '.$value[2]);
         if (
    strpos(strtolower($combined), $q) !== false)  {
        
        
        echo 
    "$combined|$value[3]\n";

          
       }   



  • #2
    was für Textformat hast du in der Datenbank genau ? (Collation) ?

    und was klappt dabei nicht ?
    "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

    Kommentar


    • #3
      Also die Sprache von phpMyAdmin ist auf German (de-iso-8859-1) angelegt,
      aber die Collation ist bei 1und1 nicht raus zu finden. Aber ich schätze mal, sie wird latin1_general_ci (ist glaube ich als Standard voreingestellt beim Anlegen einer neuen Datenbank) sein.
      Das ist irgendwie eigenartig, denn vor einiger Zeit konnte ich noch die genaue Collation sehen und sie auch ändern... (??)
      Was nicht "funktioniert" hatte ich ja eingangs bereits beschrieben:
      Bei der Eingabe des Suchbegriffes in das Autocomplete-Feld werden keine Umlaute akzeptiert. Sobald ein Umlaut ins Spiel kommt, bleibt die Liste der gefilterten Ergebnisse leer.

      Kommentar


      • #4
        Zitat von estebu Beitrag anzeigen
        Also die Sprache von phpMyAdmin ist auf German (de-iso-8859-1) angelegt,
        aber die Collation ist bei 1und1 nicht raus zu finden. Aber ich schätze mal, sie wird latin1_general_ci (ist glaube ich als Standard voreingestellt beim Anlegen einer neuen Datenbank) sein.
        Auf der Seite nach dem Anmelden gibt's den Punkt: „Zeichensatz / Kollation der MySQL-Verbindung“ (o.s.ä.)

        Was nicht "funktioniert" hatte ich ja eingangs bereits beschrieben:
        Bei der Eingabe des Suchbegriffes in das Autocomplete-Feld werden keine Umlaute akzeptiert. Sobald ein Umlaut ins Spiel kommt, bleibt die Liste der gefilterten Ergebnisse leer.
        Na dann finde doch erst mal raus, was beim serverseitigen Script ankommt.

        Kommentar


        • #5
          Auf der Seite nach dem Anmelden gibt's den Punkt: „Zeichensatz / Kollation der MySQL-Verbindung“ (o.s.ä.)
          Leider gibt es diesen Punkt nicht (siehe screenshot01.jpg - das ist das Fenster direkt nach der Anmeldung)

          Na dann finde doch erst mal raus, was beim serverseitigen Script ankommt.
          Würde ich ja gerne, aber ich weiss eben nicht, wo ich die Daten "abfangen" könnte - Javascript ist nicht so meine Stärke....
          Daher hatte ich gehofft, dass jemand hier bereits Erfahrungen mit dem jQuery-Autocomplete hat...
          Angehängte Dateien

          Kommentar


          • #6
            JavaScript arbeitet intern immer mit Unicode, und encodeURIComponent kodiert die Daten vor dem Absenden in UTF-8.

            Entweder tauschst du das durch escape aus (das kodiert nach ISO-8859-1), oder du müsstest im serverseitigen Script die Daten erst mal wieder darin umwandeln, wenn du diese Kodierung verwendest.


            Irgendetwas anderes als konsequent UTF-8 zu verwenden, ist für heutige Webanwendungen eigentlich nicht empfehlenswert. Du solltest dich langsam mal von ISO-xy lösen, und grundsätzlich UTF-8 verwenden, gleich von Anfang an, wenn du ein Projekt aufbaust.

            Kommentar


            • #7
              hm .. das mit phpmyadmin ist in der Tat merkwürdig - liegt aber bestimmt an Einstellungen von 1 & 1 ....

              bei mir sieht das nämlich in der Struktur-Ansicht einer Tabelle so aus :
              Code:
              vermerk | varchar(255) | utf8_general_ci | .........
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

              Kommentar

              Lädt...
              X