Datensätze jahres- und monatsweise ordnen ...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datensätze jahres- und monatsweise ordnen ...

    Hallo an alle.

    Folgender Codeschnipsel liest problemlos die Ausgabenmonate aus der Tabelle:

    PHP-Code:
    $sqlQuery "SELECT current_month, current_year, in_use
                 FROM nl_article
                 WHERE in_use!='1'
                 ORDER BY current_month, current_year ASC"
    ;
    $altermonat "";
    $dbErg $db->sql($sqlQuery);
    while(
    $dbRow mysql_fetch_array($dbErg))
    {
        if(
    $altermonat != $dbRow['current_month'])
        {
            
    $altermonat $dbRow['current_month'];
            echo 
    $strMonthname[$dbRow['current_month']]." ".$dbRow['current_year']."<br />";
        }

    Dargestellt wird folgendes:
    Code:
    Januar 2004
    Juni 2003
    Juli 2003
    August 2003
    September 2003
    Oktober 2003
    November 2003
    Jetzt möchte ich es aber so darstellen, dass er zuerst nach Jahren und dann nach Monaten ordnet und diese sozusagen "jahresweise" darstellt. Also ungefähr so:
    Code:
    2004
      Januar
    2003
      Juni
      Juli
      August
    Jemand eine Idee, wie ich den oberen Codeschnipsel dafür erweitern muss? Ich finde nämlich keine.

    Danke im Voraus.
    Innuendo

  • #2
    Re: Datensätze jahres- und monatsweise ordnen ...

    möchtest du vielleicht hier
    PHP-Code:
    "... ORDER BY current_month, current_year ASC"
    mal die reihenfolge umdrehen ...?



    (und bei
    PHP-Code:
    if($altermonat != $dbRow['current_month']) 
    dann logischerweise auf's jahr prüfen statt auf den monat.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Die Idee hatte ich auch schon, aber dann schreibt er mir
      Code:
      Juni 2003
      Januar 2004
      Ich möchte ja nicht nur nach Jahres ordnen, sondern auch dann innerhalb der Jahre nach Monaten (wie folgt)
      Code:
      2004
        Januar
      2003
        Juni
        Juli
        August

      Kommentar


      • #4
        Muss ich vielleicht GROUP BY verwenden?

        Kommentar


        • #5
          du solltest dann auch mal ZUERST nach den jahren sortieren......
          Code:
          ORDER BY current_year ASC, current_month ASC
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Ich wusste nicht, dass man in einer "ORDER BY"-Anweisung auch mehrmals ASC oder DESC verwenden kann. Wieder etwas dazu gelernt.

            Habe es jetzt mal so:
            PHP-Code:
            $sqlQuery "SELECT current_month, current_year
                         FROM nl_article
                         WHERE in_use!='1'
                         ORDER BY current_year DESC, current_year DESC"
            ;
            $altermonat "";
            $dbErg $db->sql($sqlQuery);
            while(
            $dbRow mysql_fetch_array($dbErg))
            {
                if(
            $altermonat != $dbRow['current_year'])
                {
                    
            $altermonat $dbRow['current_year'];
                    echo 
            $strMonthname[$dbRow['current_month']]." ".$dbRow['current_year']."<br />";
                }

            Ausgegeben wird
            Code:
            2004
            Januar
            
            2003
            November

            Kommentar


            • #7
              Original geschrieben von Innuendo
              Ich wusste nicht, dass man in einer "ORDER BY"-Anweisung auch mehrmals ASC oder DESC verwenden kann. Wieder etwas dazu gelernt. :
              sowas steht im manual.

              übrigens, wie ich eben gesehen habe, hat dir wahsaga vorhin auch schon die lösung gepostet gehabt. warum nimmst du seinen rat nicht an, aber meinen?

              Original geschrieben von Innuendo
              Habe es jetzt mal so:
              wolltest du es nicht mal anders haben? zumindest laut fragestellung.....
              Original geschrieben von Innuendo
              Jetzt möchte ich es aber so darstellen, dass er zuerst nach Jahren und dann nach Monaten ordnet und diese sozusagen "jahresweise" darstellt. Also ungefähr so:
              ... also jahre absteigend, monate innerhalb der jahre aufsteigend .... dann mache es so:
              Code:
              ORDER BY current_year DESC, current_month ASC
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Dann nochmal von vorn.

                Dargestellt werden soll es so (exemplarisch):
                Code:
                2004
                  März
                  Februar
                  Januar
                
                2003
                  November
                  Oktober
                  September
                  August
                  Juli
                  Juni
                Die Daten liegen in so in der Tabelle (vereinfacht):
                Code:
                id  | current_month | current_year
                --------------------------------------------------------
                1   | 06            | 2003
                2   | 06            | 2003
                3   | 06            | 2003
                4   | 07            | 2003
                5   | 08            | 2003
                6   | 08            | 2003
                7   | 09            | 2003
                8   | 09            | 2003
                9   | 09            | 2003
                10  | 10            | 2003
                11  | 10            | 2003
                12  | 11            | 2003
                13  | 11            | 2003
                14  | 11            | 2003
                15  | 12            | 2003
                16  | 01            | 2004
                Das Skript soll jetzt immer das erste Vorkommen eines Jahreswechsel suchen (was nicht das Problem ist).

                Code:
                id  | current_month | current_year
                --------------------------------------------------------
                1   | 06            | 2003
                16  | 01            | 2004
                Soweit klar, oder?

                Jetzt möchte ich noch zusätzlich innerhalb eines Jahreswechsel das erste Vorkommen eines Monatswechsels suchen (wie folgt).
                Code:
                id  | current_month | current_year
                --------------------------------------------------------
                1   | 06            | 2003
                4   | 07            | 2003
                5   | 08            | 2003
                7   | 09            | 2003
                10  | 10            | 2003
                12  | 11            | 2003
                15  | 12            | 2003
                16  | 01            | 2004
                Schlussendlich soll es dann so wie am Anfang dargestellt aussehen.

                Folgender Schnipsel ist momentan aktuell, gibt mir aber nur Jahres- UND Monatswechsel aus:
                PHP-Code:
                $sqlQuery "SELECT current_month, current_year
                             FROM nl_article
                             WHERE in_use!='1'
                             ORDER BY current_year DESC, current_month DESC"
                ;
                $altermonat "";
                $dbErg $db->sql($sqlQuery);
                while(
                $dbRow mysql_fetch_array($dbErg))
                {
                    if(
                $altermonat != $dbRow['current_year'])
                    {
                        
                $altermonat $dbRow['current_year'];
                        echo 
                $strMonthname[$dbRow['current_month']]." ".$dbRow['current_year']."<br />";
                    }

                Kommentar


                • #9
                  Ich habe es hinbekommen:

                  Code:
                  $sqlQuery = "SELECT current_year, current_month FROM nl_article WHERE in_use!='1'
                               ORDER BY current_year DESC, current_month DESC";
                  $altesjahr = "";
                  $altermonat = "";
                  $dbErg = $db->sql($sqlQuery);
                  while($dbRow = mysql_fetch_array($dbErg))
                  {
                  	if($altesjahr != $dbRow['current_year'])
                  	{
                  		$altesjahr = $dbRow['current_year'];
                  		?>
                  		<br />
                  		<span class="ntitel2"><?=$dbRow['current_year'];?></span><br /><br />
                  		<?
                  	}
                  	if($altermonat != $dbRow['current_month'])
                  	{
                  		$altermonat = $dbRow['current_month'];
                  		echo $strMonthname[$dbRow['current_month']]."<br />";
                  		<?
                  	}
                  }
                  Manchmal ist es sooooooo einfach.

                  Kommentar


                  • #10
                    beim jahreswechsel solltest du $altermonat noch auf dfvslfdnsfdv setzen
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Darf ich auch fragen, warum?

                      Kommentar


                      • #12
                        damit wieder der monatsname ausgegeben wird.

                        kann ja sein, dass du z.b. nur jan/03 und jan/04 hast.

                        dann merkt der ja sonst den unterschied zwischen jan und jan nciht..
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          verräter
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Original geschrieben von mrhappiness
                            verräter
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar

                            Lädt...
                            X