phpbar.de logo

Mailinglisten-Archive

[php] MySQL-Select-Befehl anpassen

[php] MySQL-Select-Befehl anpassen

Stefan Engelhardt Stefan.Engelhardt_(at)_stud.fh-hannover.de
Wed, 7 Jun 2000 15:34:31 +0200


> > Gibt es ein Zeichen im My-SQL Select-Befehl, mit dem ich
> die Suche nach
> > einem Feld unterdrücken kann?
> > Ein Beispiel:
> >
> > SELECT NAME, VORNAME from user_table where NAME='$SEARCH_NAME' and
> > VORNAME='$SEARCH_VORNAME'
> >
> > Die Variablen $SEARCH_NAME und $SEARCH_VORNAME werden von
> einem Formular
> > übergeben.
> >
> > Nun könnte es ja sein, das eine der Variablen leer ist. Nun würde
> > ich gerne
> > diese leere Variable im Bedarfsfall z.B. durch ein *
> ersetzen, damit MySQL
> > dann die Suchbedingung ignoriert.
> >
>
> Hi Cris,
>
> Versuch es mal damit:
>
> $qNAME 	= ($SEARCH_NAME != "")?"NAME='$SEARCH_NAME' ":"1";
> $qVORNAME 	= ($SEARCH_VORNAME !=
> "")?"VORNAME='$SEARCH_VORNAME' ":"1";
> $qetc..1
> $qetc..2...
>
> $query="select NAME, VORNAME from user_table where $qNAME and
> $qVORNAME";
>
> z.B bei übergabe vom Formular:
>  NAME=MEIER
>  VORNAME=leer
>
> würde folgende Abfrage entstehen.
>
> select * from VORNAME, NACHNAME from user_table where
> NAME='Meier' and 1
>
> Ergebnis: alle mit NAME=MEIER würden gefunden werden egal was für ein
> Vorname enthalten ist etc....
Warum macht Ihr es denn alle so kompliziert? Ich kann doch meinen
Querystring so zusammenbauen, daß bei einem leeren Feld gar keine
Bedingung in die Abfrage einfließt! Das würde 1. mit Sicherheit
funktionieren und 2. auch die performanteste Lösung sein!

Beispiel:
...
If (!is_empty($Name)) $where[]='name='.$Name;
If (!is_empty($Vorname)) $where[]='name='.$Vorname;
...
$querystring=implode(' AND ',$where); // Bastelt die Where-Bedingung
zusammen
$querystring='SELECT * FROM Tabelle WHERE'.$querystring;
...

Wenn das bei sehr vielen Feldern zuviel Arbeit ist, jedes Feld einzeln
aufzuführen, kann man meines Wissens eine Schleife basteln, die diese
Aktion für jedes Feld macht. Stichwort $HTTP_GET_VARS/$HTTP_POST_VARS.

Gruß
Stefan



php::bar PHP Wiki   -   Listenarchive