Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Tworzenie archiwum newsów
TheaSiX
post 9.02.2009, 00:20:22
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 10
Dołączył: 3.09.2006
Skąd: Bishop Auckland

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Foxx
post 9.02.2009, 00:54:09
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


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ą.

Ten post edytował Foxx 9.02.2009, 00:55:01
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:46