PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchfunktion mit Formular


TheBone
06.04.2002, 20:03
Sers,
noch ein ganz kleines problem ;-),

Ich habe ein Formular erstellt in welches der Besucher die Datenbank nach einem Name und dessen Sprache durchsuchen kann. Nachdem er das Formular abgeschickt hat kommt die suche.php:

$data = "select * from table";
$data .= " where name like ´%$name%´ and sprache = ´$sprache´";

$res = mysql_db_query("datenbank", $data);

Gedacht ist es so der Besucher gibt den korrekten Namen und dessen Sprache ein und ihm wird das Ergebnis geliefert. Wenn nun aber in der Datenbank "Thomas Fuchs" gespeichert ist und der Besucher sucht nach Fuchs so findet er diesen Eintrag nicht. Deshalb verwende ich like ´%$name%´
Das Problem ist wenn ich nur nach dem Name suche mit like dann geht das ohne Probleme will ich jedoch auch noch nach der Sprache suchen so funktioniert das nicht mehr. Ich hoffe Ihr wißt was ich meine ;-)
Kann mir einer hierfür die korrekte Syntax sagen ?

vielen Dank,
TheBone


Apraxas
07.04.2002, 13:59
Nun, die Syntax scheint richtig zu sein, aber mal ne frage: wie wählst du die Sprache aus?
mit nem input und da gibt dann einer z.B. "Deutsch" ein?

kannst ja mal mit:
$date = "SELECT * FROM table WHERE name LIKE ´%".$name."%´ AND sprache = ´".$sprache."´";

is zwar nur ne andere schreibweise, aber man weiss ja nie..
(glaube aber nicht, dass es daran liegt)

Maik
07.04.2002, 14:14
Hallo,

mir ist es schon öfter passiert, dass aus irgendeinem Grund das SQL Query nicht richtig erstellt wurde.

Gib mal irgendwo in deinem Script echo $data; ein, um zu schauen ob dort wirklich der korrekte inhalt steht.

Xothous

TheBone
07.04.2002, 16:21
Hi,
danke für eure Hilfe Problem gelöst. Ich hatte in dem Formular einen Fehler. Der richtige Code ist:

$data = "select * from table";
$data .= " where name like ´%$name%´ and sprache = ´$sprache´";

d.h. meine Syntax war in Ordnung der alleinige Fehler lag am Formular dort hatte ich noch eine select auswahl und darin habe ich ein option value falsch geschrieben. :mauer:

Bauchi
07.04.2002, 23:44
Also in mysql verwende ich lieber ein ... where FELD REGEXP ´$suchtext´ anstatt ein LIKE ... hat was mit der db performance zu tun, wie das db-system die zugriffe physich abfackelt ...

08.04.2002, 07:55
@Bauchi:

Da haste Recht, aber das würde ich auch nur verwenden wenn ich von vorneherein weiss dass
1. die Seite gut besucht sein wird.
2. die Seite auch ZUR GLEICHEN ZEIT von vieln Usern besucht wird.
3. ...dadurch viele Datenbank-Zugriffe entstehen.

Ansonsten verwende ich auch die WHERE LIKE Funktion weil man fast nichts falsch machen kann ;)

MfG
[23]

Dominic Suter
08.04.2002, 08:17
@Bauchi

Wo liegt denn der Nachteil an FELD REGEXP?
Ich meine, wenn FELD REGEXP besser als LIKE ist und keine Nachteile hat, dann würde LIKE ja sehr wahrscheindlich aus der Sprache verschwinden, oder wird das wegen der ANSI Kompatibilität beibehalten?

Bauchi
08.04.2002, 17:18
reguläre ausdrücke werden nicht von jedem rdbms unterstützt ... darin liegt der punkt .. und LIKE ist ja auch nur dafür da, um case-un-sensitive bedingungen zu basteln .. :-)