Suchen in der mysql datenbank muenchen-ost -> München Ost
Moritz ohne Max
- datenbank
- mysql
- sql
0 j4nk3y0 Jörg Reinholz0 Linuchs
ich habe es etwas das ich nicht lösen kann. Ich habe in meiner Datenbank eine Spalte mit Titel.
titel Die Geschichte von München Nachrichten aus der Welt von Oberbayern Kochen in Überlingen u.s.w
wenn ich es dann als Link ausgebe, werden die Umlaute, Sonderzeichen und Leerstellen umgewandelt. So das der Link das so aussieht.
die-geschichte-von-muenchen.html
wenn der Link aktiviert wird, wird über die .htaccess
RewriteRule ^(.*).html index.php?titel=$1 [L]
das ganze als Link übergeben, zum weiterverarbeiten.
$_GET['titel'])
in der dieser steht nun
die-geschichte-von-muenchen
Jetzt kommt mein Problem. In der Datenbank steht aber
Die Geschichte von München
wie kann ich jetzt diesen Datensatz ermitteln. Ich kann zwar - als leerzeichen wieder ersetzen aber bei den Umlauten tue ich mich da schwerer da es ja auch Wörter mit ue gibt und nicht automatisch ein ue ein Ü ist.
Für Eure Hilfe bin ich Dankbar
Moritz
Hey,
titel Die Geschichte von München Nachrichten aus der Welt von Oberbayern Kochen in Überlingen u.s.w
Warum erstellst du nicht zu jeder Nachricht/Titel eine ID die du einfach ansprechen kannst?
Gruß
Jo
Moin!
Du wirst nicht darum herumkommen Titel und Titel_Link zu speichern.
Also:
Titel | TitelLink Geschichten aus München | Geschichten_aus_Muenchen Geschichten aus Köln | Geschichten_aus_Koeln
Da Du ja keine 10 Millionen Geschichten veröffentlichen wirst hält sich der Speicherbedarf in Grenzen.
Variante 2:
Aber schau mal, wie einfach sich heise das macht:
ID| Titel | TitelLink 1 | Geschichten aus München | Geschichten_aus_Muenchen 2 | Geschichten aus Köln | Geschichten_aus_Koeln
Die Url sieht dann so aus:
http://www.example.com.de/artikel/Geschichten_aus_Muenchen-1.html
http://www.example.com.de/artikel/Geschichten_aus_Koeln-2.html
Dann kannst Du einfach mit einem Regex die ID aus der URL holen und den Artikel anhand der ID liefern. "Geschichten_aus_Muenchen" wird einfach ignoriert. Das spart Dir eine menge Grips und Arbeit, weil Du ja daran denken musst, dass es auch nochmal Geschichten aus München geben könnte.
Jörg Reinholz
wie kann ich jetzt diesen Datensatz ermitteln. Ich kann zwar - als leerzeichen wieder ersetzen aber bei den Umlauten tue ich mich da schwerer da es ja auch Wörter mit ue gibt und nicht automatisch ein ue ein Ü ist.
Es geht nur um die vier deutschen Zeichen ÄÖÜß? Dann probiere mal
$titel_DB = "Die Münchnerstraße in Coesfeld"; // in der Datenbank
$titel_such = "die-muenchnerstrasse-in-coesfeld"; // alle Buchstaben klein
$titel_such1 = str_replace( "-", " ", $titel_such ); // - ersetzen
$arr_search = array ( "ae", "oe", "ue", "ss", "ä", "ö", "ü", "ß" );
$arr_replace = array ( "%", "%", "%", "%", "%", "%", "%", "%" );
$titel_such2 = str_replace( $arr_search, $arr_replace, $titel_such1 );
echo $titel_such2; // die m%nchnerstra%e in c%sfeld
SELECT
...
FROM
...
WHERE LOWER( titel ) = $titel_such1
OR LOWER( titel ) LIKE $titel_such2
sollte erfolgreich sein. Wegen des LOWER muss die Datenbank auf deutsch gepolt sein.
Linuchs