Datenbankabfragen mit Kommentaren ergänzen

So, Fragen und Probleme endgültig gelöst. Alles klappt nun reibungslos und fehlerfrei. Und ich ärgere mich über mich selber.

PHP-Code:
if (isset($_POST['geschlecht']) && isset ($_POST['saison']) && isset($_POST['weltcup']) && $_POST['geschlecht'] == 'm' && $_POST['saison'] == '2010/11' && in_array('Sprint', $_POST['weltcup'])) {
echo "Kommentar ...";}

Hattest du das so probiert?

Genau so hatte ich es getestet. Na ja, fast. Ich hatte schlichtweg, wohl bedingt durch hin- und herkopieren, das dritte isset unterschlagen. Und trotz mehrmaligem Korrekturlesen nicht bemerkt. Erst, als ich deinen Code über den meinen gelegt und Zeichen für Zeichen verglichen habe, ist mir das aufgefallen. Tut mir leid, dass ich dadurch nochmals unnötige Helferzeit beansprucht habe.

@ Lime:
Danke auch für deinen Vorschlag. Ich merke ihn mir vor. Was ich als Kommentare bezeichne, sind Zusatzinfos unterschiedlichen Charakters und Aufbaus, zum Teil auch Tabellen mit mehrzeiligem Inhalt. Allein für die Saison 2010/11 wird die externe Datei so um die 500 Zeilen umfassen. Mit elseif würde ich, glaube ich, den Überblick verlieren. Darum habe ich mich hier für die Einbindung verschiedener externer Dateien entschieden und auch eine jeweils eigenständige Kommentardefinition.

Viele Grüße und nochmals danke
hawaiian
 
Mh, aber wie ich das verstehe nimmst du für jeden individuellen Kommentar nochmal die kompletten "!empty()" mit? Das ist eigentlich recht sinnloser Code. Oder verstehe ich das falsch?

Möglich wär auch eine Bastelei, dreidimensionale Arrays zur Ausgabe des Kommentars... Jedoch etwas kompliziert dann. Mit Arrays hab ich es grundlegend eh nicht sonderlich, aber nen Versuch wäre es wert.

leg eine Datei an, z.B. "kommentare.inc.php"
PHP:
<?PHP
$comment[w,200910,weltcup] = "Kommentar für weibliche Sieger des Weltcups im Jahre 2009/10.";
$comment[m,201011,weltcup] = "Kommentar für männliche Sieger des Weltcups im Jahre 2010/11.";
?>
€: Mir fällt auf, du darfst hier beim Jahr kein Slash machen. Das müsste man abändern... Also einfach statt 2010/11 201011

und die andere Datei baust du dann so auf:
PHP:
if(isset($_POST['geschlecht']) && isset ($_POST['saison']) && isset($_POST['weltcup'])) 
{ 
    $geschlecht = $_POST['geschlecht'];
    $saison = $_POST['saison'];
    $weltcup = $_POST['weltcup'];

    require("./kommentare.inc.php");
    echo $comment[$geschlecht,$saison,$weltcup];
}
oder noch kürzer...
PHP:
if(isset($_POST['geschlecht']) && isset ($_POST['saison']) && isset($_POST['weltcup'])) 
{ 
    require("./kommentare.inc.php");
    echo $comment[$_POST['geschlecht'],$_POST['saison'],$_POST['weltcup']];
}

Ich habs nicht ausprobiert, müsste theoretisch aber funktionieren. So hast du nicht immer einen kompletten neuen elseif für jeden Kommentar, sondern nur eine neue Array-Variable mit verschiedenen Eigenschaften.
Die Kommentar-Datei müsstest du halt "gut" strukturieren, damit du den Überblick behältst. ;)
€: Ja ganz vergessen, warum ich da ne zweite Datei für gemacht hab: nur damit der Code "rein" bleibt und du den Inhalt schön vom Code trennst...

Gruß
 
Zuletzt bearbeitet:
@ Lime
Aus Zeitgründen komme ich erst heute dazu, mich für deinen ergänzenden Tipp zu bedanken. Zu
PHP:
echo $comment[$_POST['geschlecht'],$_POST['saison'],$_POST['weltcup']];
moniert php ein Komma und erwartet stattdessen eine schließende Klammer ( ] ). Auch die "lange" Version führt zu dieser Fehlermeldung. Ich teste mal noch weiter und merke mir deinen Vorschlag auf jeden Fall vor.

Viele Grüße
hawaiian
 
Dass die kurze Version nicht funktioniert, war mir irgendwo klar... So schlau kann PHP kaum sein. *g*
Aber die lange Version müsste eigentlich schon funktionieren, es sei denn PHP beherrscht keine dreidimensionalen Arrays... Das hab ich noch von C# intus. :)
Die Alternative wäre, die ganzen "Bedingungen" zusammenzufassen...

komentare.inc.php
PHP:
$comment['w200910weltcup'] = "Kommentar für weibliche Sieger des Weltcups im Jahre 2009/10.";
$comment['m201011weltcup'] = "Kommentar für männliche Sieger des Weltcups im Jahre 2010/11.";

und der Quellcode:
PHP:
echo $comment[$_POST['geschlecht'].$_POST['saison'].$_POST['weltcup']];

sogar getestet, also das funktioniert. :)
 
Zurück