Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wyświetlicz wszystkie dni wpisów?
Forum PHP.pl > Forum > PHP
Saki
Mam wpisy z własną datą: http://i.img.itunix.eu/zrzut_ekranu-13-1325378781.png
i z wpisów chce wyświetlicz wszystkie daty w ten sposób:

Dni (jak to zrobić, jakie zapytanie sql?):
21-12-2011
22-12-2011
23-12-2011
24-12-2011
25-12-2011

i gdy klikne na np. "24-12-2011" to wyświetlą się wpisy z tego dnia.
Jak mam zrobić aby wyświetlały się dni?


Teraz mam to:
  1. $query = mysql_query("SELECT *
  2. FROM shouts
  3. ORDER BY YEAR(sysGodzina) DESC, MONTH(sysGodzina) DESC, DAY(sysGodzina) DESC LIMIT 50");
  4.  
  5.  
  6. while($row=mysql_fetch_array($query))
  7. {
  8. $id = $row['id'];
  9. $data = date('d-m-Y', $row['sysGodzina']);
  10.  
  11. echo $id.': '.$data.'<br />';
  12.  
  13.  
  14. }

Ale to wyświetla do każdej wiadomosci datę:
1: 28-12-2011
2: 28-12-2011
3: 28-12-2011
4: 28-12-2011
5: 28-12-2011
6: 28-12-2011
7: 28-12-2011
8: 28-12-2011
9: 28-12-2011
10: 28-12-2011
11: 28-12-2011

a ja chce aby tylko raz pokazało:
28-12-2011
a potem
29-12-2011
30-12-2011
itd

Jak to zrobić?

I na koniec jak wyswietlicz wiadomości np. z dnia 29-12-2011?
marcinpruciak
Co do pierwszego to spróbuj tak:
  1. SELECT *
  2. FROM shouts
  3. ORDER BY YEAR(sysGodzina) DESC, MONTH(sysGodzina) DESC, DAY(sysGodzina) DESC GROUP BY sysGodzinaLIMIT 50


Drugie pytanie
Wystarczy użyć where i czasu
  1. SELECT *
  2.  
  3. FROM shouts
  4.  
  5. WHERE sysGodzina > 'czas początku dnia' AND sysGodzina < 'czas konca dnia'
Saki
Cytat(marcinpruciak @ 1.01.2012, 11:00:47 ) *
Co do pierwszego to spróbuj tak:
  1. SELECT *
  2. FROM shouts
  3. ORDER BY YEAR(sysGodzina) DESC, MONTH(sysGodzina) DESC, DAY(sysGodzina) DESC GROUP BY sysGodzinaLIMIT 50



zapytanie SQL:

  1. SELECT *
  2. FROM shouts
  3. ORDER BY YEAR( sysGodzina ) DESC , MONTH( sysGodzina ) DESC , DAY( sysGodzina ) DESC
  4. GROUP BY sysGodzina
  5. LIMIT 0 , 30

MySQL zwrócił komunikat:

#1064 - 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 'GROUP BY sysGodzina
LIMIT 0, 30' at line 3

######################################################################


Problem rozwiązany:

  1. $result = mysql_query("SELECT * FROM shouts");
  2.  
  3. $last_date = '';
  4.  
  5. while($row = mysql_fetch_array($result))
  6. {
  7. if($last_date != date("y-m-d", $row['sysGodzina']))
  8. {
  9. $last_date = date("y-m-d", $row['sysGodzina']);
  10. $dd = date("d", $row['sysGodzina']);
  11. $mm = date("m", $row['sysGodzina']);
  12. $yy = date("Y", $row['sysGodzina']);
  13.  
  14. echo '<li> <a href="archiwum.php?d='.$dd.'&m='.$mm.'&y='.$yy.'">'.date("d-m-Y", $row['sysGodzina']).'</a> </li>';
  15. }
  16. }
Uriziel01
Musisz tylko pamiętać że w zdecydowanej większości przypadków silnik BD jest tak zoptymalizowany że wykona powierzone zadania szybciej niż tą samą funkcjonalności realizuje się poprzez silnik PHP. Nie mam pojęcia jak to wygląda przy tak banalnych zapytaniach ale przy jakichkolwiek większych query do bazy zdecydowanie lepiej wykonywać wszelkie wyszukiwania, porównania i sortowania właśnie tam. Może piszę ciut na wyrost ale ostatnio coraz częściej spotykam ludzi którzy naczytali sie jakichś głupot w sieci i teraz np. stronią od 'SORT BY RAND();' zamiast tego wyciągając wszystkie wpisy do PHP i tam losując 5 potrzebnych (nie rzadko z kilku tysięcy dostępnych). Pozdrawiam i przepraszam za (być może) mały offtopic.
Sephirus
Cytat
spotykam ludzi, którzy naczytali się jakichś głupot w sieci i teraz np. stronią od 'SORT BY RAND();'


Ok - może dla małych tabelek to jest spoko ale faktycznie dla sporych objętościowo tabel używanie ORDER BY RAND() w jakichś częstych zapytaniach potrafi powalić wydajność na kolana smile.gif Chyba, że masz jakiś na to super sposób tongue.gif Ogólnie wystarczy się przyjrzeć zapytaniu dając EXPLAIN i zobaczyć, że ta operacja obejmuje wszyściutkie wiersze i jeszcze je sortuje... To nie może być wydajne - chociaż pobieranie wszystkiego i losowanie też mija się z celem wink.gif
Uriziel01
Nie zupełnie chcem tutaj nadal kontynuować ten offtop ale OK wink.gif
Oczywiście że 'ORDER BY RAND()' jest nie wydajne dla dużych baz ze względu na tymczasowe tablice które tworzy. Ale można to bez problemu zastąpić na sto różnych sposobów [zakładając spójność indeksów tablicy nawet przez IN (X,Y,Z)]. Ale nie to miałem na myśli pisząc tamten post, chodziło mi o przerzucanie ciężaru obsługi danych na PHP co jest znacznym ciosem w wydajność.
Wystarczy wpisać w 'popularną wyszukiwarkę' frazę 'ORDER BY RAND' aby przekonać się ilu ludzi trapi tak pozornie banalny problem.

P.S-Albo użyć genialnego rozwiązania którym jest Sphinx, którego ze swojej strony gorąco polecam. Nie istnieje moim zdaniem lepszy silnik wyszukiwania pod SQL'a. Wydajność powala dosłownie na kolana.
Sephirus
No i ok tu się z Tobą zgadzam w 100% smile.gif A co do Sphinx'a to stara dobra Lucynka też jeszcze sobie radzi wink.gif

ok kończymy off-topic wink.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.