Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wybieranie rekordow, bez powtorzen
hmmm
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


chce stworzyc archiwum, takie jak na blogach.
w bazie danych mam tabele notes, a wniej m.in. date, datetime (nazwy kolumn).
chcialbym stworzyc linki do miesiecy, w ktorych pojawily sie jakies notki, jednak zeby miesiace sie nie powtarzaly.
napisalem cos takiego

  1. <?php
  2. require_once ('plik.php');
  3.  
  4. echo &#092;"<table cellspacing=\"0\" cellpadding=\"0\" style=\"margin-bottom: 20px;\">n\";
  5. echo &#092;"<tr>n\";
  6. echo &#092;"<td colspan=\"2\" class=\"mepair\">narchiwumn</td>n\";
  7. echo &#092;"</tr>n\";
  8.  
  9. $query1 = mysql_query(&#092;"SELECT DISTINCT DATE_FORMAT (date, '%y-%m') FROM notes ORDER BY datetime DESC\");
  10. if ($query1) {
  11. while ($row = mysql_fetch_array($query1, MYSQL_NUM)) {
  12. echo &#092;"<tr>n\";
  13. echo &#092;"<td class=\"meleft1\">n-n</td>n\";
  14. echo &#092;"<td class=\"meright1\">n\" . $row[0] . \"n</td>n\";
  15. echo &#092;"</tr>n\";
  16. }
  17.  
  18. } else {
  19. echo &#092;"nie mozna wyswietlic.<br />n\" . mysql_error() . \"n\";
  20. }
  21.  
  22. echo &#092;"</table>nn\";
  23.  
  24. ?>


jednak nie dziala. wartosci w plik.php sa na pewno dobre.
wyswietla mi taki blad:
nie mozna wyswietlic.
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(date, '%y-%m') FROM notes ORDER BY datetime DESC' at line 1

jak to poprawic? prosze o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 0
Dołączył: 4.01.2005

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


przepraszam, ale musialem usunac poprzedniego posta :]
ale ponizej prezentuje jej tresc:

nie, wszystko jest ok pod tym wzgledem.
dany uzytkownik ma wlasciwie wszystkie uprawienia ... no prawie wszystkie.
hasla i dane tez sa dobre, bo jak pisalem - w innych skryptach aby odczytac rekordy z innych tabel wykorzystuje skrypt do polaczenia sie z tym plikiem i wtedy mi nie wyrzuca zadnych bledow - wszystko dziala dobrze.

postanowilem jednak zrobic wszystko od nowa ... no prawie wszystko.
i nareszcie sie udalo! :D
  1. <?php
  2. $yearnow = date('Y');
  3.  
  4. $query3 = mysql_query (&#092;"SELECT DATE_FORMAT(datetime, '%Y') FROM notes GROUP BY datetime LIMIT 1\");
  5. if ($query3) {
  6. while ($row = mysql_fetch_array($query3, MYSQL_NUM)) {
  7. $yearless = $row[0];
  8. }
  9.  
  10. } else {
  11. echo &#092;"nie mozna wyswietlic.<br />n\" . mysql_error() . \"n\";
  12. }
  13.  
  14. $year = $yearnow;
  15.  
  16. echo &#092;"<table cellspacing=\"0\" cellpadding=\"0\" style=\"margin-bottom: 20px;\">n\";
  17.  
  18. for ($yearnow; $year >= $yearless; $year--) {
  19. echo &#092;"<tr>n\";
  20. echo &#092;"<td class=\"fileyear\">n\" . $year . \"n</td>n\";
  21. echo &#092;"</tr>n\";
  22.  
  23. $query4 = mysql_query (&#092;"SELECT DISTINCT DATE_FORMAT(datetime, '%m') FROM notes WHERE DATE_FORMAT(datetime, '%Y') = $year ORDER BY datetime\");
  24. if ($query4) {
  25. while ($row = mysql_fetch_array($query4, MYSQL_NUM)) {
  26. switch ($row[0]) {
  27. case '01':
  28. $month = 'styczen';
  29. break;
  30. case '02':
  31. $month = 'luty';
  32. break;
  33. case '03':
  34. $month = 'marzec';
  35. break;
  36. case '04':
  37. $month = 'kwiecien';
  38. break;
  39. case '05':
  40. $month = 'maj';
  41. break;
  42. case '06':
  43. $month = 'czerwiec';
  44. break;
  45. case '07':
  46. $month = 'lipiec';
  47. break;
  48. case '08':
  49. $month = 'sierpien';
  50. break;
  51. case '09':
  52. $month = 'wrzesien';
  53. break;
  54. case '10':
  55. $month = 'pazdziernik';
  56. break;
  57. case '11':
  58. $month = 'listopad';
  59. break;
  60. case '12':
  61. $month = 'grudzien';
  62. break;
  63. }
  64. echo &#092;"<tr>n\";
  65. echo &#092;"<td class=\"filemonth\">n<a class=\"awhite\" href=\"index.php?file=\" . $year . \"-\" . $row[0] . \"\">\" . $month . \"</a>n</td>n\";
  66. echo &#092;"</tr>n\";
  67. }
  68.  
  69. } else {
  70. echo &#092;"nie mozna wyswietlic.<br />n\" . mysql_error() . \"n\";
  71. }
  72.  
  73. }
  74.  
  75. echo &#092;"</table>nn\";
  76. ?>


datetime to kolumna, w ktorej dane zapisuje w postaci DATETIME.

skrypt wyswietla mi wszystkie lata, w ktorych pojawily sie notki w kolejnosci malejacej a pod kazdym rokiem sa miesiace tego roku, w ktorym pisalem notki - w kolejnosci malejacej (maslo maslane, ale chyba wiadomo o co chodzi).

dzieki za pomoc ;)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 21:49