Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Porównanie rekordów tabeli
Forum PHP.pl > Forum > Przedszkole
jamesb
witam

Mam w tabeli rekordy w jednej z kolumn jest data, przy wypisywaniu rekordów chce miedzy nimi wstawić taki nagłówek z datą, czyli pod każdym takim nagłówkiem byłby wypisane kolejne rekordy przypisane do danej daty.
Próbowałem to robić w dwóch pętlach i porównywać aktualny rekord z kolejnym jeśli będą daty róźne wypisać nagłówek, ale coś mi nie działa.
kefirek
Spróbuj coś w ten deseń
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM test");
  3. while($r = mysql_fetch_assoc($wynik)) {
  4.  
  5. echo "".$r['data']."";
  6.  
  7. $wynik1 = mysql_query("SELECT * FROM test WHERE data='".$r['data']."'");
  8. while($r1 = mysql_fetch_assoc($wynik1)) {
  9.  
  10. echo "".$r1['rekord']."";
  11.  
  12. }
  13. }
  14. ?>

ciężko pomóc nie widząc tabeli.
jamesb
No tak troszke sprecyzuje ze w tabeli mam pole datetime czyli np 2008-12-28 23:21:24
a w nagłówku chce tylko date. Ponizej zmienilem to co napisales tylko dalej nie wiem ja wyrzucic powtarząjace sie sie te same daty.


$wynik = mysql_query("SELECT * FROM zadania ORDER BY data_start");
while($r = mysql_fetch_assoc($wynik)) {

echo "<br><strong>".substr($r['data_start'],0,10)."</strong><br>";

$wynik1 = mysql_query("SELECT * FROM zadania WHERE substring(data_start,1,10)='".substr($r['data_start'],0,10)."' ORDER BY data_start");
while($r1 = mysql_fetch_assoc($wynik1)) {

echo "".$r1['data_start']."<br>";

}
}

dla testów w tabeli mam 4 daty i powyzsze zapytanie zwraca coś takiego:

2008-12-28
2008-12-28 23:21:24
2008-12-28 23:47:57

2008-12-28
2008-12-28 23:21:24
2008-12-28 23:47:57

2008-12-29
2008-12-29 23:21:49
2008-12-29 23:42:22

2008-12-29
2008-12-29 23:21:49
2008-12-29 23:42:22

czyli trzeba usunac powtarzajace sie daty tylko jak??
kefirek
Zobacz tak powinno być dobrze
  1. <?php
  2. $wynik = mysql_query("SELECT *, DATE(data_start) AS data FROM zadania GROUP BY data ORDER BY data DESC");
  3. while($r = mysql_fetch_assoc($wynik)) {
  4.  
  5. echo "<br><strong>".$r['data']."</strong><br>";
  6.  
  7. $wynik1 = mysql_query("SELECT *, DATE(data_start) AS data1 FROM zadania WHERE data1='".$r['data']."' ORDER BY data_start DESC");
  8. while($r1 = mysql_fetch_assoc($wynik1)) {
  9.  
  10. echo "".$r1['data_start']."<br>";
  11.  
  12. }
  13. }
  14. ?>
jamesb
Dzieki działa burzyło sie tylko o zmienną w tym miejscu

$wynik1 = mysql_query("SELECT *, DATE(data_start) AS data1 FROM zadania WHERE data1='".$r['data']."' ORDER BY data_start DESC");

wyrzuciłem zmienna data1 i jest ok:

$wynik1 = mysql_query("SELECT * FROM zadania WHERE DATE(data_start)='".$r['data']."' ORDER BY data_start DESC");



między czasie znalazłem tez drugi sposób wydaje sie ze tez działa za pomocą DISTINCT substring

$wynik = mysql_query("SELECT DISTINCT substring(data_start,1,10) as dataa FROM zadania ORDER BY dataa");
while($r = mysql_fetch_assoc($wynik)) {

echo "<br><strong>".substr($r['dataa'],0,10)."</strong><br>";

$wynik1 = mysql_query("SELECT DISTINCT * FROM zadania WHERE substring(data_start,1,10)='".substr($r['dataa'],0,10)."' ORDER BY data_start");
while($r1 = mysql_fetch_assoc($wynik1)) {

echo "".$r1['data_start']."<br>";

}
}



Dzięki wielkie za pomoc.
Pozdrawiam
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.