User Tools

Site Tools


php:kompost:einfachersqlfilterzusammensetzen

[PHP] [MySQL] Einfacher SQL-Filter aus $_POST zusammenstellen

Diese Seite befindet sich im Kompost. Wenn ich mal Zeit habe, wird sie entweder überarbeitet oder entfernt.

Problemstellung

Man hat eine Suchmaske um mehrere Felder nach verschiedenen Kriterien zu durchsuchen. Jedoch muss nicht jeder Suchbegriff eingegeben werden.

Lösung

In dieser Lösung sind keine Security-Relevanten Teile eingebaut. Der Code dient eher als Idee, wie man sowas umsetzen kann. Natürlich muss man noch mit input_filter() und mysql_escape_string() arbeiten….

<!-- Formular -->
<form action="?" method="post">
	Text 1:<input type="text" name="text1" /><br />
	Text 2:<input type="text" name="text2" /><br />
	Zahl 3:<input type="text" name="zahl3" /><br />
	<input type="submit" name="submit" />
</form>
<hr />
 
<?php
// Prüfen ob das Formular gesendet wurde
if(isset($_POST['submit'])){
	// Array initializieren. Falls kein argument angegeben wurde, 
	// dann ist die Argumentliste ein leeres Array
	$wheres = array();
	//Jedes Feld prüfen und ggf in den Where-Array einfügen
	if(isset($_POST['text1'])) $wheres[] = "text1='{$_POST['text1']}'";
	if(isset($_POST['text2'])) $wheres[] = "text2='{$_POST['text2']}'";
	if(isset($_POST['zahl3'])) $wheres[] = "zahl3={$_POST['zahl3']}";
 
	// Wenn Bedinungen vorhanden sind, WHERE-Teil des SQL-String zusammenstellen
	if(count($wheres)>0) $wherestring = "WHERE ".implode(' AND ', $wheres);
	//SQL-String zusammensetzen
	$sql = "SELECT * FROM mytable {$wherestring}";
	//TODO: Sql an die DB absetzen
	echo $sql;
}
?>
php/kompost/einfachersqlfilterzusammensetzen.txt · Last modified: 09.01.2019 08:41:45 by yaslaw