Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php & mysql]Archiwum
Forum PHP.pl > Forum > Gotowe rozwiązania
Stef@n
witam mam taki kodzik archiwum:

  1. <?
  2. $query = &#092;"SELECT DISTINCT DATE_FORMAT(data, '%m/%Y ') as sformatowana_data FROM aktualnosci ORDER BY data\"; 
  3. $result = mysql_query ($query) 
  4. or die (mysql_error()); 
  5.  
  6.  
  7. while ($row = mysql_fetch_assoc ($result)) 
  8. { 
  9. echo &#092;"<a href='1.php?show=archiwumr&data=\".$row['sformatowana_data'].\"'>\".$row['sformatowana_data'].\"</a> | \"; 
  10. }
  11.  
  12. if ($show==&#092;"archiwumr\") {
  13.  
  14. $data = $_GET['data']; 
  15.  
  16. $wynik = &#092;"SELECT * FROM aktuanosci WHERE DATE_FORMAT(data, '%m/%Y ') = '.$data.'\"; 
  17.  
  18.  
  19. while ($rekord = mysql_fetch_array ($wynik)) {
  20. $data2=date(&#092;"d/m/Y\", strtotime($rekord[1])); 
  21.  
  22. { 
  23. $ile = @mysql_fetch_row(mysql_query('SELECT COUNT(`idnews`) as ile FROM `komentarze` WHERE `idnews` = \"'.$rekord['id'].'\" ')) or $ile[0] = '0'; 
  24.  
  25.  
  26.  
  27. echo '
  28. <table align=center border=0 cellpadding=0 cellspacing=5 width=100%>
  29. <tr>
  30. <td width=527>
  31. <div align=left>
  32. <table width=100%>
  33. <TR>
  34. <TD>
  35. <div align=left>
  36. <table border=0 cellpadding=0 cellspacing=0 width=100%>
  37. <tr>
  38. <td width=510 colspan=3>
  39. <p align=left><span class=data>'.$data2.' rok</span>
  40. </td>
  41. </tr>
  42. <tr>
  43. <td width=388>
  44. <p align=left><a href=index.php?show=aktualnoscir&show2=aktualnosciz&id='.$rekord[id].'>'.$rekord['tytul'].'</a>
  45. </td>
  46. <td width=6>
  47. <p><img src=ikony/wiecej.gif width=15 height=13 border=0></p>
  48. </td>
  49. <td width=116>
  50. <p><span class=news>Czytano ['.$rekord['licznik'].'] razy</span></p>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td width=394 colspan=2>
  55. <p align=left><span>'.$rekord['tresck'].'</span>
  56.  </td>
  57. <td width=118>
  58. <p align=center><img src=obrazki/'.$rekord['obrazek'].'.gif></p>
  59. </td>
  60. </tr>
  61. </table>
  62. <table border=0 cellpadding=0 cellspacing=3 width=100%>
  63. <tr>
  64. <td width=21>
  65. <img src=ikony/komentarze.gif align=absmiddle width=21 height=19 border=0>
  66. </td>
  67. <td width=104>
  68. <span class=news>Komentarze ['.$ile[0].']</span>
  69. </td>
  70. <td width=22>
  71. <p align=left><img src=ikony/dodal.gif width=20 height=20 border=0>
  72. </td>
  73. <td width=96>
  74. <p align=left><span class=news>Dodał: '.$rekord['user'].'</span>
  75. </td>
  76. <td width=24>
  77. <img src=ikony/zrodlo.gif width=24 height=24 border=0>
  78. </td>
  79. <td width=164>
  80. <span class=news>Źródło: '.$rekord['zrodlo'].'</span>
  81. </td>
  82. <td width=55>
  83. <p align=center><A href=index.php?show=aktualnoscir&show2=aktualnosciz&id='.$rekord[id].'>[Wiecej]</A>
  84. </td>
  85. </tr>
  86. </table>
  87. </div>
  88. </TD>
  89. </TR>
  90. <TR>
  91. <TD>
  92. <table align=center border=0 cellpadding=0 cellspacing=0 width=100%>
  93. <tr>
  94. <td width=511>
  95. <P align=center><font color=black><IMG height=17 src=ikony/linia.gif width=410 border=0></font></P>
  96. </td>
  97. </tr>
  98. </table>
  99. </TD>
  100. </TR>
  101. </table>
  102. </div>
  103. </td>
  104. </tr>
  105. </table>';  
  106. } }}
  107. ?>


A problem jest w tym ze jak klikne na wyswietlony date to nie wychodzi nic tylko bład typu:

Kod
Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\mmks\1.php on line (w lini...)


P.S i jeszcze 2 rzeczy;p jak zrobic zeby automatycznie sie wyswietlały newsy z aktualnego miesiaca i jak sforamtowac date aby przy wyswietlaniu miesiecy była nie liczba lecz nazwa miesiaca?

Z gory dzieki
bigZbig
Zamiast wyswietlac newsy z aktualnego miesiaca ja bym osobiscie zdecydowal sie na wyswietlanie ostatnich np: 10 newsow bo jak masz koniec miesiaca to ci sie bedzie wyswietlac ok multum newsow a jak masz poczatek to zaledwie kilka (zalezy ile dodajesz w ciagu dnia)

Gdybys sie jednak upieral do newsow z ostaniego miesiaca to uzyj zapytania na wzor
  1. SELECT * FROM TABLE WHERE DATE_FORMAT(date, '%m')= DATE_FORMAT(NOW(),'%m');

Jeli masz miesiac w formie liczby to mozesz uzyc funkcji
  1. <?php
  2. function textualMonth($month)
  3. {
  4.   $months_names = array(
  5.  'Styczeń',
  6.  'Luty',
  7.  'Marzec',
  8.  'Kwiecień',
  9.  'Maj',
  10.  'Czerwiec',
  11.  'Lipiec',
  12.  'Sierpień',
  13.  'Wrzesień',
  14.  'PaĽdziernik',
  15.  'Listopad',
  16.  'Grudzień');
  17.   $name_month=$months_names[$month-1];
  18.   return $name_month;
  19. }
  20.  
  21. ?>

Mozesz oczywiscie uzyc tez formatowania od razu w zapytaniu sql
  1. SELECT DATE_FORMAT(date, '%M') FROM TABLE;
ale wtedy otrzymasz nazwy miesiecy w jezyku angielskim.
Parti
Straszny bałagan masz w tym kodzie.

Zaczyna się ładnie:
  1. <?php
  2. $query = &#092;"SELECT DISTINCT DATE_FORMAT(data, '%m/%Y ') as sformatowana_data FROM aktualnosci ORDER BY data\"; 
  3. $result = mysql_query ($query) 
  4. or die (mysql_error()); 
  5. ?>

Potem masz oczywisty błąd:
  1. <?php
  2. $wynik = &#092;"SELECT * FROM aktuanosci WHERE DATE_FORMAT(data, '%m/%Y ') = '.$data.'\"; 
  3. while ($rekord = mysql_fetch_array ($wynik)) {
  4.  
  5. ?>


A na końcu przykład jak nie należy pisać (nawet jeśli jest to poprawne):
  1. <?php
  2. $ile = @mysql_fetch_row(mysql_query('SELECT COUNT(`idnews`) as ile FROM `komentarze` WHERE `idnews` = \"'.$rekord['id'].'\" ')) or $ile[0] = '0'; 
  3. ?>
Stef@n
Cytat(Parti @ 2004-09-21 12:07:58)
Potem masz oczywisty błąd:
  1. <?php
  2. $wynik = &#092;"SELECT * FROM aktuanosci WHERE DATE_FORMAT(data, '%m/%Y ') = '.$data.'\"; 
  3. while ($rekord = mysql_fetch_array ($wynik)) {
  4.  
  5. ?>

no ale gdzie ten bład?? Bo kurde nie wiem co tu jest nie tak blink.gif
Parti
Cytat(Stef@n @ 2004-09-21 14:57:34)
no ale gdzie ten bład?? Bo kurde nie wiem co tu jest nie tak blink.gif

Powinno być mniej więcej tak:
  1. <?php
  2. $query = &#092;"select ... where cos_tam = '\" . $zmienna . \"' order by ...\";
  3. $result = mysql_query($query) or die(mysql_error());
  4. while ($rekord = mysql_fetch_array ($result))
  5. {
  6.  // ...
  7. }
  8. ?>
Stef@n
no top zrobiłem tak
  1. <? $query2 = &#092;"select * FROM aktualnosci where DATE_FORMAT(data, '%m/%Y ')='\".$data .\"' order by data\";
  2. $result2 = mysql_query($query2) or die(mysql_error());
  3.  
  4. while ($rekord = mysql_fetch_array ($result2))
  5. ?>


ale nie wyswietla sie wtedy nic
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-2024 Invision Power Services, Inc.