Sql Abfragebefehl (where syntrax ) - Bitte um Hilfe

Blackmolle

Cadet 4th Year
Registriert
März 2005
Beiträge
88
Hallo,

ich habe eine SQL Abfrage, welche nach mehreren Sachen suchen soll wenn verlangt, aber wenn nicht nur die einzelne Abfrage ausgeben soll.

Beispiel:

Ich habe eine Tabelle, in welche ich die Eingangspost schreibe.

Dort habe ich nun eine Spalte welche den Eingangsdatum festhält und eine weitere welche den Absender festhält.

Ich möchte nun eine Suche erstellen wo ich in einem Forumular BEIDES eingeben KANN aber nicht muss.

Ich suche also z.b. nach allen Eingängen am 18.11.2005, dann sollen alle diese angezeigt werden. Ich suche nach allen Eingängen am 18.11.2005 welche von Hans Peter sind, dann sollten diese auch angezeigt werden welche von Ihm an dem Datum kamen.
Und ich suche nach Post von Hans Peter und er zeigt mir alle Eingänge an allen Daten von Hans Peter an.



Wie ist dort der Where Syntrax ?
 
SELECT das, dieses, jenes FROM deinetabelle WHERE spalte LIKE '%das%' AND andere LIKE '%soundso%' ... ;)
 
Adagio schrieb:
SELECT das, dieses, jenes FROM deinetabelle WHERE spalte LIKE '%das%' AND andere LIKE '%soundso%' ... ;)

Das ist ja klar, aber was ist, wenn die hintere Zeile bzw eine Zeile leer ist, weil man danach in der Abfrage nicht sucht ( Abfrage wird per PHP gemacht )


Code:
SELECT * FROM `posteingang` WHERE kreditor like %karstadt% and datum like %%
 
Dann musste überprüfen, ob das zweite Suchfeld (in diesem Fall Absender) gesetzt ist, falls nicht hast du eine SQL-Abfrage die nur nach dem Datum sucht und in dem anderen Fall zusätzlich nach dem Absender. Stichworte sind _POST[] / _GET[] und switch()
 
PHP:
$query = "SELECT * FROM `posteingang`";

$whereQuery = array();

if(!empty($kreditor)) {
    $whereQuery[] = "`kreditor` LIKE '%".mysql_real_escape($kreditor)."%'";
}
if(!empty($datum)) {
    $whereQuery[] = "`datum` LIKE '%".mysql_real_escape($datum)."%'";
}

if(!empty($whereQuery)) {
    $query .= " WHERE ". implode(" AND ",$whereQuery);
}

echo $query

Wie immer ungetestet ;) Aber von der Logik her müsste es korrekt sein. Wenn dein Datum Feld ein mysql DATE oder DATETIME Feld ist, dann würde ich mit WHERE DATUM BETEWEEN... arbeiten. Das ist besser als das LIKE :)
 
Zurück
Oben