Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] timestamp, substr i brak powtórzeń w while
Forum PHP.pl > Forum > Przedszkole
arek33
Hej!

Mam dzisiaj taki problem: Posiadam tabelę z produktami, a w niej znajduje się kolumna data_dodania (timestamp), czyli data w formie 2013-03-03 13:52:11.

Poprzez pętlę while pobieram sobie wszystkie wyniki, jednakże potrzebny mi jest tylko rok i tylko raz. Czyli jeżeli mam 140 wyników z datą z zakresu 2012-12-12 12:12:12 - 2012-12-31 11:11:10, to chciałbym aby jednorazowo wyświetlił mi się tylko rok, czyli 2012. Tyle.

Myślałem o dodaniu DISTINCT w zapytaniu, substr oraz wyrażeniach regularnych, ale chyba myśli w mojej głowie nieci się zapętliły i potrzebuję Waszej pomocy. smile.gif
Michael2318
Zaprzeczasz sam sobie, najpierw mówisz że trzymasz dane w formacie timestamp (ilość sekund od 1970r. do danej chwili), a potem piszesz, że trzymasz sztywną datę, zdecyduj się.
Jeśli użyłeś timestamp to wystarczy w pętli while dodać warunek php:

  1. $lata = array();
  2. $sql = "SELECT * FROM `tabela` ORDER BY timestamp";
  3. if ( !($result = mysql_query($sql)) )
  4. {
  5. die('error in sql<br>'.mysql_error());
  6. }
  7. while($row=mysql_fetch_assoc($result))
  8. {
  9. $rok_teraz_sprawdzany = date('Y', $row['timestamp']);
  10. if ( in_array($rok_teraz_sprawdzany, $lata) == FALSE )
  11. {
  12. $lata[] = $rok_teraz_sprawdzany;
  13. }
  14. }
  15.  
  16. print_r($lata); // powinno zwrócić wszystkie lata, jakie masz w bazie, bez powtórzeń


Jeśli trzymasz sztywną datę to idealnie by było rozdzielić rok od reszty i wtedy do zapytania dorzucasz GROUP BY lata i masz pojedyncze lata.
arek33
rozwiązałem to tak:

  1. $p = mysql_query("SELECT data_dodania FROM aktualnosci");
  2. while($r = mysql_fetch_array($p)){
  3.  
  4. $l = count($array) - 1;
  5. if($array[$l] == substr($r['data_dodania'], 0,4)){}
  6.  
  7. else{
  8. $array[] = substr($r['data_dodania'], 0,4);
  9. }
  10. }
  11. print_r($array);


Dzięki za fatygę! smile.gif
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.