Alle Inhalte eines Monats auflisten

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

  • Alle Inhalte eines Monats auflisten

    Habe mal wieder ein Problem, undzwar geht es darum, dass ich eine Tabelle habe in der Events drinne sind.

    Sie sieht so aus

    Felder

    #id---day---month---year---event

    Jetzt möchte ich alle Daten auflisten nach der reihe.
    Das Script soll alle Events der letzten 3 Monate anzeigen.
    Die Letzten Monate immer nach oben. Also = Jan -> Dez -> Nov

    Er soll das in dem Format machen:

    Jan:
    15 .... blablablabla
    10 .... dasndasndasnasd
    02 .... salösad

    Dez:

    31 .... daskldasadsda
    28 .... dsakdaslasd


    usw.

    Würde mich freuen, wenn mir jemand eine Lösung nennen könnte!
    Sitze seid, 2 Tagen daran und komme nicht weiter.

    MFG

    Martin

  • #2
    Versuche es mal so:
    PHP-Code:
    $sql mysql_query("SELECT year,month FROM Tabelle ORDER BY year,month");
    while(
    $result1 mysql_fetch_array($sql))
    {
        
    $sql2 mysql_query("SELECT day, event FROM Tabelle WHERE month = '$result1['month']' AND year = '$result1['year']' ORDER BY day");
        while(
    $result2 mysql_fetch_array($sql2))
        {
            echo 
    $result2['day']." - ".$result2['event'];
        }

    Zuletzt geändert von Günni; 31.01.2003, 17:03.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      sehr preformance lästig, günni

      select * from tabelle where concat_ws(' ',concat_ws('-',year,month,day),curtime()) >= (now() - interval 3 month) order by year desc, month desc, day desc

      aber ich emfehle dir nicht month year und day zu verwenden...
      meine Projekte bestaunen: http://www.kleiza.de

      Kommentar


      • #4
        @Campus, ich weiss.
        select * from tabelle where concat_ws(' ',concat_ws('-',year,month,day),curtime()) >= (now() - interval 3 month) order by year desc, month desc, day desc
        Wäre es vielleicht möglich diese Abfrage zu erläutern, da ich damit ab dem Concat_WS nix mehr anfangen kann.
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          Vielen Dank für die schnelle antwort!

          Werde es glecih mal probieren!

          Kommentar


          • #6
            Wäre es vielleicht möglich diese Abfrage zu erläutern, da ich damit ab dem Concat_WS nix mehr anfangen kann.
            hehe,ok, wobei ich die eigentlich nur so ausm stehgreif gebastelt hab, also ungetestet...

            concat_ws ist ein befehlt, der die 3 hinteren parameter zu einem string zusammentut und das zwischen halt der erste parameter gesetzt wird (-) l
            also year=2002
            month=12
            day=11
            wird zu
            2002-12-1
            dann wird noch ein concat_ws verwendet um den string mit der uhrzeit zu verbinden, (curtime gibt dabei zb. 18:45:30) oder so schliesslich
            wird dann ein string draus:
            2002-12-11 18:45:30
            now() liefert dir das aktuelle datum in der obigen form und - interval 3 month zieht dementsprechend 3 monate ab.

            dabei fällt mir grad ein fehler ein, wenn für month oder day auch einstellige ziffern gespeichert werden können
            weis ich dann nicht, ob der die richtig als kleiner erkennt... hmm
            meine Projekte bestaunen: http://www.kleiza.de

            Kommentar


            • #7
              select * from tabelle where concat_ws('-',lpad(year,4,'20'),lpad(month,2,'0'),lpad(day,2,'0')) + interval 3 month >= now() order by year desc, month desc, day desc

              dementsprechend müsste die query glaube ich so abgeändert werden..

              also die interval rechnung kommt auch ohne der zeit (20:34:39) wahrscheinlich klar...

              aber wie gesagt, ich empehle, da direkt eine spalte, am bester in diesem mysql datums format direkt abzuspeichern, ausserdem bloss nicht month, day usw nehmen, man sieht hierdran schon, dass es schon ne 2 deutig keit hat, weil ich eigentlich mit (interval 3) "month" nicht die spalte meine sondern das schlüsselwort...
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar

              Lädt...
              X