Antworten auf deine Fragen:
Neues Thema erstellen

Suchfunktion mit Autocomplete + Umlaute

M

markeloff

Guest

hi, meine suchfunktion spuckt die umlaute nicht korrekt aus.

also statt
ä - ä
ö - ö
ü - ü

Code:
<?php
include 'kernel.php';
$q = strtolower($_GET["term"]);
if (!$q) return;
$items = array();

$it = query_into_array("SELECT team1,team2 FROM game WHERE team1 LIKE '%".mysql_real_escape_string($q)."%' OR team2 LIKE '%".mysql_real_escape_string($q)."%' ORDER BY team1");
foreach($it as $team) {
    $items[$team[team1]] = "";
    $items[$team[team2]] = "";
}


array_unique($items);
function array_to_json( $array ){

    if( !is_array( $array ) ){
        return false;
    }

    $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));
    if( $associative ){

        $construct = array();
        foreach( $array as $key => $value ){

            if( is_numeric($key) ){
                $key = "key_$key";
            }
            $key = "\"".addslashes($key)."\"";

            if( is_array( $value )){
                $value = array_to_json( $value );
            } else if( !is_numeric( $value ) || is_string( $value ) ){
                $value = "\"".addslashes($value)."\"";
            }


            $construct[] = "$key: $value";
        }


        $result = "{ " . implode( ", ", $construct ) . " }";

    } else { 
        $construct = array();
        foreach( $array as $value ){


            if( is_array( $value )){
                $value = array_to_json( $value );
            } else if( !is_numeric( $value ) || is_string( $value ) ){
                $value = "'".addslashes($value)."'";
            }

            $construct[] = $value;
        }


        $result = "[ " . implode( ", ", $construct ) . " ]";
    }

    return $result;
}

$result = array();
foreach ($items as $key=>$value) {
    if (strpos(strtolower($key), $q) !== false) {
        array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($key)));
    }
    if (count($result) > 11)
        break;
}
echo array_to_json($result);

?>
oder gebt hier einfach mal "se" in das suchfeld ein, dann seht ihrs schon.
wäre nett, wenn jemand den fehler finden würde :(

grüße
 

lachender_engel

Aktives Mitglied

AW: Suchfunktion mit Autocomplete + Umlaute

Stehen die Daten schon so in der Datenbank? Oder stehen dort "richtige" Sonderzeichen?
Prüfe mal den verwendeten Zeichensatz der Datenbank und den der Webseite. Die sollten gleich sein (UTF-8 oder ISO-...)
 
M

markeloff

Guest

AW: Suchfunktion mit Autocomplete + Umlaute

die daten stehen alle richtig drinnen. mit dem link kann ich leider nichts anfangen, da ich weiß nicht, wo bzw. wie ich das einbauen soll. (die suchfunktion habe ich nicht gecodet)

grüße
 
Zuletzt bearbeitet von einem Moderator:

Chriss1987

me.drinkCoffee();

AW: Suchfunktion mit Autocomplete + Umlaute

Hi,

du könntest die Funktion einfach beim 'echo' aufrufen:
PHP:
<?php
[...]
echo htmlspecialchars_decode(array_to_json($result)); 
?>
Mhh, wenn die Daten richtig in der DB stehen, dann sehe ich grad nicht, wo die umgewandelt werden... Exportiere doch bitte mal die Tabelle und poste einen Auschnitt daraus.

Schöne Grüße aus dem Sauerland!
Chriss

Edit: und poste mal bitte den Code der 'kernel.php'
 
Zuletzt bearbeitet:
M

markeloff

Guest

AW: Suchfunktion mit Autocomplete + Umlaute

also, die webseite(ISO) und die datenbank(utf) haben tatsächlich einen unterschiedlichen zeichensatz. allerdings habe ich festgestellt, dass wenn ich die index auf utf-8 umstelle, alle anderen umlaute die in der datenbank stehen als ? ausgegeben werden. - wie soll ich da nun vorgehen?

PHP:
echo htmlspecialchars_decode(array_to_json($result));
habe ich versucht, aber die umlaute der suchfunktion werden weiterhin falsch dargestellt.

in der kernel.php steht folgendes:
PHP:
<?

include 'config.php';

include 'functions.php';

dbconnect($pagecon['db']['host'],$pagecon['db']['user'],$pagecon['db']['pass'],$pagecon['db']['db']);

?>
was in der config.php steht dürfte klar sein und die functions gibts hier:

PHP:
<?
    
function query_into_array($query){
    settype($retval,"array");
    $result= @mysql_query($query);
    $y=@mysql_num_rows($result);
    $k=@mysql_num_fields($result);
    for($i=0;$i<$y;$i++){
        for($j=0;$j<$k;$j++){
            $retval[$i][mysql_field_name($result,$j)] =
            htmlentities(mysql_result($result,$i,
            mysql_field_name($result,$j)));
        }
    }
    return $retval;
}

function dbconnect($host,$user,$pw,$db){
        mysql_connect($host, $user, $pw);
        mysql_select_db($db);
}

?>
@Chriss1987 welche tabelle meinst du genau? :D

grüße
 

netbandit

Aktives Mitglied

AW: Suchfunktion mit Autocomplete + Umlaute

Wow, etliche Schleifen um dann doch noch irgendwie zum Ergebnis zu kommen - so wie ich das sehe mind. 4e zuviel :lol:

In Deinem query_into_array() werden Umlaute und Co mit Hilfe von htmlentities umgewandelt.
Entwededer Du nimmst es da raus - wirst aber an anderen Stellen dann Problemchen kriegen wo es verwendet wird -
oder Du verzichtest mal auf die Funktion und bastelst mal ein Query richtig mit allem drum und drann
oder Quick&Dirty haust in eine der vielen Schleifen:
http://de2.php.net/manual/de/function.html-entity-decode.php
(@Chris1987: knapp vorbei ;))

Grüße :)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben