Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] timestamp, substr i brak powtórzeń w while
arek33
post 3.03.2013, 13:55:46
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


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
Go to the top of the page
+Quote Post
Michael2318
post 3.03.2013, 14:17:32
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


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.

Ten post edytował Michael2318 3.03.2013, 14:24:23
Go to the top of the page
+Quote Post
arek33
post 3.03.2013, 14:41:17
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 24.02.2009

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


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

Ten post edytował arek33 3.03.2013, 14:41:47
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 04:58