Nicolas Muehlen: Liegt die Lösung bei mySQL oder PHP?

Hallo zusammen,
die Newsseite meiner Homepage wird aus einer mySQL-Tabelle dynamisch erzeugt, diese mySQL-Tabelle besteht aus 4 Spalten (einer ID, dem Datum, einer Überschrift und dem Text selbst). Die Newsseite hat folgenden Aufbau:

18.7.: [Überschrift1]
18.7.: [Überschrift2]
17.7.: [Überschrift3]
16.7.: [Überschrift4]

Ich hätte es nun ganz gerne, wenn, falls an einem Tag mehrere News gepostet werden (wie in diesem Beispiel am 18.7.), daß ganze folgendermaßen aussieht:

18.7.: [Überschrift1]
       [Überschrift2]
17.7.: [Überschrift3]
16.7.: [Überschrift4]

Das Datum sollte also nicht wiederholt werden, falls es an diesem Tag mehrere Einträge gibt. Ich habe jetzt leider keine Idee, wie ich dieses Problem mit PHP angehen könnte, oder müsste ich die Lösung bei mySQL suchen? Hätte vielleicht jemand von euch ein kleines Stichwort, wo ich da anfangen könnte?
Danke und viele Grüsse,

Nicolas Muehlen

  1. Hallo zusammen,
    die Newsseite meiner Homepage wird aus einer mySQL-Tabelle dynamisch erzeugt, diese mySQL-Tabelle besteht aus 4 Spalten (einer ID, dem Datum, einer Überschrift und dem Text selbst). Die Newsseite hat folgenden Aufbau:

    18.7.: [Überschrift1]
    18.7.: [Überschrift2]
    17.7.: [Überschrift3]
    16.7.: [Überschrift4]

    Ich hätte es nun ganz gerne, wenn, falls an einem Tag mehrere News gepostet werden (wie in diesem Beispiel am 18.7.), daß ganze folgendermaßen aussieht:

    18.7.: [Überschrift1]
           [Überschrift2]
    17.7.: [Überschrift3]
    16.7.: [Überschrift4]

    Das Datum sollte also nicht wiederholt werden, falls es an diesem Tag mehrere Einträge gibt. Ich habe jetzt leider keine Idee, wie ich dieses Problem mit PHP angehen könnte, oder müsste ich die Lösung bei mySQL suchen? Hätte vielleicht jemand von euch ein kleines Stichwort, wo ich da anfangen könnte?
    Danke und viele Grüsse,

    Nicolas Muehlen

    Also ich hatte ein ähnliches problem, hab es selbstgestrickt mit mysql hinbekommen, ich hatte aber kein datum sondern Abteilungsnr, wird mit daten (mehrzahl von Datum?) aber analog funzen. Du solltest auf jeden Fall für jedes Datum eine Nummer haben, dann ist es easy. Also angenommen du packst noch datumnr hinzu, sieht dein code so aus:(obs die sauberste Art ist? Keine Ahnung!)

    sql query:  blabla ... order by datumnr desc;
    $i=0;  
    if ($row=mysql_fetch_array($result))
    {  
    do
    {
       if ($row[datumnr] == $i)    
           ^^^^^^^^^^^^
    //    wenn deine Datumsnummer schon einmal dagewesen ist, dann
    //    reicht es die Ueberschrift auszugeben
       {    
          echo "<p><b class='normal'>$row[ueberschrift]</b>";
          echo "</p>";
       }      
       else  //sollte die datumsnr noch nicht dagewesen sein,
             //inkrementiere bis du eine nächste datumsnr gefunden hast
             //wichtig, wenn mal an einem Tag keiner was postet!
       {      
        do    
         {    
           $i++;
         }    
        while ($i < $row [datumnr]);
    // jetzt ist ja hier ein neues datum, dehalb solls auch ausgegeben
    // werden! Dadurch, daß jetzt i==datumnr ist, wird ja jetzt bis zum
    // nächsten Datum nur noch die ueberschrift "ge-echot"
      echo "$row[datum]";    
      echo "<p><b class='normal'>$row[autoren]</b></p>";   }
    }
    while ($row=mysql_fetch_array($result));

    Wahrscheinlich schlecht erklärt, aber probier es einfach mal aus.

    Gruß,Carsten

  2. Hallo nochmal,

    meine Lösung von gerade war für deine Zwecke zu komplex. (ich hatte sie bei ner Suchfkt.)
    Also etwas einfacher:

    slqs ...order datum desc;
    $altesdatum="";
    if ($row=mysql_fetch_array($result))
    {  
    do
    {
       if ($altesdatum!=$row[datum])
       {    
          echo "$row[datum]";       //table defs noch reinstricken!
          echo "$row[ueberschrift]";
       }      
       else
       {      
          echo "$row[ueberschrift]";
       }
    }
    $altesdatum=$row[datum]
    while ($row=mysql_fetch_array($result));
    }
    Also: Am Anfang ist altes Datum leer, daher wird das datum hingeschrieben.
    Danach wird das altedatum auf das datum des aktuellen Datensatzes gesetzt. Kommt jetzt im nächsten Datensatz das gleiche Datum, wird nur die Ueberschrift ge-echot ($altesdatum is ja gleich $row[datum]
    Kommt jetzt ein neues datum, ist es ungleich zum anderen und schwups kommt das datum nebst ueberschrift. Wie gesagt, alles noch in eine Tabelle packen + fertig

    Hoffe es klappt,
    Carsten

    1. Hi Carsten,

      Hoffe es klappt,<<

      Und wie das klappt, danke :-) !!!
      Die Lösungen die mir vorschwebten, waren sehr viel aufwendiger und hätten meinen Provider glaube ich endgültig dazu bewegt, mir zu kündigen, aber diese ist ja zum Glück recht schonend...
      Viele Grüsse und danke nochmals,

      Nicolas Muehlen

      P.S.: Was ist eigentlich der Plural von "Datum"? Dem lat. nach müsste es ja "Data" sein, aber das klingt irgendwie etwas suspekt...;-)

      1. Hallo !

        P.S.: Was ist eigentlich der Plural von "Datum"? Dem lat. nach müsste es ja "Data" sein, aber das klingt irgendwie etwas suspekt...;-)

        DATEN! (Dürfte aber ebenso missverständlich sein.)

        Mein Vorschlag: Zwei Stück Datum ! ;-)

        Gruß,
        Kerki

        1. Hallo,

          P.S.: Was ist eigentlich der Plural von "Datum"? Dem lat. nach müsste es ja "Data" sein, aber das klingt irgendwie etwas suspekt...;-)

          DATEN! (Dürfte aber ebenso missverständlich sein.)

          Mein Vorschlag: Zwei Stück Datum ! ;-)

          wie wär's mit Datumse, analog der Mehrzahl von Krümel - Krümelse :-)))

          Gruß Andreas

      2. Hi,

        Die Lösungen die mir vorschwebten, waren sehr viel aufwendiger

        Dein Problem ist ein "schönes" Problem. Mein erster Gedanke dabei war: Es liegen zwei unterschiedliche Universen vor, nämlich ein mengenwertiges 4GL-Universum (SQL) und ein sequentiell-algorithmisches 3GL-Universum (PHP). Dein Problem ist ein algorithmisches ("if wert == vorheriger then ..."), demzufolge würde ich es im 3GL-Universum lösen wollen.

        P.S.: Was ist eigentlich der Plural von "Datum"? Dem lat. nach müsste es ja "Data" sein, aber das klingt irgendwie etwas suspekt...;-)

        Da mogele ich mich normalerweise mit "Datumswerte" drum herum ...

        mfG - Michael