thomas: Problem mit Ausgabe!

Beitrag lesen

Hallo Community, nach einiger Zeit hab ich mal wieder ein bisschen mit PHP gebastelt. In einer Datei liegen die Einträge zeilenweise vor, und zwar so:

js###button###
js###button###
js###button###
flash###image###
js###button###

Über zwei Selectlisten kann man sich bestimmte Einträge anzeigen lassen, z.B. alle Einträge, die js und button beinhalten:

<form action="te.php" method="GET">
<select name="cat">
<option value="js">Javascript</option>
<option value="flash">Flash</option>
</select>
<select name="subcat">
<option value="button">Buttons</option>
<option value="image">Bilder</option>
</select><input type="submit" value="LOS!">
</form>

In der PHP Datei werte ich die Variablen nun aus:

<?php
if(isset($HTTP_GET_VARS["cat"]) and isset($HTTP_GET_VARS["subcat"])) {
$db="db.txt";
$take_db=file($db);
foreach($take_db as $cut) {
$op=explode("###", $cut);
if($HTTP_GET_VARS["cat"]==$op[0] and $HTTP_GET_VARS["subcat"]==$op[1]) {
echo "<table border="1" cellspacing="0" cellpadding="4">";
echo "<tr><td>Hauptkategorie: $op[0]</td><td>Subkategorie: $op[1]</td></tr>";
echo "</table>";
}
else {
echo "Keine Datensätze gefunden!";
}
}
}
?>

Leider taucht hier wieder mein leidiges Problem auf, das ich schon öfter hatte: da sich else{} innerhalb von foreach{} befindet, wird die Meldung Keine Datensätze gefunden! leider sooft ausgegeben, wie die Werte von cat und subcat nicht übereinstimmen. Außerdem taucht diese Meldung auch dann auf, wenn eine Übereinstimmung gefunden wurde, und zwar über-, unterhalb der Tabelle oder einfach zwischendrin! Gibt es keine Möglichkeit, das ganze eleganter zu bewerkstelligen?

Grüße, thomas.