PHP MySQL Suche AND funktioniert nicht.

BFreakout

Erfahrenes Mitglied
Hallo@all,

ich hab eine MySQL abfrage mit AND gemacht, allerdings wird als ergebnis nur die letzte wahl angezeigt.

Ich möchte zu Beispiel das bei PLZ und Monat genau die einträge vom PLZ gebiet und dem Monat angezeigt werden. Allerdings werden nur alle ergebnise die bei dem Monat statt finden angezeigt. PLZ stimmt leider nicht. Wenn ich nur PLZ mache geht es...

So sieht meine abfrage aus:

PHP:
// Termine die gesucht werden aus der Datenbank lesen
	if($_GET[plz]!="")
	{
		$PLZ = "AND PLZ = $_GET[plz]";
	}
	else
	{
		$PLZ = "";
	}
	
	if($_GET[monat])
	{
		$VON = "AND von = $_GET[monat] OR bis = $_GET[monat]";
	}
	else
	{
		$VON = "";		
	}
	
    if($_GET[typ]!="")
	{
		$ART = "AND ART LIKE '%$_GET[typ]%'";
	}
	else
	{
		$ART = "";
	}
	
	if($_GET[ort]!="")
	{
		$ORT = "AND Stadt LIKE '%$_GET[ort]%'";
	}
	else
	{
		$ORT = "";
	}
	
	// Suche
	$termin_daten = mysql_query("SELECT * FROM termkram WHERE LENGTH(Tel) > 0 $PLZ $VON $ART $ORT LIMIT $Anfangsposition, $Zeilen_pro_Seite");

Brauche bitte dringend rat...

Viele Grüße

BFreakout
 
Hallo,

ändere mal folgendes ab:

PHP:
 if($_GET['monat'])
    {
        $VON = "AND (von = $_GET[monat] OR bis = $_GET[monat])";
    }
    else
    {
        $VON = "";        
    }

AND bindet stärker als OR, daher musst du klammern, sonst kombiniert er falsch.


Noch was anderes:

PHP:
if($_GET['plz']!="")
    {
        $PLZ = "AND PLZ = '$_GET[plz]'";
    }
    else
    {
        $PLZ = "";
    }

Ist deine Postleitzahl numerisch in der Datenbank abgelegt? Wenn ja, wie behandelst du dann führende Nullen? Ansonsten, wenn sie alphanumerisch sein sollte, musst du die PLZ in Hochkommata setzen.

hoffe es hilft,
Markus
 
PHP:
 if($_GET['monat'])
    {
        $VON = "AND (von = $_GET[monat] OR bis = $_GET[monat])";
    }
Da die Tabellenfelder "von" und "bis" benannt sind, nehme ich an, dass dabei
ein Zeitraum und nicht nur ein Monat abgefragt werden soll!?

Dann müsste es also lauten:
PHP:
 if($_GET['monat'])
    {
        $VON = "AND von >= $_GET[monat1] and bis <= $_GET[monat2]";
    }
Wobei monat durch monat1 und monat2 zu ersetzen sind.

Grüße, Sparks
 
Zuletzt bearbeitet:
Zurück