• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

sql Abfrage für Navigation Menüpunkte mit Unterpunkten

Hallo ich möchte für eine Navigation eine SQL-Abfrage nutzen.
Dabei habe ich zwei Arten von Menüpunkten

  1. Menüpunkt ohne Unterpunkt (submenuitem)
  2. Menüpunkt mit Unterpunkten (menuitem)
Standartmässig wird Fall 1 verwendet.
Fall 2 soll jedoch verwendet werden wenn es für diesen Bereich (z.B. d - F) Unterpunkte (submenu) gibt die eine Bedingung erfüllen.
Da aber nicht alle Unterpunkte des jeweiligen Bereiches die Bedingung erfüllen sollen nur diese aufgeführt werden.

Die Unterpunkte allein währen kein Problem. Jedoch habe ich Schwierigkeiten bei dem Menüpunkt. Bzw. der Kombination von beiden.

Die Ausgabe wirft immer den Fall 2 aus.
Was aber definitiv gemäß den Bedingungen nicht sein dürfte.

Leider bin ich aber auch noch nicht so sicher und weit beim erlernen von PHP und sql.
Und so würde ich mich über Unterstützung sehr freuen.
Ich hatte schon mal 2 while-schleifen hinter einander aber das schien mir nicht logisch zu sein und hatte auch nicht der Erfolg.

PHP:
<?php
$ergebnis = mysql_query("SELECT * FROM Story WHERE Storyname REGEXP '^[d-f]' ORDER BY Storyname ASC ") OR die("Error: $abfrage <br>".mysql_error());
$row = mysql_fetch_object($ergebnis);
if ($row->Veroeffentlicht == "1" and $row->FSK18 == "1")    //  Veröffentlicht=1 (ja) + FSK18=1 (nein)
{
echo '<a class="menuitem submenuheader" href="index.php?Bereich=erotikideen&Inhalt=ueber-erotikideen" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis FSK18</a>';
     '<div class="submenu">';
     '<ul>';

         while($row = mysql_fetch_object($ergebnis))
         {

                 if ($row->Veroeffentlicht == "1" and $row->FSK18 == "1")    //  Veröffentlicht=1 (ja) + FSK18=1 (nein)
                 {
                 echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $row->url, '&#D-F">', $row->Storyname, '</a></li>';
                 }  // if ende story

         ;} // while End
echo '</ul>';
echo '</div>';
}    // if ende

else // FSK 16

{
         echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="FSK16 Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis FSK16</a>';
}  // else ende menüpunkt
?>
 
Wozu dient denn die erste if-Bedingung? Dort wird das erste Element der Ergebnismenge geprüft. Falls das „veröffentlicht“ und „FSK18“ ist, werden alle weiteren Elemente per Schleife durchlaufen, sonst geht die Ausführung zu FSK16.

Wenn du wissen möchtest, wieso eine Bedingung erfüllt ist, obwohl sie nicht erfüllt sein sollte, lass dir die geprüften Werte ausgeben. Dann siehst du, was drinsteht.

PHP:
var_dump($row->Veroeffentlicht, $row->FSK18);
 
Wozu dient denn die erste if-Bedingung? Dort wird das erste Element der Ergebnismenge geprüft. Falls das „veröffentlicht“ und „FSK18“ ist, werden alle weiteren Elemente per Schleife durchlaufen, sonst geht die Ausführung zu FSK16.
PHP:
var_dump($row->Veroeffentlicht, $row->FSK18);

na dann brauche ich auch nicht testen.
Ich bin davon ausgegangen (warum auch immer ???) das zu erst alle Datensätze der Gruppe auf die Bedingung geprüft werden.


Denn der erste Datensatz in der Gruppe (a-c, d-f, g-i,....) muss nicht zwingend die Bedingung erfüllen. Es kann von z.B. 10 Datensätzen der Gruppe auch der 5 oder ein anderer sein.
Sobald aber einer der Datensätze dieser Gruppe die Bedingung erfüllt so soll der Menüpunt mit Fall 2 (FSK16) eingeblendet werden. Und sonst eben Fall 1 (FSK18.
In den Unterpunkten sollen dann nur die Datensätze der Gruppe eingeblendet werden die den Bedingungen entsprechen.

Beispiel

A-C => Fall 1 für die ganze Gruppe
D-F => Fall 2 / 1 von 3 Datensätzen entspricht der Bedingung (z.B der 2 Datensatz)
G-H => Fall 1
....
M-O => Fall 2 / 2 von 10 Datensätzen ( zb. der 5 und 7)
....
 
Ah, jetzt habe ich's auch verstanden. :)

Unveröffentlichte Beiträge sollen vermutlich nie angezeigt werden? Das kann mit in die SQL-Query, dann kriegen wir die gar nicht erst.

Code:
SELECT *
FROM Story
WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1)
ORDER BY Storyname ASC

Dann ist es am einfachsten, die Einträge zu gruppieren.

PHP:
$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk18' : 'fsk16';
    $entries[$fsk][] = $row;
}

var_dump($entries);

Nun gilt:

PHP:
if (count($entries['fsk18']) === 0) { /* Keine Einträge mit FSK18 */ }
if (count($entries['fsk16']) === 0) { /* Keine Einträge mit FSK16 */ }

Und sowas ist möglich:

PHP:
foreach ($entries['fsk16'] as $entry) {
    echo '<li>' . $entry->Storyname . '</li>';
}

Alles schematisch.
 
Zuletzt bearbeitet:
Das muss ich mal studieren!!

ich hatte mir eben (bevor Du geantwortet hast) so was überlegt. Doch noch nicht das gewünschte Ergebnis

PHP:
<?php
$ergebnis = mysql_query("SELECT * FROM Story WHERE Storyname REGEXP '^[d-f]' ORDER BY Storyname ASC ") OR die("Error: $abfrage <br>".mysql_error());
$row = mysql_fetch_object($ergebnis);
while($row = mysql_fetch_object($ergebnis))
{
         if ($row->Veroeffentlicht == "1" and $row->FSK18 == "1") var_dump($row->Veroeffentlicht, $row->FSK18);    //  Veröffentlicht=1 (ja) + FSK18=1 (nein)
         { $d-f == 1; }  // prüffe alle Datensätze ob Gruppe min einen Datensatz hat de Bedingung erfüllt
;}

if ($d-f > 0) // min einer der Datensätze ist FSK 16
         {
         echo '<a class="menuitem submenuheader" href="index.php?Bereich=erotikideen&Inhalt=ueber-erotikideen" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis FSK18</a>';
         '<div class="submenu">';
         '<ul>';

         while($row = mysql_fetch_object($ergebnis))
         {

                 if ($row->Veroeffentlicht == "1" and $row->FSK18 == "1")    //  Veröffentlicht=1 (ja) + FSK18=1 (nein)
                 {
                 echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $row->url, '&#D-F">', $row->Storyname, '</a></li>';
                 }  // if Datensatze Ende

         ;} // while End

         echo '</ul>';
         echo '</div>';
}    // if Menüpunkt FSK16 Ende

else // FSK 18

{
         echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="FSK16 Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis FSK16</a>';

}  // else Menüpunkt FSK18 Ende

?>

Ich hatte mir gedacht ich prüfe in einer extra Schleife durch ob einer der Datensätze die Bedingung erfüllt und zähle dann eine Variabel auf 1

Dann kann ich bei der Variabel 1 denn Fall 2 annehmen.
Und prüfe in der anschließenden (internen) Schleife welche/r der Datensätze der Bedingung entspricht
 
Gerade keine Zeit, da inhaltlich drauf einzugehen, aber:

$d-f ist kein gültiger Variablenname. PHP versucht hier f von $d abzuziehen. f wird als Konstante interpretiert. Da diese aber nicht gesetzt ist, als String → "f".
 
Ah, jetzt habe ich's auch verstanden. :)

Unveröffentlichte Beiträge sollen vermutlich nie angezeigt werden? Das kann mit in die SQL-Query, dann kriegen wir die gar nicht erst.

Code:
SELECT *
FROM Story
WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1)
ORDER BY Storyname ASC
Dann ist es am einfachsten, die Einträge zu gruppieren.

PHP:
$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk18' : 'fsk16';
    $entries[$fsk][] = $row;
}

var_dump($entries);
Nun gilt:

PHP:
if (count($entries['fsk18'] === 0)) { /* Keine Einträge mit FSK18 */ }
if (count($entries['fsk16'] === 0)) { /* Keine Einträge mit FSK16 */ }
Und sowas ist möglich:

PHP:
foreach ($entries['fsk16'] as $entry) {
    echo '<li>' . $entry->Storyname . '</li>';
}
Alles schematisch.


ich habe daran etwas weiter gearbeitet.
Das Ergebnis für D-F stimmt. Doch leider bin ich nicht ganz richtig verstanden worden. Und den Teil für den FSK18 Fall erläutere ich anders. Da ich im Moment noch nicht weis wie ich das dann ändern muss.


  • A - C (alles FSK18 -> Link zur Übersicht) <a class="menuitem"
  • D - F (einiges FSK16) a class="menuitem submenuheader"
    echo '<div class="submenu">';
    echo '<ul>';
    echo '<li>
    • übersicht
    • (schleife) Datensatz (FSK16) <li><a href="index.php?Bereich=
    • .....
  • G - H (alles FSK18 -> Link zur Übersicht)
  • .....
gefüllt Menüpunkt (nicht aufklapbar) <a class="menuitem"
gefüllt Menüpunkt (aufklapbar) <a class="menuitem submenuheader"
kreis Unterpunkt <li><a href="index.php?Bereich=

PHP:
<?php   /* Bereich D - F */
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk16' : 'fsk18';
    $entries[$fsk][] = $row;
}

// var_dump($entries);
         ;

if (count($entries['fsk18'] === 0))
         { /* Keine Einträge mit FSK18 dann Menüpunkt mit Aufklappen */
         echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis F FSK16</a>';
         echo '<div class="submenu">';
         echo '<ul>';
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">Übersicht D bis F</a></li>';
         }

/* if (count($entries['fsk16'] === 0)) {
         /* Keine Einträge mit FSK16 dann Menüpunkt ohne Aufklappen */
/*         echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
         } */

foreach ($entries['fsk16'] as $entry)
         { /* Datensätze die FSK16 sind */
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#D-F">', $entry->Storyname, '</a></li>';

}
         echo '</ul>';
         echo '</div>';

?>
Wie beschrieben das mit dem Fall für FSK16 wenn ich die Links ungeschützt anbieten darf habe ich hin bekommen.
Der Fall für FSK18 soll nur als Übersicht (dort ist eine Vorschau). Und das möchte ich mit einem Menüpunkt der sich von dem anderen Menüpunkt unterscheidet machen.
Mein Problem liegt darin das der Menüpunkt immer aufklappbar ist was er aber nicht sein sollte. Wenn keine Daten mit FSK16 vorhanden sind

und so habe ich dies versucht

PHP:
<?php   /* Bereich A - C */
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[a-c]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk16' : 'fsk18';
    $entries[$fsk][] = $row;
}

// var_dump($entries);
         ;

if (count($entries['fsk18'] === 0))
         { /* Keine Einträge mit FSK18 dann Menüpunkt mit Aufklappen */
         echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="&Ouml;ffnet die Aufstellung der Erotikideen von A bis C">A bis C FSK16</a>';
         echo '<div class="submenu">';
         echo '<ul>';
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von A bis C">Übersicht A bis C</a></li>';

                  foreach ($entries['fsk18'] as $entry)
                  { /* Datensätze die FSK16 sind */
                  echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#A-C">', $entry->Storyname, '</a></li>';
                  }

         echo '</ul>';
         echo '</div>';
         }

else

{
    echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
}
 
Zuletzt bearbeitet:
Ich werde den Eindruck nicht los das ich mich unverständlich ausgedrückt habe.
Deshalb ein Bild von einer ursprünglichen Navigation (noch ohne PHP und SQL)

Menü.jpg

Die Datensätze mit FSK18 dürfen nicht auftauchen. Nur die Übersicht zu diesen. Diese wird aber neben der Navigation angezeigt. Deshalb NEUSTART und wieder mit Leben befüllt.

PHP:
<?php   /* Bereich A - C */
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[a-c]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk18' : 'fsk16';
    $entries[$fsk][] = $row;
}

// var_dump($entries);
         ;

if (count($entries['fsk18'] === 0))
         { /* Keine Einträge mit FSK18 dann Menüpunkt mit Aufklappen */
         echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="&Ouml;ffnet die Aufstellung der Erotikideen von A bis C">A bis C FSK16</a>';
         echo '<div class="submenu">';
         echo '<ul>';
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von A bis C">Übersicht A bis C</a></li>';

if (count($entries['fsk16'] === 0)) {
         /* Keine Einträge mit FSK16 dann Menüpunkt ohne Aufklappen */
         echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von A bis C">A bis C FSK18</a>';
         }

foreach ($entries['fsk18'] as $entry)
{ /* Datensätze die FSK16 sind */
echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#A-C">', $entry->Storyname, '</a></li>';
}

echo '</ul>';
echo '</div>';
}
?>
 
Zuletzt bearbeitet:
Derzeit steht da (ordentlich eingerückt):

PHP:
if (count($entries['fsk18']) === 0) {
    /* Keine Einträge mit FSK18 dann Menüpunkt mit Aufklappen */
    echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="&Ouml;ffnet die Aufstellung der Erotikideen von A bis C">A bis C FSK16</a>';
    echo '<div class="submenu">';
    echo '<ul>';
    echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von A bis C">Übersicht A bis C</a></li>';

    if (count($entries['fsk16']) === 0) {
        /* Keine Einträge mit FSK16 dann Menüpunkt ohne Aufklappen */
        echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=a-c" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von A bis C">A bis C FSK18</a>';
    }

    foreach ($entries['fsk18'] as $entry) { /* Datensätze die FSK16 sind */
        echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#A-C">', $entry->Storyname, '</a></li>';
    }

    echo '</ul>';
    echo '</div>';
}

Das ergibt für mich gerade auch hinsichtlich der Kommentare keinen Sinn.

PHP:
foreach ($entries['fsk18'] as $entry) { /* Datensätze die FSK16 sind */

*schulterzuck*
 
Zuletzt bearbeitet:
ich kann Deine verwirrung Verstehen... sorry.

was Du mit "Derzeit steht da (ordentlich eingerückt):" meinst verstehe ich nicht.

Das mein Kommentar verwirrend ist. Kann ich nachvollziehen. Ich habe die Abfrage so eingestellt das in der Zeile die Datensätze die Veröffentlicht und FSK16 (also Jugendfrei sind)

Zur den werten:
Veröffentlicht=1 (ja)
FSK18=1 (nein)

Standard in der Datenbank ist NULL.
Also Unveröffentlicht und FSK18. Grund: ich gehe grundsätzlich davon aus das ein Inhalt Jugendgefärdend sein könnte. Also erst wenn ich bei einem veröffentlichten Beitrag verneine FSK18 (1) dann darf dieser als kompletter Text über den Unterpunkt zu erreichen sein.
 
Du hast sie gerade noch verstärkt. ;)

Mit „ordentlich eingerückt“ meinte ich, die verschiedenen Ebenen des Codes passend mit Leerzeichen untereinander auszurichten.

Veröffentlicht=1 (ja)
FSK18=1 (nein)

Eine 1 bei Veröffentlicht steht für „ja, es ist veröffentlicht“, eine 1 bei FSK18 steht für „nein, es ist nicht FSK18“?

Einmal steht die 1 also für „ja“ und einmal für „nein“? Das ist doch total missverständlich.
 
Zuletzt bearbeitet:
Du hast sie gerade noch verstärkt. ;)

Mit „ordentlich eingerückt“ meinte ich, die verschiedenen Ebenen des Codes passend mit Leerzeichen untereinander auszurichten.



Eine 1 bei Veröffentlicht steht für „ja, es ist veröffentlicht“, eine 1 bei FSK18 steht für „nein, es ist nicht FSK18“?

Einmal steht die 1 also für „ja“ und einmal für „nein“? Das ist doch total missverständlich.

Ja das sehe ich ein.
Ist so gewachsen ich habe in meiner Datenbank von Access einen Hacken gesetzt.
Ich kann es ja auf unveröffentlicht um benennen.


Das einrücken hilft mir einfach um besser durch If, schleifen oder tabellen durch zu finden.
 
Ich frage mich da einfach, ob du beabsichtigst (in Bezug auf deinen Code in #8), dass diese if-Bedingung…

PHP:
if (count($entries['fsk18'] === 0))

…erst hier geschlossen wird…

PHP:
}
?>
 
Ich frage mich da einfach, ob du beabsichtigst (in Bezug auf deinen Code in #8), dass diese if-Bedingung…

PHP:
if (count($entries['fsk18'] === 0))
…erst hier geschlossen wird…

PHP:
}
?>

Upps... nein natürlich nicht.
Und zu den Umstellungen die ich zwischenzeitlich mal hatte.
(Du hast sicher gemerkt das ich foreach zwischen den if-schleifen hatte.)
Das war weil sonst der Menüpunkt als einer der Unterpunkte auftauchte.

Müsste ich nicht statt der zweiten if-Anweisung eine each-Anweisung setzen?
Denn es werden ja nur in einem Fall Unterpunkte aufgelistet.
Ich hatte da schon mal was auskommentiert. Doch dann bekam ich mit einem der beiden Arrays Probleme.

Mir ist außerdem diese Zeile nicht ganz klar.
PHP:
    $fsk = ($row->FSK18 === '1') ? 'fsk18' : 'fsk16';
    $entries[$fsk][] = $row;

P.S. solltest Du dich von mir gedrängt gefüllt haben. So entschuldige ich mich in aller Form. Ich bin dir für deine Unterstützung und Erklärungen (z.B. die sache mit dem Modulus) sehr dankbar.
 
Ich habe meinen Gedanken mit if und else noch einmal aufgegriffen.

PHP:
<?php   /* Bereich D - F */
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
//    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    $fsk = ($row->FSK18 === '1') ? 'fsk18' : 'fsk16';
    $entries[$fsk][] = $row;
}

// var_dump($entries);
         ;

if (count($entries['fsk18'] === 0))
         { /* Keine Einträge mit FSK18 dann Menüpunkt mit Aufklappen */
         echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis F FSK16</a>';
         echo '<div class="submenu">';
         echo '<ul>';
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">Übersicht D bis F</a></li>';

         while($row = mysql_fetch_object($ergebnis))
         {
                 if ($row->Veroeffentlicht == "1" and $row->FSK18 == "1")    //  Veröffentlicht=1 (ja) + FSK18=1 (nein)
                 {
                         foreach ($entries['fsk18'] as $entry)
                                 { /* Datensätze die FSK16 sind */
                                 echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#D-F">', $entry->Storyname, '</a></li>';                     }
                 ;}
         ;}
;}

// if (count($entries['fsk16'] === 0))
else
         {
         /* Keine Einträge mit FSK16 dann Menüpunkt ohne Aufklappen */
         echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
         }

echo '</ul>';
echo '</div>';
?>

Doch wird nun wird das aufklappbare Menü immer an gezeigt.
Und keine Unterpunkte über Datensatz.
Da ist wohl noch ein Gedankenfehler.
 
PHP:
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    // Wenn ($row->FSK18 == 1), dann ist der Beitrag ab 16
    $fsk = ($row->FSK18 === '1') ? 'fsk16' : 'fsk18';
    $entries[$fsk][] = $row;
}

if (count($entries['fsk16']) !== 0) {
     /* Es gibt Beiträge, die FSK16 sind, diese anzeigen */

     echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis F FSK16</a>';
     echo '<div class="submenu">';
     echo '<ul>';
     echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">Übersicht D bis F</a></li>';

     foreach ($entries['fsk16'] as $entry) {
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#D-F">', $entry->Storyname, '</a></li>';
     }

    echo '</ul>';
    echo '</div>';
}

if (count($entries['fsk18'] !== 0)) {
    /* Es gibt Beiträge, die FSK18 sind, Link anzeigen */
    
    echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
}
 
Zuletzt bearbeitet:
PHP:
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    // Wenn ($row->FSK18 == 1), dann ist der Beitrag ab 16
    $fsk = ($row->FSK18 === '1') ? 'fsk16' : 'fsk18';
    $entries[$fsk][] = $row;
}

if (count($entries['fsk16'] !== 0)) {
     /* Es gibt Beiträge, die FSK16 sind, diese anzeigen */

     echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis F FSK16</a>';
     echo '<div class="submenu">';
     echo '<ul>';
     echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">Übersicht D bis F</a></li>';

     foreach ($entries['fsk16'] as $entry) {
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#D-F">', $entry->Storyname, '</a></li>';
     }

    echo '</ul>';
    echo '</div>';
}

if (count($entries['fsk18'] !== 0)) {
    /* Es gibt Beiträge, die FSK18 sind, Link anzeigen */
    
    echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
}

Irgendwie war ich schon bei dem Ergebniss?
Ich bekomme es nur nicht hin das entweder oder die FSK16 (mit Unterpunkten) oder FSK18 (ohne Unterpunkte) angezeigt wird.
Beides gleichzeitig soll nicht passieren.
 
Mir sind noch immer die Bedingungen nicht klar, *wann* *was* angezeigt werden soll.

Es gibt vier Fälle.

1. Es existieren keine FSK18-Artikel, es existieren keine FSK16-Artikel.
2. Es existieren keine FSK18-Artikel, es existieren FSK16-Artikel.
3. Es existieren FSK18-Artikel, es existieren keine FSK16-Artikel.
4. Es existieren FSK18-Artikel, es existieren FSK16-Artikel.

Könntest du definieren, was in jedem der Fälle ausgegeben werden soll?
 
1. Es existieren keine FSK18-Artikel, es existieren keine FSK16-Artikel.
---> keine Unterpunkte nur der Menüpunkt für FSK18

2. Es existieren keine FSK18-Artikel, es existieren FSK16-Artikel.
---> Menü klappt auf. FSK16 werden als Unterpunkte aufgelistet

3. Es existieren FSK18-Artikel, es existieren keine FSK16-Artikel.
---> keine Unterpunkte nur der Menüpunkt für FSK18

4. Es existieren FSK18-Artikel, es existieren FSK16-Artikel.
---> Menü klappt auf. FSK16 werden als Unterpunkte aufgelistet

Alles weitere wie die Links zur Übersicht regele ich in dem Menüpunkt bzw. in einem einmaligen Unterpunkt mit Link zur Übersicht.
Dies funktioniert bereits.


Es gibt also 4 Fälle mit 2 Ergebnissen, in diesem Bereich.
Das was bisher als Ergebnis raus kam wende ich später im geschützten Bereich an.
 
PHP:
$ergebnis = mysql_query("SELECT * FROM Story WHERE (Storyname REGEXP '^[d-f]') AND (Veroeffentlicht = 1) ORDER BY Storyname ASC");

$entries = array(
    'fsk16' => array(),
    'fsk18' => array()
);

while ($row = mysql_fetch_object($ergebnis)) {
    // Wenn ($row->FSK18 == 1), dann ist der Beitrag ab 16
    $fsk = ($row->FSK18 === '1') ? 'fsk16' : 'fsk18';
    $entries[$fsk][] = $row;
}

if (count($entries['fsk16']) > 0) {
     /* Es gibt Beiträge, die FSK16 sind, diese anzeigen */

     echo '<a class="menuitem submenuheader" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="&Ouml;ffnet die Aufstellung der Erotikideen von D bis F">D bis F FSK16</a>';
     echo '<div class="submenu">';
     echo '<ul>';
     echo '<li><a href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">Übersicht D bis F</a></li>';

     foreach ($entries['fsk16'] as $entry) {
         echo '<li><a href="index.php?Bereich=fantasien&Inhalt=', $entry->url, '&#D-F">', $entry->Storyname, '</a></li>';
     }

    echo '</ul>';
    echo '</div>';
} else {
    /* Sonst Link zu FSK18 anzeigen */

    echo '<a class="menuitem" href="index.php?Bereich=fantasien&Inhalt=a-x&SQL=d-f" title="Vorschau auf die Fantasien und Gest&auml;ndnisse von D bis F">D bis F FSK18</a>';
}
 
Zuletzt bearbeitet:

Neueste Beiträge

Zurück
Oben