Mit 2 Auswahllisten Jahreszahl filtern

Cemil

Erfahrenes Mitglied
Hi,
ich möchte mit 2 Auswahllisten (z.B. Jahrgang von: 1960 bis: 2005) die Jahreszahlen auswählen und filtern.

Wenn jemand z.B. ein Jahrgang von 1990 bis 2000 auswählt, dann soll genau zwischen diesen Jahrgängen gesucht und falls etwas gefunden wurde, ausgegeben werden.

Mein Problem ist: Mir fehlt der Denkansatz. Hab das noch nie gemacht und wäre froh, wenn mir jemand irgendeinen Denkansatz angeben könnte. Hab hier gesucht, aber nichts gefunden.

Grüsse
 
Letztlich sind das zwei Selectfelder die du erstellst

und mit den zwei Werten eine Sql Abfrage machst mit between :-)
 
Hallo melmager,
vielen Dank für Deine Antwort.

Meine SQL-Abfrage sieht jetzt so aus, aber funktionieren tut es immer noch nicht.


PHP:
$ausgabe = @mysql_query("SELECT id, marke, modell, teile, jahrgang, km, anfrage
			 FROM motoren
			 WHERE marke    LIKE '$marke'    AND
			       modell   LIKE '%$modell%' AND
			       jahrgang >= '$_POST[jahrgangvon]' AND jahrgang <= '$_POST[jahrgangbis]' LIKE '$jahrgang' AND
			       km       >= '$_POST[kmvon]'       AND km <=       '$_POST[kmbis]'       LIKE '$km'       OR
			       teile    LIKE '$teile'");

Habe LIKE auch mal rausgenommen, aber es wird nichts ausgegeben. Bei den Auswahllisten sind name und value angegeben. Fehler- oder Warnmeldungen erhalte ich auch keine.

Was stimmt da nicht?

Grüsse
 
Zuletzt bearbeitet:
Hab's auch mal so probiert:

PHP:
$ausgabe = @mysql_query("

	SELECT
			id,
     		marke,
           	modell,
            teile,
            jahrgang,
            km,
            anfrage
	FROM
			motoren
	WHERE
			marke 		= 		'$_POST[marke]' 		AND
			modell 		LIKE 	'%$_POST['modell%]' 	AND
			(jahrgang 	>= 		'$_POST[jahrgangvon]' 	AND
			jahrgang 	<= 		'$_POST[jahrgangbis]')	AND
			(km 		>= 		'$_POST[kmvon]'			AND
			km 			<= 		'$_POST[kmbis]') 		AND
			teile    	=	 	'$_POST['teile]'"
			
);

Erhalte danach folgenden Parse Error:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
 
modell LIKE '%$_POST['modell%]' AND

da ist dein % an der falschen Stelle

modell LIKE '%$_POST['modell]%' AND

ansonsten sehe ich auch kein Fehler :-(

PS sind alle Felder mit Daten gefüllt ?

am besten so machen

statt
ausgabe = @mysql_query(" select ----- ")
das:
$sql = " select ----- ";
echo "sql $sql";
@mysql_query($sql) or die(mysql_error());
 
Hallo,
habs korrigiert, aber immer noch die gleiche Fehlermeldung:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Was sagt diese Fehlermeldung genau aus?

Die Felder sind gefüllt.

Grüsse
 
Hab doch noch 2 Fehler entdeckt und diese jetzt ausgebügelt. So siehts im moment aus:
PHP:
$ausgabe = @mysql_query("
SELECT id,
marke,
modell,
teile,
jahrgang,
km
FROM   motoren
WHERE  marke = '$_POST[marke]'        AND
modell    LIKE '%$_POST[modell]%'     AND
(jahrgang >=   '$_POST[jahrgangvon]'  AND
jahrgang  <=   '$_POST[jahrgangbis]') AND
(km       >=   '$_POST[kmvon]'        AND
km        <=   '$_POST[kmbis]')       OR
teile     =    '$_POST[teile]'");
Das Programm läuft, aber es werden immer noch keine Daten ausgegeben.
 
Zuletzt bearbeitet:
Cemil hat gesagt.:
Hab doch noch 2 Fehler entdeckt und diese jetzt ausgebügelt. So siehts im moment aus:
PHP:
$ausgabe = @mysql_query("
SELECT id,
marke,
modell,
teile,
jahrgang,
km
FROM   motoren
WHERE  marke = '$_POST[marke]'        AND
modell    LIKE '%$_POST[modell]%'     AND
(jahrgang >=   '$_POST[jahrgangvon]'  AND
jahrgang  <=   '$_POST[jahrgangbis]') AND
(km       >=   '$_POST[kmvon]'        AND
km        <=   '$_POST[kmbis]')       OR
teile     =    '$_POST[teile]'");
Das Programm läuft, aber es werden immer noch keine Daten ausgegeben.

Hmm sollte zwar gehen aber noch einen kleinen Vebesserungsvorschlag:

and jahrgang between '$_POST[jahrgangvon]' and '$_POST[jahrgangbis] and
km between '$_POST[kmvon] and '$_POST[kmbis] or
 
Hallo,
das Programm läuft jetzt. Es ist mir (leider/sorry!) ein dämlicher Fehler unterlaufen.

Das Programm kann nicht laufen, wenn man in der Datenbank bei km varchar angegeben hat. Musste natürlich int heissen. In dem ganzen Stress habe ich das vergessen zu ändern. :mad: :-(

Jetzt läuft alles bestens. Nochmals vielen Dank.

Grüsse
 
Zurück