Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Porównanie rekordów tabeli
jamesb
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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.

Ten post edytował jamesb 29.12.2008, 10:28:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
kefirek
post
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


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.

Ten post edytował kefirek 29.12.2008, 10:54:31
Go to the top of the page
+Quote Post
jamesb
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


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. ?>


Ten post edytował kefirek 29.12.2008, 11:58:30
Go to the top of the page
+Quote Post
jamesb
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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
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: 26.09.2025 - 22:02