Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Pobieranie DISTINCT
bartekk_84
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.06.2012

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


  1. <?php
  2.  
  3. $zapytanie = "SELECT DISTINCT DATE_FORMAT(timestamp, '%Y-%m-%d') AS data FROM terminy";
  4. $wynik = mysql_query($zapytanie)
  5. or die("Nie udalo sie");
  6.  
  7. while($row = mysql_fetch_array($wynik)) {
  8.  
  9. echo $row->data;
  10. echo '<br>';
  11.  
  12. }
  13.  
  14. ?>


Wie może ktoś co robie nie tak, czemu nie wyświatlają się mi pojedyńcze rekordy z datami nie powtarzającymi się? W bazie jest tabela terminy w której zapisana jest data w timestamp, i chcę porównać tylko i wyłącznie ten sam dzień.

Dzięki z góry za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


DATE_FORMAT(`timestamp`

ps. staraj się unikać nazw kolumn takich jak własności języka sql np. date, timestamp, from
Go to the top of the page
+Quote Post
bartekk_84
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.06.2012

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


  1. <?php
  2.  
  3. $zapytanie = "SELECT DISTINCT DATE_FORMAT('timestamp', '%Y-%m-%d') AS data FROM terminy";
  4. $wynik = mysql_query($zapytanie)
  5. or die("Nie udalo sie");
  6.  
  7. while($row = mysql_fetch_array($wynik)) {
  8.  
  9. echo $row->data;
  10.  
  11. }
  12.  
  13. ?>


Dalej pusta strona... A chciałbym aby wypisało mi wszystkie daty - z czego te powtarzające się tylko raz.

Teraz zauważyłem że kolumna timestamp jest bigint czy to tworzy jakiś problem?

W kolumnie timestamp dane wyglądają następująco:
1340568019
1340654427
itd.

Próbuje z czymś takim ale nadal pusto na stronie...

  1. <?php
  2.  
  3. $zapytanie = "SELECT DISTINCT(FROM_UNIXTIME(timestamp, '%Y-%m-%d')) AS data FROM terminy";
  4. $wynik = mysql_query($zapytanie)
  5. or die("Nie udalo sie");
  6.  
  7. while($row = mysql_fetch_array($wynik)) {
  8.  
  9. $miesiac = $row['data'];
  10. $miesiac = $row['timestamp'];
  11. echo $row->data;
  12. echo $row->timestamp;
  13.  
  14. }
  15.  
  16. ?>
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


nie ' tylko ` i zmień nazwę kolumny bo później będziesz miał z tym same problemy

ps. przy die wstaw raportowanie błędów mysql_error()
  1. $zapytanie = "SELECT DISTINCT(FROM_UNIXTIME(timestamp, '%Y-%m-%d')) AS data FROM terminy";
  2. $wynik = mysql_query($zapytanie)


Ten post edytował CuteOne 15.06.2012, 17:50:57
Go to the top of the page
+Quote Post
bartekk_84
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.06.2012

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


Dzięki za pomoc. Jednak znów stanąłem.

  1.  
  2. <?php
  3.  
  4. $zapytanie1 = "SELECT DISTINCT(FROM_UNIXTIME(`timestamp`, '%Y-%m-%d')) AS data FROM terminy ORDER by timestamp ASC";
  5. $wynik1 = mysql_query($zapytanie1)
  6.  
  7. $zapytanie2 = "SELECT * FROM `wydarzenia`, `terminy`";
  8. $wynik2 = mysql_query($zapytanie2)
  9.  
  10. while($r1 = mysql_fetch_array($wynik1)) {
  11.  
  12. $miesiac = $r1['data'];
  13.  
  14. echo $miesiac . "<br />";
  15.  
  16. while($r2 = mysql_fetch_array($wynik2)) {
  17.  
  18. $tytul = $r2['nazwa'];
  19.  
  20. $ts1 = $miesiac;
  21. $ts2 = $r2['first_timestamp'];
  22.  
  23. $dzien1 = date("d", $ts1);
  24. $dzien2 = date("d", $ts2);
  25.  
  26. if ($dzien1 = $dzien2) {
  27.  
  28. echo $tytul . "<br />";
  29.  
  30. }
  31.  
  32. }
  33.  
  34. }
  35.  
  36. ?>
  37.  


a wychodzi mi coś takiego:

link

Wybrało daty pojedyńczo z tabeli `terminy` jednak chciałbym do każdej z nich teraz porównać datę z tabeli `wydarzenia` i wypisać tytuł wydarzenia. Teraz jednak wypisuje mi zwielokrotnione tylko do pierwszej pozycji (pierwszej daty).

Poradziłem sobie, i znów mam pytanko:

  1. <?php
  2.  
  3. $zapytanie1 = "SELECT DISTINCT(FROM_UNIXTIME(`timestamp`, '%Y-%m-%d')) AS data FROM terminy ORDER by timestamp ASC";
  4. $wynik1 = mysql_query($zapytanie1)
  5.  
  6. while($r1 = mysql_fetch_array($wynik1)) {
  7.  
  8. $miesiac = $r1['data'];
  9.  
  10. $formatted_date = strtotime( $miesiac );
  11. $miesiac_dzien = date( 'd', $formatted_date );
  12.  
  13. echo $miesiac . "<br />";
  14.  
  15. $zapytanie2 = "SELECT timestamp,wydarzenie FROM terminy";
  16. $wynik2 = mysql_query($zapytanie2)
  17.  
  18. while($r2 = mysql_fetch_array($wynik2)) {
  19.  
  20. $ts1 = $r2['timestamp'];
  21. $data_ts1 = date("d", $ts1);
  22.  
  23. if ($miesiac_dzien == $data_ts1) {
  24.  
  25. $wydarzenie = $r2['wydarzenie'];
  26.  
  27. echo $wydarzenie . "<br />";
  28.  
  29. }
  30.  
  31. }
  32.  
  33. }
  34.  
  35. ?>


Wyświetla mi już praktycznie tak jak być powinno:

2012-06-23
37
2012-06-24
35
36
36
37
2012-06-25
35
37
2012-06-26
37

Jednak pod datą 24 czerwca mam dwa razy "36". Jak zrobić żeby tu wyświetliło tylko raz tą pozycję. To wydarzenie odbywa się dwa razy tego samego dnia dlatego wyskoczyło dwa razy.

Ten post edytował bartekk_84 18.06.2012, 10:29:59
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 Aktualny czas: 21.08.2025 - 08:13