Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie archiwum według lat
Forum PHP.pl > Forum > PHP
bols86
Witam, jako, że raczkuje w tematyce PHP mam do Was gorącą prośbę. Chciałbym przerobić moje archiwum na stronce, aby lata wyświetlały się od najnowszych do najstarszych, a nie jak to teraz ma miejsce od najstarszych do najnowszych.
  1. <?php
  2. //prawdzamy najnowszego i najstarszego niusa
  3. $ask_newest_query = "SELECT ne_id,ne_data FROM news WHERE ne_dzial NOT IN('podrzedny','news_en','cwiczenia_en') ORDER BY ne_data DESC LIMIT 1";
  4. $ask_oldest_query = "SELECT ne_id,ne_data FROM news WHERE ne_dzial NOT IN('podrzedny','news_en','cwiczenia_en') ORDER BY ne_data LIMIT 1";
  5. $ask_oldest = mysql_query($ask_oldest_query);
  6. $ask_newest = mysql_query($ask_newest_query);
  7. $czy_zwrocil_cos_oldest = mysql_numrows($ask_oldest);
  8. $czy_zwrocil_cos_newest = mysql_numrows($ask_newest);
  9. ?>
  10.  
  11. <table class="newsy">
  12. <?php
  13.  
  14.  
  15. if ($czy_zwrocil_cos_newest > 0 && $czy_zwrocil_cos_oldest > 0){
  16. $newest = mysql_fetch_array($ask_newest);
  17. $oldest = mysql_fetch_array($ask_oldest);
  18.  
  19. $last = substr($newest['ne_data'], 0,-15); // rok wprowadzenia ostatniego niusa
  20. $first = substr($oldest['ne_data'], 0,-15); // rok wprowadzenia pierwszego niusa
  21. $ile_lat = $last - $first;
  22.  
  23.  
  24. $lata = array(); // tablica przechowujaca wystapienia poszczegolnych lat
  25. $actual_year = date(Y);
  26. for ($rok = $first; $rok <= $last; $rok++ ){
  27. if ($rok > 1800 && $rok <= $actual_year){
  28.  
  29. $czy_jest_rok_query = "SELECT ne_id FROM news WHERE ne_dzial NOT IN('podrzedny','news_en','cwiczenia_en') AND ne_data LIKE '%$rok%' ORDER BY ne_data LIMIT 1";
  30. $czy_jest_rok = mysql_query($czy_jest_rok_query);
  31. $ile_rokow = mysql_numrows($czy_jest_rok);
  32.  
  33. if($ile_rokow > 0){
  34. $lata[] = $rok ; // dodajemy do tablicy wystapienie danego roku w bazie
  35. }
  36. }
  37. }
  38.  
  39. foreach ($lata as $value ){ // sprawdzamy jakie miesiace wystapily w kazdym roku
  40.  
  41. $miesiace = array(); // tablica przechowujaca wszystkie miesiace wystepujace w bazie dla danego roku
  42.  
  43. for($mies = 0; $mies < 12; $mies++ ){
  44.  
  45. $month = $mies + 1;
  46.  
  47. if ($month > 9) $zero = ""; // co by sie zero przed pojedyncza cyfra oznaczajaca miesiac pojawilo
  48. else $zero = 0;
  49.  
  50. $ask_jest_miesiac_query = "SELECT ne_id FROM news WHERE ne_dzial NOT IN('podrzedny','news_en','cwiczenia_en') AND ne_data LIKE '%$value-$zero$month%' ORDER BY ne_data DESC LIMIT 1";
  51. $ask_jest_miesiac = mysql_query($ask_jest_miesiac_query);
  52. $ile_jest_miesiac = mysql_numrows($ask_jest_miesiac);
  53.  
  54. if ($ile_jest_miesiac > 0 ){
  55. $miesiace[] = $zero.$month; // wpisujemy do tablicy wystapienie danego miesiace w bazie
  56. }
  57. }
  58. //-- TABLICA ASOCJACYJNA W KTOREJ KLUCZEM JEST DANY ROK WYSTEPUJACY W BAZIE A WARTOSCIA DANEJ POZYCJI JEST TABLICA MIESIECY W DANYM ROKU ---//
  59. $data["$value"] = $miesiace;
  60. }
  61.  
  62.  
  63. if ($_GET['id']){ // wczytujemy newsa calego
  64. ?>
  65. <tr>
  66. <td>
  67. <?php
  68. include('news_arch.php');
  69. ?>
  70. </td>
  71. </tr>
  72. <?php
roghatt
w zapytaniach wystarczy DESC zmienić na ASC wtedy w odwrotnej kolejności wyświetla snitch.gif
bols86
Dzięki wielkie Kolego exclamation.gif Jutro będę testował i odpisze co i jak wink.gif.
A więc niestety, po podmianie DESC na ASC pokazuje mi tylko 2001r., reszta gdzieś ginie, echhhh exclamation.gif
roghatt
ale w zapytaniach masz ustawione LIMIT 1 wiec jedno Ci się wyświetla.
Zwiększ tą liczbę.
bols86
Przestawienie LIMIT 1 na LIMIT 10 nic nie dało, usunięcie jego też nie sad.gif.
Insomiaa
Nic dziwnego, że pobiera jeden wynik jak tylko raz wywołujesz funkcję fetch_array, musisz ją wywoływać w jakiejś pętli.
  1.  
  2. while($newest = mysql_fetch_array($ask_newest)){
  3. //tutaj przetwazanie wiesza.......
  4. }
  5.  
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.