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

Tag wieder schließen / While-Schleife mit Zähler

Hi,

mit dem folgenden Code erreiche ich durch $Kopf_datum das dass Datum immer nur in der Überschrift auftaucht.
Darunter werden dann die weiteren Daten aus dem Datensätzen aufgelistet.
Wenn alle Datensätze mit dem selben Datum ausgegeben wurden. Wird mit $Kopf_datum eine neue Überschrift ausgegeben.

Da ich in der Überschrift auch einen ul-tag (und evtl. noch div-tag ) öffne.
Suche ich nach einer Möglichkeit diese geöffneten Tag-nach dem letzten Datumseintrag wieder zu schließen.
Listebeispiel.jpg
Wie im Bild zusehen gibt es immer unterschiedlich viele Einträge pro Datum.
Der schließende ul-tag kann nicht nach jedem datensatz gesetzt werden. Erst mit dem Datumsprung.

Ich hoffe Ihr habt eine Idee wie der Tag vor dem Datumsprung wieder geschlossen werden kann.


PHP:
$Kopf_datum;

while($row = mysql_fetch_object($ergebnis))      // Lesen der Daten
// echo strftime("%A den %d.%B.%Y", strtotime($row->Datum));
     {


     if ($Kopf_datum != $row->Veroeffentlicht_am) // Datum einfügen
        {
             echo'

                      <br /><strong>' ,strftime("%A %d. %B %Y", strtotime($row->Veroeffentlicht_am)), '</strong>
                      <ul class="newsliste_History"><br />';

         };
                      if ($_GET['p4'] == "fsk18")
                      { // -->  USER ist Volljährig
                        // weitere Bedinugnen
                      } // FSK18 Ende

                      else
                      { // -->  USER ist minderjährig

                      // Story
                      echo'<b><li>',$row->tablename,':</b> ' ,$row->ueberschrift, $row->inhalt,'</li>';
                      }; // Minderjährig ENDE

$Kopf_datum = $row->Veroeffentlicht_am;
     };  // Ende While

?>
 
Gib doch am Ende der Schleife den abschließenden UL-Tag aus? Bzw. mach noch eine Abfrage und je nach Bedingung wird diese Ausgegeben?
 
Wenn ich das schließende Tag am Ende der While-Schleife setze dann wird nur der erste Datensatz in den UL-Tags eingeschlossen nicht aber die weiteren Datensätze zum selben Tagesdatum.

PHP:
$Kopf_datum = $row->Veroeffentlicht_am;
     echo'</ul>';
     };  // Ende While


?>

Listebeispiel1.jpg

diese Möglichkeit hatte ich bereits im Auge.
Ich hatte ebenfalls an eine ähnliche Möglichkeit mit einer ID wie bei $Kopf_datum nur für den Abschluß gedacht.
Doch an welcher Stelle zähle ich dann hoch.
Und wie vermeide ich das vor dem erste Tagesdatum ein schließender Tag kommt der noch gar nicht geöffnet wurde.
 
Wenn ich das Problem richtig verstanden habe (dessen ich mir nicht wirklih sicher bin!), sollte das so gehen:

PHP:
$Kopf_datum;

$first = 1; // Eine Markierung auf 1 setzen, bevor die Schleife beginnt

while($row = mysql_fetch_object($ergebnis))      // Lesen der Daten
// echo strftime("%A den %d.%B.%Y", strtotime($row->Datum));
     {


     if ($Kopf_datum != $row->Veroeffentlicht_am) // Datum einfügen
        {
             if($first != 1) { echo "</ul>"; } // Solange die markierung 1 ist, darf der Endtag nicht ausgegeben werden
             echo'

                      <br /><strong>' ,strftime("%A %d. %B %Y", strtotime($row->Veroeffentlicht_am)), '</strong>
                      <ul class="newsliste_History"><br />';

         };
                      if ($_GET['p4'] == "fsk18")
                      { // -->  USER ist Volljährig
                        // weitere Bedinugnen
                      } // FSK18 Ende

                      else
                      { // -->  USER ist minderjährig

                      // Story
                      echo'<b><li>',$row->tablename,':</b> ' ,$row->ueberschrift, $row->inhalt,'</li>';
                      }; // Minderjährig ENDE

$Kopf_datum = $row->Veroeffentlicht_am;

$first = 0; // Der Marker wird auf 0 gesetzt. Ab jetzt wird bei jedem neuen Schleifendurchlauf der Endtag gesetzt
     };  // Ende While

?>
 
Gegebenenfalls muss dann trotzdem beim Verlassen der Schleife der Endtag noch mal gesetzt werden, damit der als letztes in der Schleife geöffnete Starttag wieder geschlossen wird!
 
Zurück
Oben