Seite 1 von 1

SQL doppelte Einträge

Verfasst: 02.04.2006, 17:46
von Pretender
Moin Moin,

ich möchte alle Suchanfragen in eine Datenbank schreiben. Schon vorhandene Suchworte sollen dabei nicht mitgelogt werden.

Ich habe daher in der SQL ein Tabelle angelegt mit einer Spalte
"id"
und eine Spalte Names
"suche"
Für die Spalte "suche" habe ich "UNIQUE " aktiviert, damit keine doppelten Einträge entstehen..... dachte ich.

Aber irgendwie logt die DB trotzdem alle Einträge mit Umlauten wie ö ä ü mit indem Sie aus diesen Suchworten wie z.B.

aus:
Mütze
wird:
Mütze

oder viele andere Variationen.
Hier ist einmal der Code:

Code: Alles auswählen

$query = "INSERT INTO log "
."(suche) "
."VALUES "
."('$suche')";
$dummy = mysql_query($query);
Suchworte ohne Umlaute werden nicht mitgeolgt wenn Sie schon vorhanden sind.

Kann mir da eventuell jemand helfen?

Ich hoffe ich habe mich verständlich ausgedrückt.
Vielen Dank schonmal

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


SQL doppelte Einträge

Verfasst: 02.04.2006, 18:39
von net(t)worker
die Ursache, ist dass Suchmaschinen teilweise auch schon UTF-8 verwenden, dann bekommst du eben einen UTF-8 String...

die Lösung wäre einfach jeden String vorher mit der php funktion utf8_decode() umwandeln... falls der string schon in ISO 8859-1 codiert ist, sollte es nichts ausmachen, und die UTF-8 Strings werden in ISO 8859-1 umgewandelt....

könntest natürlich jeden String auch vorher prüfen, ob er umgewandelt werden muss...

SQL doppelte Einträge

Verfasst: 02.04.2006, 19:32
von Pretender

Code: Alles auswählen

$suche = html_entity_decode(utf8_decode($suche));
$query = "INSERT INTO log "
."(suche) "
."VALUES "
."('$suche')";
$dummy = mysql_query($query);
so geht es leider auch nicht.
Hier macht er aus der "Mütze" eine "m%FCtze"

SQL doppelte Einträge

Verfasst: 02.04.2006, 20:08
von net(t)worker
dann musste eben vorher prüfen ob Umlaute im utf-8 Encoding vorliegen und dann ggf. umwandeln...

Code: Alles auswählen

$suchstring="/[".utf8_encode("äüöÄÜÖ")."]+/";
if (preg_match($suchstring,$suche))
{
$suche=utf8_decode($suche);
}
$suche=html_entity_decode($suche);

SQL doppelte Einträge

Verfasst: 02.04.2006, 20:33
von Pretender
ohhh ja :o

das sieht gut aus!

THX net(t)worker

Ich teste es mal noch etwas länger mit allen möglich aufrufen, aber es sieht sieht sehr gut aus.