Archiv erstellen

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

  • Archiv erstellen

    Hallo Leute,

    versuche gerade ein news archiv zu erstellen welches die Daten nach Jahr und Monat des Eintrages sortiert.
    Doch ich hänge schon daran fest, daß automatisch nur einmal die Jahre angezeigt werden sollen, aus welchem die News sind.
    Dh. ich habe verschiedene Einträge aus 2005 und 2004 und 2003.
    Nun kann ich die mir ja alle geordnet anzeigen lassen
    PHP-Code:
    $sql "Select datumein from news order by datumein desc ";
    da stehen dann meinetwegen 20 Einträge von 2005 und 400 aus 2004 
    Das ist ja nicht so schwer. Doch möchte ich das geschaut wird welche Jahre vorhanden sind und nur einmal die verschiedenen Jahre angezeigt bekommen. diese Sollen dann später als Links zu den verschiedenen Einträgen zeigen.
    Im endeffekt soll es ähnlich werden wie bei http://www.phpwelt.de/news/narchiv.php

  • #2
    von welchem typ ist datumein?

    Kommentar


    • #3
      Der typ ist UNIX_TIMESTAMP in der Form
      20051005163542

      Mein Code und die Funktion um das Jahr zu sondieren ist
      PHP-Code:
      $sql "Select datumein from news order by datumein desc ";
      ...

      while(
      $row=mysql_fetch_array($result)){
      $jahr=substr($row['datumein'],0,4);
      echo 
      $jahr.'<br>';

      Da steht nun alles da, habe nun versucht mit irgendwelchen schleifen
      die Jahre zu sondieren, daß nur einmal 2005 oder 2004 dasteht, aber ich dreh mich im kreis.

      Kommentar


      • #4
        ich glaub ich hab's

        PHP-Code:
        $i=1;
        while(
        $row=mysql_fetch_array($result)){
            
        $jahr[$i]=substr($row['datumein'],0,4);
            if(
        $jahr[$i] != $jahr[$i-1]){        
                echo 
        $jahr[$i]." ".$i.'<br>';
            }
        $i++;

        Kommentar


        • #5
          warum den ganzen müll mit php machen?

          Code:
          SELECT
              LEFT(datumein,4) NewsJahr,
              COUNT(datumein) NewsCount
          FROM
              news
          GROUP BY
              NewsJahr
          ORDER BY
              NewsJahr
          (ungetestet)
          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
            Der typ ist UNIX_TIMESTAMP in der Form
            20051005163542
            na was denn jetzt? Unix oder Mysql? sieht doch eher nach MySQL-Timestamp aus.

            Kommentar


            • #7
              ja es ist mysql timestamp ..mein Fehler

              Kommentar


              • #8
                und meine frage beantwortest du nicht?
                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


                • #9
                  doch doch

                  ja also mit meiner 56k Verbindung ist nicht immer alles so leicht .
                  Abraxax habe gerade mal deinen Vorschlag ausprobiert, aber da zeigt ermir gar nix mehr an .
                  Ich wusste auch noch nicht, daß ich in einer Abfrage Variablen zuordnen kann was du ja anscheinend "LEFT(datumein,4) NewsJahr," machst.
                  Oder?
                  Na jedenfalls funzt das noch nicht so recht.

                  Kommentar


                  • #10
                    versuch erst
                    Code:
                    SELECT LEFT(`datumein`,4) FROM `news`
                    teste mit pma.

                    Kommentar


                    • #11
                      mein Fehler

                      habe dummerweise
                      $row['datumein']
                      und nicht
                      $row['NewsJahr']
                      abgefragt.

                      ES FUNZT! Das ist cool! Da freu ich mich. Vielen dank fürs erste.
                      Hoffe ich komme jetzt soweit alleine zurecht

                      Kommentar


                      • #12
                        ES FUNZT!
                        fein. und schon hast du etwas weniger aufwendigen php-code .....
                        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
                          ich schon wieder

                          bin nun dabei auf die monate zuzugreifen,
                          habe es versucht mit
                          PHP-Code:
                          $sql_monat "SELECT LEFT(datumein,4,6) NewsMonat, 
                          ..... 
                          das funzt aber auch nicht, dachte ich kann es ähnlich dem substr() versuchen.
                          Unter was für einem Befehl sollte ich denn im Manual nachschlagen, damit ich die Monate ähnlich den Jahren sondieren kann.

                          Kommentar


                          • #14
                            stop.

                            warum nimmst du nicht
                            Code:
                            SELECT YEAR(`timestampspalte`) FROM ...
                            bzw.
                            Code:
                            SELECT MONTH(`timestampspalte`) FROM ...
                            Zuletzt geändert von penizillin; 05.10.2005, 21:33.

                            Kommentar


                            • #15
                              jo. auch bitte in der von mit geposteten query aus LEFT(...,4) ein YEAR(...) machen.

                              @penizillin
                              er wollte es mir gleich machen ...

                              @kasIQ
                              was bedeutet wohl LEFT bei LEFT() ? genau. links. wie soll also was aus der mitte kommen? genau. gar nicht.
                              MID() wäre das gesuchte. tipp: mysql.com

                              und verwende bitte YEAR() und MONTH(). das ist i.d.t. besser.
                              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