# Tabelle durch mehrere Drop Down filtern



## Tschebetto (12. September 2008)

Hallo Leute, 

ich suche mir schon seit Tagen die Finger wund finde aber keinerlei Hilfe oder Anregung wie ich folgendes umsetzen könnte. Ok, in Wahrheit suche ich nach einem Beispiel Code den ich dann auf meine Bedürfnisse zurechtbiege.

Ich habe eine stinknormale Tabelle:
zb.

Spalte 1  Spalte 2  Spalte 3  Spalte 4
 Wert 1    Wert A    Wert B    Wert AB
 Wert 1    Wert D    Wert C    Wert CD
 Wert 2    Wert D    Wert E    Wert AB

Ich möchte nun 3 oder 4 Drop Downs haben wo ich die Werte von zb. Spalte 1, 2 und 3 auswählen kann und dann sollen nur die Zeilen angezeigt werden wo diese Werte übereinstimmen.

Ich denke so schwer kann das nicht sein. Oder?
Löse ich das mit Javascript oder besser mit PHP?

Bitte um Eure Hilfe bzw. Denkanstöße.
Danke!
lg
stefan


----------



## mgraf (12. September 2008)

Ohne Dropdowns kann ich folgendes anbieten:
http://webplicity.net/flexigrid/

lg
michi


----------



## Tschebetto (12. September 2008)

Danke für die rasche Antwort....!!
Ich suche jedoch nach einer anderen, in javascript oder PHP/mysql hehaltener, Lösung.

lg
stefan


----------



## Tschebetto (12. September 2008)

Vielleicht zur besseren Veranschaulichung. Hier der Code für eine 08/15 Tabelle.
Mit den Drop Downs (die dann natürlich die Werte der jeweiligen Spalte enthält) will ich dann filtern.


```
<html>
<head>
<title>Tabelle mit Filter</title>
</head>

<body>
<select name="select">
  <option selected>Art</option>
</select>
<select name="select2">
  <option selected>Volumen</option>
</select>
<select name="select3">
  <option selected>Temperatur</option>
</select>
<select name="select4">
  <option selected>Einsatzgebiet</option>
</select>
<br>
<br>
<table cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="80">Art </td>
    <td width="80">Artikelnr</td>
    <td width="80">Volumen </td>
    <td width="138">Temperatur </td>
    <td width="92">Einsatzgebiet </td>
    <td width="108">Kompressoren </td>
    <td width="80">Preis </td>
  </tr>
  <tr>
    <td width="80">Schrank </td>
    <td>UPUL 540 </td>
    <td>450 L </td>
    <td>-20/-40 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">6.281,00 </td>
  </tr>
  <tr>
    <td width="80">Schrank </td>
    <td>UPUL 580 </td>
    <td>450 L </td>
    <td>-40/-80 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">7.189,00 </td>
  </tr>
  <tr>
    <td width="80">Schrank </td>
    <td>ULUF 450 </td>
    <td>390 L </td>
    <td>-40/-80 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">6.610,00 </td>
  </tr>
  <tr>
    <td width="80">Schrank </td>
    <td>ULUF 400 </td>
    <td>390 L </td>
    <td>-20/-40 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.384,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>MUF </td>
    <td>40 L </td>
    <td>0/-80 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.829,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>ULTF 80 </td>
    <td>71 L </td>
    <td>-40/-85 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.597,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>ULTF 320 </td>
    <td>284 L </td>
    <td>-40/-85 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.304,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>ULTF 420 </td>
    <td>368 L </td>
    <td>-40/-85 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.477,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTF 80 </td>
    <td>71 L </td>
    <td>-30/-53 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.826,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTF 150 </td>
    <td>133 L </td>
    <td>-30/-53 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.886,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTF 320 </td>
    <td>284 L </td>
    <td>-30/-53 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.924,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTF 420 </td>
    <td>368 L </td>
    <td>-30/-53 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.032,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTF 530 </td>
    <td>504 L </td>
    <td>-30/-53 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.597,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>UPLTF 330 </td>
    <td>307 L </td>
    <td>-20/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.288,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTFE 110 </td>
    <td>130 L </td>
    <td>-10/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.836,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTFE 210 </td>
    <td>226 L </td>
    <td>-10/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.886,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTFE 310 </td>
    <td>299 L </td>
    <td>-10/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.924,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTFE 410 </td>
    <td>358 L </td>
    <td>-10/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.032,00 </td>
  </tr>
  <tr>
    <td>Truhe </td>
    <td>LTFE 510 </td>
    <td>416 L </td>
    <td>-10/-45 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.597,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 300 </td>
    <td>300 L </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.422,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 300 </td>
    <td>300 L </td>
    <td>-10 / -30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.988,00 </td>
  </tr>
  <tr>
    <td>Kombination </td>
    <td>LR 270-2 </td>
    <td>135 / 135 </td>
    <td>+1 / +10 und -10/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.407,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LFF 270 </td>
    <td>135 / 135 </td>
    <td>+1 / +10 und -10/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.988,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 500 </td>
    <td>500 L </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.503,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 500 </td>
    <td>500 L </td>
    <td>-10 / -25 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.746,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 700 </td>
    <td>700 L </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.827,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 700 </td>
    <td>700 L </td>
    <td>-10 / -30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.263,00 </td>
  </tr>
  <tr>
    <td>Kombination </td>
    <td>LR 660-2 </td>
    <td>330 / 330 </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.625,00 </td>
  </tr>
  <tr>
    <td>Kombination </td>
    <td>LFF 660 </td>
    <td>330 / 330 </td>
    <td>+1 / +10 und -10/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.844,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 1400 </td>
    <td>1400 L </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.378,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 1400 </td>
    <td>1400 L </td>
    <td>-10 / -30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.697,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 430 </td>
    <td>388 L </td>
    <td>+2 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.250,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 430 </td>
    <td>388 L </td>
    <td>-5/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.771,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LRM 430 </td>
    <td>388 L </td>
    <td>- 5 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.619,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 630 </td>
    <td>571 L </td>
    <td>+2 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.673,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 630 </td>
    <td>571 L </td>
    <td>-5/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.205,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LRM 630 </td>
    <td>571 L </td>
    <td>- 5 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.152,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 170 </td>
    <td>161 L </td>
    <td>+2 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.822,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 140 </td>
    <td>122 L </td>
    <td>-5/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.822,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LR 390 </td>
    <td>377 L </td>
    <td>+2 / +12 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.107,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>LF 340 </td>
    <td>312 L </td>
    <td>-5/-30 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.107,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 500 </td>
    <td>500 L </td>
    <td>+1 / +10 </td>
    <td>Apotheke </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.230,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PF 500 </td>
    <td>500 L </td>
    <td>-10/-23 </td>
    <td>Apotheke </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.553,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 700 </td>
    <td>700 L </td>
    <td>+1 / +10 </td>
    <td>Apotheke </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.553,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PF 700 </td>
    <td>700 L </td>
    <td>-10/-23 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">3.796,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 1400 </td>
    <td>1400 L </td>
    <td>+1 / +10 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.088,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PF 1400 </td>
    <td>1400 L </td>
    <td>-10/-23 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.330,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 170 </td>
    <td>166 L </td>
    <td>+2 / +15 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.036,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 310 </td>
    <td>281 L </td>
    <td>+3 / + 20 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.109,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 380 </td>
    <td>351 L </td>
    <td>+3 / + 20 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.292,00 </td>
  </tr>
  <tr>
    <td>Kombination </td>
    <td>PR 380 - 2 </td>
    <td>347 L </td>
    <td>+3 / + 20 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">1.238,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>PR 390 </td>
    <td>387 L </td>
    <td>+2 / +15 </td>
    <td>Labor </td>
    <td>Ein - Kompressor </td>
    <td align="right">2.321,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>BBR 500 </td>
    <td></td>
    <td>+ 4 </td>
    <td>Blutbeutel </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.135,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>BBR 700 </td>
    <td></td>
    <td>+ 4 </td>
    <td>Blutbeutel </td>
    <td>Ein - Kompressor </td>
    <td align="right">4.364,00 </td>
  </tr>
  <tr>
    <td>Schrank </td>
    <td>BBR 1400 </td>
    <td></td>
    <td>+ 4 </td>
    <td>Blutbeutel </td>
    <td>Ein - Kompressor </td>
    <td align="right">5.993,00 </td>
  </tr>
  <tr>
    <td>Plasma </td>
    <td>PBF 108 </td>
    <td></td>
    <td>- 55 </td>
    <td>Blutplasma </td>
    <td>Kontakt-K&uuml;hlung </td>
    <td align="right">37.711,00 </td>
  </tr>
  <tr>
    <td>Plasma </td>
    <td>PBF 116 </td>
    <td></td>
    <td>- 55 </td>
    <td>Blutplasma </td>
    <td>Kontakt-K&uuml;hlung </td>
    <td align="right">41.840,00 </td>
  </tr>
  <tr>
    <td>Plasma </td>
    <td>PBF 124 </td>
    <td></td>
    <td>- 55 </td>
    <td>Blutplasma </td>
    <td>Kontakt-K&uuml;hlung </td>
    <td align="right">48.762,00 </td>
  </tr>
</table>
</body>
</html>
```


----------



## Homer Simpson (12. September 2008)

Hallo,
also ich schlage vor das du per PHP erstmal abfragst was in den Dropdowns ausgewählt wurde.

```
$art= $_POST['select1'];
$volumen = $_POST['select2'];
$temp = $_POST['select3'];
$gebiet = $_POST['select4'];
```
und baust dir entsprechende WHERE Abfragen für dein SQL zusammen:

```
$where = array();
if($art){
 $where[] = "produkt_art = ' " . $art . " ' ";
}
if($volumen){
 $where[] = "produkt_volumen = ' " . $volumen . " ' ";
}
if($temp){
 $where[] = "produkt_temp = ' " . $temp . " ' ";
}
if($gebiet){
 $where[] = "produkt_gebiet = ' " . $gebiet . " ' ";
}
```
daraufhin kannst du es mit implode() in die WHERE-Klausel deiner SQL Abfrage scheiben.

```
$query = "SELECT * FROM deine_tabelle
WHERE " . implode( ' AND ', $where );
```

Du müsstest natürlich noch abfangen das beim ersten Aufruf der Tabelle garnichts ausgewählt ist und sozusagen Standart-Werte setzen, damit $where nicht leer ist und die SQL anweisung sozusagen nicht ins leere läuft.

Das ist jetzt zwar kein Beispiel-Code den du zurecht biegen kannst, aber ich denke das ist schon ein Ansatz mit dem man was anfangen kann.

Gruß
Markus


----------



## Tschebetto (12. September 2008)

Vielen Dank für deine Antwort. 
Leider bin ich noch nicht so weit selbst Code zu erzeugen. Momentan ändere ich nur bestehendes für meine Zwecke daher kann ich deinen Input noch nicht zu einem Ganzen machen. 

Danke dir trotzdem sehr!
lg


----------

