Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Zapytanie ( bez powtarzania daty )
Forum PHP.pl > Forum > Przedszkole
pioch
Witam

Mam takie zapytanie :
  1. <?php
  2. $query ='
  3.  
  4. SELECT
  5.  n.tytul, n.tresc_krotka, n.kategoria_foto, n.rodzaj, n.id, n.data
  6. FROM
  7.  newsy as n
  8. WHERE
  9. ( n.rodzaj = "G" )
  10. ';
  11. ?>


i teraz chciałbym uzyskać taki wygląd newsów

zeby data się nie powtarzała czyli ...




data

tytul5

tytul4

tytul3

i znowu

data

tytul2

tytul1


czy mozna uzyskać takie coś


dodam ze data mam w formacie DATETIME

///

po wielu próbach i w miedzy czasie doczytywaniu moje zapytanie wygląda tak


  1. <?php
  2. $query ='
  3.  
  4. SELECT
  5.  DISTINCT(n.data), n.id, n.tytul, n.tresc_krotka, n.akcept, k.id, k.nazwa, k.kat_foto
  6. FROM
  7.  newsy as n, kategorie_newsy as k
  8. WHERE
  9.  k.id = n.kategoria AND 
  10. ( n.akcept = "Z" )
  11. ';
  12. ?>


ale dalej nie działa...

wyświetla wszytsko , oprócz daty... a chciałbym uzyskac taki efekt bo data była tylko wyświetlana w pierszym z newsa z danego dnia , co jest wyświetlony na górze samej ( czyli ostatnie id )
sf
Moim zdaniem powinieneś wynik zapytania 'obrobić' w php i w ten sposób uzyskać oczekiwany efekt.
pioch
Cytat(sf @ 4.01.2007, 19:13:14 ) *
Moim zdaniem powinieneś wynik zapytania 'obrobić' w php i w ten sposób uzyskać oczekiwany efekt.



moze pokazać przykład , albo napisac dokładniej ....

z góry dzieki
sebik
mysle ze najproscie byloby wyslac zapytanie o newsy posortowane wg daty, wtedy w petli wystarczy sprawdzac kiedy sie zmienila data i wowczas ja wypisac
pioch
sebik mógłbyś napisac jak , dokładniej albo w mare możliwości przykład smile.gif
sebik
może coś w tym rodzaju:

  1. <?php
  2. $query ='
  3.  
  4. SELECT
  5.  n.tytul, n.tresc_krotka, n.kategoria_foto, n.rodzaj, n.id, n.data
  6. FROM
  7.  newsy as n
  8. WHERE
  9. ( n.rodzaj = "G" )
  10. ORDER BY n.data DESC
  11. ';
  12. $do=mysql_query($query);
  13.  
  14. //funkcja ktora sprawdza czy ten sam dzien
  15. function sameDay($ts1, $ts2)
  16. {
  17.  if (date("Y", $ts1) != date("Y", $ts2)) {
  18. return False;
  19.  }
  20.  if (date("m", $ts1) != date("m", $ts2)) {
  21. return False;
  22.  }
  23.  if (date("d", $ts1) != date("d", $ts2)) {
  24. return False;
  25.  }
  26.  return True;
  27. }
  28.  
  29. $counter=0;
  30. while ($result=mysql_fetch_array($do)) {
  31. counter++;
  32. $data1=$result['data']; 
  33.  if (!sameDay($data1,$data2) || ($counter==1));
  34.  {
  35.  //tu wypisz date
  36.  }
  37. $data2=$result['data'];
  38. //tu wypisz dane newsa
  39. }
  40. ?>


nie wiem czy to dziala, ale mozna cos z tego wykombinowac
phpion
Prosciej tak:
  1. <?php
  2. $newsy = array();
  3.  
  4. $q ='SELECT n.tytul, n.tresc_krotka, n.kategoria_foto, n.rodzaj, n.id, n.data FROM ne
    wsy as n WHERE n.rodzaj="G" ORDER BY n.data DESC, n.id DESC'
    ;
  5. $q=mysql_query($q);
  6.  
  7. if (mysql_num_rows($q) > 0) {
  8. while ($r = mysql_fetch_row($q)) {
  9. $newsy[$r[5]][] = $r[0];
  10. }
  11. }
  12.  
  13. print_r($newsy);
  14. ?>

Coprawda nie testowalem ale powinno dzialac. Dodalem do zapytania jeszcze drugie sortowanie. Najpierw sortujemy malejaco po dacie, a potem trzeba jeszcze malejaco po id, zeby u gory byly najnowsze posty z danego dnia.
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.