jQuery Autocomplete mit Detail abruf

Hallo nochmal und danke für die Antwort ;)

habe nun noch eine letzte Frage fürs erste ^^
Zumindest Versuche ich es! :D

Da es mir nicht gefällt für die Stadt Köln jedes Mal Koeln zu schreiben, und das auch nach außen nicht so dolle wirkt, soll nun auch auf Umlaut eingaben Reagiert werden!

Allerdings habe ich dabei ein Problem mit der Zeichenkonvertierung -.-
umlate.PNG

Im Such-Feld welches für das absenden benötigt wird, werden umlaute leider in ihren CODE umgewandelt...

Da ich hier nicht mit str_replace arbeiten kann dachte ich an Konvertierung in JavaScript (also ö = %F6 etc.) wobei das mir in der DB bei anderen ausgaben wieder Probleme macht ;)

Wenn mich nun nicht alles Täuscht, und der Aufruf im 2 Teil problemlos funktioniert, tippe ich darauf, das
PHP:
$( "#id10" ).autocomplete({

auch mit ".html()" aus dem 2 Teil
PHP:
$("#log").html(ui.item ? "Stadt " + ui.item.value + "<br>ID: " + ui.item.id +  "<br> Größe: " + "<img src='system/skins/system/styles/images/demand/" + ui.item.size + ".png'>" : "Keine Auswahl getroffen! Aktuelle eingabe " + this.value);

bearbeitet werden muss...
Nur wie?

//EDIT
Nachträglicher Test mit %F6 oder &ouml; geben mir dann nur K%F6ln bzw. K&ouml;ln aus :D
 
Zuletzt bearbeitet:
Hallo,

ich hatte auch mal Probleme bei der Ausgabe von ä ö usw. gehabt.

Bei mir hat folgendes geholfen:

1. Die HTML Seite mit
Code:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
versehen.

2. Alle Dateien im Editor mit "utf-8" speichern (können wohl nicht alle Editoren)

3. Die Datenbank mit "utf8_general_ci" betreiben. Manchmal kommt dann immer noch eine Falsche Ausgabe und man muss die Datenbank dazu zwingen UTF 8 zu benutzen und das geht mit
Code:
mysql_query("SET NAMES 'utf8'");

Weitere Infos zu utf-8
 
Hey kenguruh ;)

Charset sowie DB ist auf UTF-8 eingestellt, aber daran scheitert es auch nicht :p
Wie in dem Bild (Kasten 1) zu sehen ist, funktioniert der Code, der mit html() aufgerufen wird auch einwadfrei ;)

nur eben der ohne (Kasten 2) will keine Umlaute zeigen ;)

umlaute2.PNG


Bzw. die Ausgabe nach ausführen des Autocomplete geht... Autocomplete selber leider nicht -.-
dort scheint es dann an Javascript zu scheitern...
 
Hallo,

Hast du alle Dateien als UTF 8 (Datei-Kodierung) gespeichert?

Äähhmmm, versuche mal das hier in deinem DB Ergebnis:
PHP:
$row['name'] = stripslashes($row['name']);
also ohne htmlentities

Es sieht so aus, als wenn dein Kasten 2 ein Form-Feld ist, oder irre ich da?
Die html-Seite kann was mit &ouml; anfangen und wandelt es in ein ö um, aber das Formfeld nimmt es so wie es ist.
 
//EDIT FEHLER GEFUNDEN!
//Bin gerade noch im Büro.. Poste es wenn ich @Home bin!


Ja es ist ein Form Feld...

Das hier ist einmal die Zeile aus der SQL DB..

sql.PNG
nicht wundern ;) Der Code verändert sich mit erweiterung des kompletten Systems


nehme ich htmlentities() nun raus, blockiert autocomplete die suche bzw. die anzeige der "möglichkeiten"

Schreibe ich nun in der DB anstelle von ö nun &ouml; wird auch dieses wieder angezeigt ;)
 
Zuletzt bearbeitet:
Riesen Sorry!
Haben gerade etwas stress in der Firma und bin gestern einfach nur Tot ins Bett gefallen -.-
----------------------------------------------------------------------

Also der Fehler war der Berühmte berüchtigte und vorallem SEHR gefährliche Fehler 53...
(Der User Sitzt 53cm vor dem Bildschirm)

Habe es zwar mit SET CHARSET und dem entfernen des htmlentities() versucht... allerdings nie zusammen :D

Hier der aktuelle und Funktionierende Code.. (Bitte noch weiter lesen ;) )

auto_city.php
PHP:
$connect = mysql_connect($mysql_server, $mysql_login, $mysql_password);
mysql_select_db($mysql_database);

mysql_set_charset('utf8', $connect);
 

$term = mysql_real_escape_string($_REQUEST['term']);

 $sql="SELECT id, name, size FROM cms_cities WHERE name LIKE '%".$term."%' ORDER BY name";
 $result = mysql_query($sql) or die(mysql_error());

	while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){
		$row['value'] = stripslashes($row['name']);
		$row['id'] = (int)$row['id'];
		$row['size'] = (int)$row['size'];
		$row_set[] = $row;
		}
	echo json_encode($row_set);


autocomplete.php
HTML:
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>

<script>
$(function() {
	function log( message ) {
	$( "<div>" ).text( message ).prependTo( "#log" );
	$( "#log" ).scrollTop( 0 );
	}
$( "#id10" ).autocomplete({
	source: "system/functions/auto_city.php",
	minLength: 0,
	select: function( event, ui ) {
	$("#log").html(ui.item ? "Stadt " + ui.item.value + "<br>ID: " + ui.item.id +  "<br> Größe: " + "<img src='system/skins/system/styles/images/demand/" + ui.item.size + ".png'>" : "Keine Auswahl getroffen! Aktuelle eingabe " + this.value);
		}
	});
});
</script>

Vorschau :p
ausgabe1.PNGausgabe2.PNG


Problem:
Wenn ich das Formular nun absende soll mittels einer Funktion die CityID und Country abgefragt werden...

Allerdings klappt das nicht... Ausgabe bliebt Leer...
Dazu habe ich mir dann eine Count abfrage gebastelt die nach der $_Post["city"] variable sucht... Ausgabe = 0
Suche ich nach K&ouml;ln (ist in der DB eingetragen) klappt auch die Count ausgabe... Ausgabe = 1

Mit "var_dump($_POST);" erhalte ich folgende Ausgabe:
Code:
array(1) { ["city"]=> string(5) "Köln" }

Ok.. nun dachte ich mir versuch ich aus der Form erstmal ein Insert zu machen...
Insert klappt ;) allerdings mit dieser Ausgabe..
umlaute_SQL.PNG
ID 1 wurde über phpMyAdmin eingetragen, ID 2 mit dem SQL Insert über die Form...

Dieses erzeugt nun Folgende Ausgaben bei ausführung der autocomplete.php
ausgabe3.PNGausgabe4.PNG

Jetzt verstehe ich garnichts mehr!

Ich kann das ganze zwar mit
PHP:
$row['value'] = utf8_decode(stripslashes($row['name']));
ändern, allerdings ändert das nichts daran, das Autocomplete SO nicht mit dem Ö klar kommt
 
Zuletzt bearbeitet:
Habs mit Latin1 und UTF8 Versucht... beide das selbe ergebniss...

ändere ich allerdings
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
zu
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

dann gehts auch -.- Ich hasse umlaute
 
Zurück