Verkettung von Strings und functions?

monoblock

Mitglied
Hallo!

Ich habe ein Problem, und zwar möchte ich eine Datenbank auslesen und
das nach bestimmten Kriterien, die per Parameter übergeben werden, nur
habe ich das Problem, dass das letzte Suchkriterium nicht zwingend ist und
falls nicht vorhanden gar nicht abgefragt werden soll.

Da kam mir die Idee, dass man das mit einer if-Abfrage regeln kann und
am besten fände ich es, wenn ich diese einfach in die SQL Abfrage einketten
könnte. Ist das möglich?

Quellcode sieht im Moment so aus (funktioniert auch, ist aber nicht schön):
PHP:
	if ($ty == "" and $a == "collection") {
	 	$sql = "SELECT *
				FROM abc
				WHERE collection_ref=".$_GET['c']."
					AND area='".$_GET['a']."'
					AND subarea='".$_GET['sa']."'";
	} else {
	 	$sql = "SELECT *
				FROM abc
				WHERE collection_ref=".$_GET['c']."
					AND area='".$_GET['a']."'
					AND subarea='".$_GET['sa']."'
					AND type='".$_GET['ty']."'";
	}

Gruß
Dominik
 
Folgende ist möglich:
PHP:
$criteria = array('1'); // mind. eine Bedingung notwendig, 1 immer wahr
if (isset($_GET['c']) && trim($_GET['c'])!='') {
	$criteria[] = ' collection_ref='.int($_GET['c']);
}
if (isset($_GET['a']) && trim($_GET['a'])!='') {
	$criteria[] = ' area="'.mysql_real_escape_string($_GET['a']).'"';
}
if (isset($_GET['sa']) && trim($_GET['sa'])!='') {
	$criteria[] = ' subarea="'.mysql_real_escape_string($_GET['sa']).'"';
}
if (isset($_GET['ty']) && trim($_GET['ty'])!='') {
	$criteria[] = ' type="'.mysql_real_escape_string($_GET['ty']).'"';
}
$sql = "SELECT *
        FROM abc
        WHERE ".implode(' AND ', $criteria);
 
Hey Danke für die schnelle Antwort, leider sind meine PHP Kenntnisse (noch) zu beschränkt um alleine auf solche Ideen zu kommen :)
 
Ja es funktioniert, aber noch eine andere Frage:

Kann ich eine Funktion bauen, die Parameter "zerteilt"?

Also ich gebe in der URL script.php?test=Wert1,Wert2,Wert3 ein und die Funktion teilt das Parameter nach jedem Komma zu $a = Wert1, $b = Wert2 und $c = Wert3 usw. auf?
 
Zurück