Hallo Zusammen,
Ich habe drei Selectfelder die beim Abschicken jeweils einzeln dynamisch meine SQL Abfrage ändern. Nun würde ich gerne die Selectfelder so zusammenfassen das wenn ich in den Feldern einen Wert wähle, erst zum Schluss meine Abfrage durch die Formwerte generiert wird. Wie eine Art Kriterienfilter über die Selectfelder.. Ich glaube ich kann in einem Form ja nur einen zusammenhängenden Wert speichern und müsste den dann wieder aufsplitten für die dynamische Abfrage. Gibt es da einen einfache elegante Lösung oder muss ich meinen Code komplett zerrupfen ? Wo soll ich anfangen an der Select SQL Abfrage oder den Selectfeldern ? Hier mal Code zur Veranschaulichung
Hier die Selectfelder
Und Hier die SQL Abfrage
Wäre für Denkanstösse dankbar
LG re3ni
Ich habe drei Selectfelder die beim Abschicken jeweils einzeln dynamisch meine SQL Abfrage ändern. Nun würde ich gerne die Selectfelder so zusammenfassen das wenn ich in den Feldern einen Wert wähle, erst zum Schluss meine Abfrage durch die Formwerte generiert wird. Wie eine Art Kriterienfilter über die Selectfelder.. Ich glaube ich kann in einem Form ja nur einen zusammenhängenden Wert speichern und müsste den dann wieder aufsplitten für die dynamische Abfrage. Gibt es da einen einfache elegante Lösung oder muss ich meinen Code komplett zerrupfen ? Wo soll ich anfangen an der Select SQL Abfrage oder den Selectfeldern ? Hier mal Code zur Veranschaulichung
Hier die Selectfelder
PHP-Code:
<?php
include 'wahl.php';
echo "<table border='0' width='100%' CELLSPACING='5'>";
echo "<th>";
echo "<form method='post' action='".$_SERVER['PHP_SELF']."'>";
echo "<input style='width:150px' type='text' name='search' input type='submit' value='Suchen ?'>";
echo "<input type='submit' value='OK'>";
echo "</form>";
echo "</th>";
echo "<th>";
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<select style="width:100px" name="stadt">';
foreach($orte as $key => $stadt)
{
echo '<option value="' . $key . '">' . $stadt . '</option>';
}
echo '</select>';
'<input type="submit" value="OK"/>' .
'</form>';
echo "</th>";
echo "<th>";
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<select style="width:100px" name="hause">';
foreach($bauwerk as $baukey => $hausen)
{
echo '<option value="' . $baukey . '">' . $hausen . '</option>';
}
echo '</select>' .
'<input type="submit" value="OK"/>' .
'</form>';
echo "</th>";
echo "<th>";
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<select style="width:100px" name="abteilunge">';
foreach($abteil as $grukey => $gruppen)
{
echo '<option value="' . $grukey . '">' . $gruppen . '</option>';
}
echo '</select>' .
'<input type="submit" value="OK"/>' .
'</form>';
echo "</th>";
echo "<th>";
echo '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
echo '<select style="width:100px" name="abteilunge2">';
foreach($abteil2 as $grukey2 => $gruppen2)
{
echo '<option value="' . $grukey2 . '">' . $gruppen2 . '</option>';
}
echo '</select>' .
'<input type="submit" value="OK"/>' .
'</form>';
echo "</th>";
echo "<th>";
echo "<form method='post' action='".$_SERVER['PHP_SELF']."'>";
echo "<input type='submit' value='Alle Anzeigen'>";
echo "</form>";
echo "</th>";
echo "</table>";
?>
PHP-Code:
<?php
include 'wahl.php';
$sql=" SELECT * FROM telefonbuch ";
if( isset($_POST['stadt'] ) )
{
$stadtKey = intval( $_POST['stadt'] );
$hausKey = intval( $_POST['hause'] );
$sql.=" WHERE ";
$sql.="ort = '". $orte[ $stadtKey ] ."' ";
$sql.=" AND ";
$sql.=" haus = '". $bauwerk[ $hausKey ] ."' ";
}
if( isset($_POST['hause'] ) )
{
$hausKey = intval( $_POST['hause'] );
$sql.=" WHERE ";
$sql.=" haus = '". $bauwerk[ $hausKey ] ."' ";
}
if( isset($_POST['abteilunge'] ) )
{
$gruppenKey = intval( $_POST['abteilunge'] );
$sql.=" WHERE ";
$sql.=" abteilung = '". $abteil[ $gruppenKey ] ."' ";
}
if( isset($_POST['abteilunge2'] ) )
{
$gruppenKey2 = intval( $_POST['abteilunge2'] );
$sql.=" WHERE ";
$sql.=" abteilung = '". $abteil2[ $gruppenKey2 ] ."' ";
}
if( isset($_POST['search'] ) )
{
$suche = $_POST['search'];;
$sql.=" WHERE name LIKE '". $suche ."'";
$sql.=" OR vorname LIKE '". $suche ."'";
$sql.=" OR telefon LIKE '". $suche ."'";
$sql.=" OR mobil LIKE '". $suche ."'";
$sql.=" OR email LIKE '". $suche ."'";
$sql.=" OR ort LIKE '". $suche ."'";
$sql.=" OR haus LIKE '". $suche ."'";
$sql.=" OR abteilung LIKE '". $suche ."'";
$sql.=" OR etage LIKE '". $suche ."'";
$sql.=" OR position LIKE '". $suche ."'";
}
$sql.=" ORDER BY ort, haus, etage, name";
include 'db_data.php';
echo "<table id='tabelle_ausgabe' border='1' width='100%'>";
echo "<th>Name</th><th>Vorname</th><th>Telefon</th><th>Mobil</th><th>Email</th><th>Ort</th><th>Haus</th><th>Abteilung</th><th>Etage</th><th>Position</th>";
try {
$db_verbindung = new PDO('mysql:host=localhost;dbname=tel', $db_name, $db_passwort,
array(PDO::ATTR_PERSISTENT => true));
$db_verbindung->exec("SET CHARACTER SET utf8");
foreach ($db_verbindung->query($sql) as $ausgabe)
{
echo '<tr>';
echo '<div class="name"><td>'.$ausgabe['name'].'</td></div>';
echo '<div class="vorname"><td>'.$ausgabe['vorname'].'</td></div>';
echo '<div class="telefon"><td>'.$ausgabe['telefon'].'</td></div>';
echo '<div class="mobil"><td>'.$ausgabe['mobil'].'</td></div>';
echo '<div class="email"><td>'.$ausgabe['email'].'</td></div>';
echo '<div class="ort"><td>'.$ausgabe['ort'].'</td></div>';
echo '<div class="haus"><td>'.$ausgabe['haus'].'</td></div>';
echo '<div class="abteilung"><td>'.$ausgabe['abteilung'].'</td></div>';
echo '<div class="etage"><td>'.$ausgabe['etage'].'</td></div>';
echo '<div class="position"><td>'.$ausgabe['position'].'</td></div>';
echo '</tr>';
}
echo "</table>";
}
catch (PDOException $db_fehler) {
echo "Datenbankfehler: Die Daten konnten nicht gelesen werden.";
die();
}
$db_verbindung = null;
?>
LG re3ni

du solltest dir aber auf jeden Fall überlegen, was in den verschiedenen Fällen passieren soll. Zum Beispiel, wenn sowohl hause (das e eigentlich Absicht?) und search angegeben sind. Willst du dann, dass es
Kommentar