Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z datami
Forum PHP.pl > Forum > Bazy danych > MySQL
podziak
Witam.

Mam nastepujacy problem
Otoz mam system newsow gdzie mam wpisywana date posta.
Data jast funckja date('Y-m-d');
i teraz chcialbym wyswietlac posty z danego miesiaca
z tym ze miesiac wybieram poprzez formularz

skrypt jest taki ale nie wiem jak zrobic zapytanie aby wyswietlalo mi dane elementy spomiedzy wymienionych dat

  1. include("common.php");
  2. //polaczenie z baza danych
  3. $link = mysql_connect ($server, $user, $password);
  4. if (! $link) { die ("Brak polaczenia z baza danych"); }
  5. if (!mysql_select_db ($db, $link) ){ die ("Coldn't open $db: ".mysql_error()); }
  6.  
  7. //if(isset($submit)):
  8.  
  9.  
  10. //else:
  11. $data=date('Y-m-d');
  12. $data1=date('Y-m-01');
  13. $sql = "SELECT * FROM newsy";// WHERE data='$data' BETWEEN data='$data1' ORDER BY id";
  14. $result = mysql_query($sql) or die("Zapytanie nie moze byc zrealizowane - przepraszamy!");
  15.  
  16. print "<table width=416 class=linebottom align=center>";
  17. while ($a_row =mysql_fetch_array ($result) ){
  18. print "<tr><td class=tekst colspan=2><a href=index.php?strona=1001&id=".$a_row['id']." class=link1><b>$a_row[tytul]</b></a></td></tr>";
  19. }
  20. print "</table>";
  21. ?>
  22.  
  23. <SELECT name="year">
  24. <option value="2006" selected>2006</option>
  25. </SELECT>
  26. <SELECT name="month">
  27. <option value="01" selected>Styczen</option>
  28. <option value="02">Luty</option>
  29. <option value="03">Marzec</option>
  30. <option value="04">Kwiecień</option>
  31. <option value="05">Maj</option>
  32. <option value="06">Czerwiec</option>
  33. <option value="07">Lipiec</option>
  34. <option value="08">Sierpien</option>
  35. <option value="09">Wrzesień</option>
  36. <option value="10">Październik</option>
  37. <option value="11">Listopad</option>
  38. <option value="12">Grudzien</option>
  39. </SELECT>
  40. <input type="submit" name="submit" value="Pokaz">
  41. </form>
  42. <?
  43. //endif;
  44. ?>

no i pojawia sie problem bo proboje pokombinowac ale jakos mi nic nie wychodzi...

bede wdzieczny za pomoc


ps. Problem okazal sie blahy bo uzylem porownania aby wyswieltalo dane wg kryterium
  1. <?php
  2.  
  3. $data_end=$year."-".$month."-31";
  4. $data_start=$year."-".$month."-01";
  5. $sql = "SELECT * FROM newsy WHERE data<='$data_end' AND data>='$data_start' ORDER BY id";
  6.  
  7. ?>

temat mozna zamknac ale moze komus sie przyda rozwiazanie winksmiley.jpg
sorka za marnowanie czasu.
nospor
proponuje zapoznac się z manualem:
http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html

  1. SELECT *
  2. FROM newsy
  3. WHERE MONTH(DATA)=2


ps: i uzywaj wlasciwego bbcode
ps2: podawaj kod tylko niezbędny
TomASS
Bardzo fajnie kombinujesz.


Aby wybrać rekordy z pomiędzy dat można użyć funkcji BETWEEN smile.gif A oto przykład:
  1. SELECT *
  2. FROM `euro_awiza`
  3. WHERE `Data_nadania`
  4. BETWEEN '2006-01-01' AND '2006-01-23';

W php można to zrobić tak:
  1. <?php
  2.  
  3. $data1 = //obliczenie daty1
  4. $data2 = //obliczenie daty2
  5. $query = "SELECT * FROM `euro_awiza` WHERE `Data_nadania` BETWEEN '$data1' AND '$data2';";
  6. ......
  7.  
  8. ?>


A teraz jak wybrać dane z konkretnego miesiąca? Można też BETWEEN, ale można też inaczej - używając LIKE:
  1. SELECT *
  2. FROM `euro_awiza`
  3. WHERE `Data_nadania` LIKE '2006-02-__'

Co wybierze nam wszystkie daty z lutego 2006.

Mam nadzieję, że w miarę dobrze to opisałem smile.gif
Powodzenia
nospor
TomASS zwrocil mi uwage na brak uniwersalnosci mego rozwiązania. oczywiscie brakuje roku:
  1. SELECT *
  2. FROM newsy
  3. WHERE YEAR(DATA)=2006 AND MONTH(DATA)=2
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.