Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wyświetlicz wszystkie dni wpisów?, php + mysql
Saki
post
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


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?

Ten post edytował Saki 1.01.2012, 02:59:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
marcinpruciak
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


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'
Go to the top of the page
+Quote Post
Saki
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


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. }
Go to the top of the page
+Quote Post
Uriziel01
post
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


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.

Ten post edytował Uriziel01 2.01.2012, 13:10:48
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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 (IMG:style_emoticons/default/smile.gif) Chyba, że masz jakiś na to super sposób (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Uriziel01
post
Post #6





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

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


Nie zupełnie chcem tutaj nadal kontynuować ten offtop ale OK (IMG:style_emoticons/default/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.

Ten post edytował Uriziel01 2.01.2012, 13:30:49
Go to the top of the page
+Quote Post
Sephirus
post
Post #7





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


No i ok tu się z Tobą zgadzam w 100% (IMG:style_emoticons/default/smile.gif) A co do Sphinx'a to stara dobra Lucynka też jeszcze sobie radzi (IMG:style_emoticons/default/wink.gif)

ok kończymy off-topic (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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: 3.10.2025 - 18:40