Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobieranie DISTINCT
Forum PHP.pl > Forum > Przedszkole
bartekk_84
  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.
CuteOne
DATE_FORMAT(`timestamp`

ps. staraj się unikać nazw kolumn takich jak własności języka sql np. date, timestamp, from
bartekk_84
  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. ?>
CuteOne
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)
bartekk_84
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.
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.