Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tworzenie archiwum newsów
Forum PHP.pl > Forum > Przedszkole
TheaSiX
Przerabiam właśnie swoją stronkę i chciałem utworzyć na niej archiwum newsów. Wiem jak zrobić wyświetlanie danej ilości newsów na jednej stronie, ale nie mam pojęcia jak połączyć to z danym miesiącem i rokiem. W bazie mam trzy pola day,month, year i przy wysyłaniu newsa, dana data zostaje wpisana do bazy w postaci trzech osobnych danych. Teraz zaczynają się schody.

Oto kod, który używam do wyświetlania generalnego, czyli jedna całość.. 5 newsów na stronie:

  1. <?php
  2.  
  3. $strona = $_GET[strona];
  4. // Wynikow Na Strone
  5. $wyniki = 5;
  6. settype($strona, "integer");
  7. $start=$strona*$wyniki;
  8.  
  9. $sql = "SELECT * FROM `newsy` ORDER BY numer DESC LIMIT $start,$wyniki";
  10. $result = mysql_query($sql);
  11. while($row = mysql_fetch_array($result))
  12. {
  13. $tytul=$row["tytul"];
  14. $data=$row["data"];
  15. $tresc=$row["tresc"];
  16. $numer=$row["numer"];    }
  17.  
  18. $sql1 = "SELECT COUNT(*) FROM newsy";
  19. $result1 = mysql_query($sql1);
  20. $ile = mysql_result($result1,0);
  21. $ilosc=0;
  22. $ilosc=$ile;
  23.  
  24.  
  25.  
  26. if($ilosc<>0) {
  27. $ilosc = $ilosc / $wyniki;
  28. $ilosc = ceil($ilosc);
  29.  
  30. $int = 0;
  31. while($int<>$ilosc) {
  32. $str = $int + 1;
  33. if($strona==$int) {
  34. echo '<a class=comments href="index.php?strona='.$int.'">'.$str.' </a> ';
  35. } else {
  36. echo '<a class=comments href="index.php?strona='.$int.'">'.$str.' </a> ';
  37. }
  38. $int++;
  39. }
  40. }
  41. ?>


Wiem, że kod może być chaotyczny, ale działa cały czas. Teraz potrzebuje sprawić by nie tylko dzieliło newsy na strony, ale na strony odnośnie danego miesiąca i roku.. Byłbym wdzięczny za jakiekolwiek wskazówki i pomoc.
Foxx
Było wiele razy na forum, poszukaj pod hasłem "stronicowanie".

Co do przechowywania daty w bazie - jeżeli nie masz jakiegoś specjalnego uzasadnienia to może powinieneś zastosować inną metodę przechowywania daty w bazie. Są pola typu date, datetime - w jednym polu możesz mieć całą datę.

Jeżeli już się na to zdecydujesz, będziesz mógł wywołać wszystkie istniejące daty newsów za pomocą GROUP BY.
Wtedy możesz je wyświetlić na stronie jako linki:

12.03.2008 | 12.03.2008 | 12.03.2008 | ...

które po kliknięciu wyciagną z bazy rekordy tylko o takiej dacie za pomocą WHERE.

Przy takiej metodzie przechowywania daty w bazie jaką masz teraz to słabo to widzę. Ewentualnie możesz sobie arbitralnie wyświetlić jakieś jednostki czasowe np.

2007 | 2008 | 2009

i wyświetlać wszystkie newsy z danego roku. Żeby obsłużyć wszystkie miesiące to robi się już niezbyt przyjazną metodą.
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.