Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlanie miesięcy, roku względem daty w artykułach
Forum PHP.pl > Forum > PHP
SN@JPER^
Witam,

Mam tabele 'news' w niej pole 'data', gdzie dodaje wartości poprzez time();.

W jaki sposób zrobić wyświetlanie dni miesięcy i roku względem tej daty, np.:


Grudzień 2008
Listopad 2008
Październik 2008
Wrzesień 2008
Sierpień 2008
Lipiec 2008
Czerwiec 2008
Maj 2008

gdzie jak kliknę na któraś z tych dat, to pokażą się artykuły, dodane np. w grudniu 2008 roku.
Pozdrawiam.
krowal
Wyświetlać możesz w ten sposób:
  1. <?php
  2. echo date('F Y', $time); //wyswietli np 'January 2008'
  3. ?>


potem robisz z tego linka:
  1. <?php
  2. $month = date('m', $time);
  3. $year = date('Y', $time);
  4. echo '<a href="script.php?month='.$month.'&year='.$year.'">'.date('F Y', $time).'</a>';
  5. ?>


a w skrypcie możesz zobić takie zapytanie:
  1. SELECT * FROM articles WHERE date BETWEEN '$year-$month-01' AND '$year-$month-31';


Weź jeszcze poprawkę na ilość dni w miesiącu i inne drobiazgi i skrypt gotowy smile.gif
SN@JPER^
Tylko, że jak 'zapętluje', wyświetla tyle razy nazwę miesiąca i roku, ile jest artykułów w bazie:

  1. <?php
  2. $sql = "SELECT * FROM news";
  3. $query = @mysql_query($sql);
  4.  
  5. while($fetch = @mysql_fetch_array($query))
  6. {
  7.  $data = htmlspecialchars(stripslashes($fetch['data']));
  8.  $data_ = date("Y.m.d; H:i", $data);
  9.  
  10.  
  11.  echo date('F Y', $data).'<br /><br /><br />'; //wyswietli np 'January 2008'
  12.  
  13.  $month = date('m', $data);
  14.  $year = date('Y', $data);
  15.  echo '<a href="script.php?month='.$month.'&year='.$year.'">'.date('F Y', $data).'</a><br />';
  16.  
  17. }
  18. ?>
outsider
Cytat
Tylko, że jak 'zapętluje', wyświetla tyle razy nazwę miesiąca i roku, ile jest artykułów w bazie:

Bo pobierasz wszystkie rekordy z bazy smile.gif Petla while wydrukuje Ci wszystkie daty.
SN@JPER^
Owszem,

tylko jak zrobić, żeby skrypt sam tworzy takie coś:

(to są linki) - nacisnę na któryś z nich i przechodzę podstrony gdzie są artykuły z tej daty.
Grudzień 2008
Listopad 2008
Październik 2008
Wrzesień 2008
Sierpień 2008
Lipiec 2008
Czerwiec 2008
Maj 2008
outsider
Obecnie dostajesz wyniki po angielsku - poszukaj na google jak za pomoca petli zmienic ja na polski, pozniej w petli while drukujesz odnosnik czyli <a href="zzz"></a> gdzie zzz to link do strony z artykulami z danego miesiaca
krowal
No tak... tak będzie.
Spróbuj czegoś takiego:
  1. <?php
  2.  $query = "SELECT DISTINCT FROM_UNIXTIME(data, '%m %Y') as month_year FROM news"; //jesli zapisujesz date w timestamp
  3.  $query = "SELECT DISTINCT DATE_FORMAT(data,'%m %Y') as month_year FROM news"; //jesli zapisujesz date w datetime
  4.  //wynikiem tego beda niepowtarzajace sie zestawy 'miesiac rok'
  5.  
  6.  
  7.  $result = mysql_query($query);
  8.  
  9.  $monthsPl = array(
  10.    1 => 'Styczen',
  11.    2 => 'Luty', //wypelnij wszystkie do grudnia
  12.  );
  13.  
  14.  while($row = mysql_fetch_array($result)){
  15.    $date = explode(' ', $row['month_year']);
  16.    echo '<a href="script.php?month='.$date[0].'&year='.$date[1].'">'.$monthsPl[(int)$date[0]].' '.$date[1].'</a>';
  17.  }
  18. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.