Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]/[mysql] sortowanie wg godzin
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Mam taki skrypt: http://hosting8840938.az.pl/Geckonet_system/
Chcę zrobić aby rekordy pokazywały się od najmniejszej godziny w polu "Do końca".
Do dodanego pola dodaje mktime z ustawioną liczbą dni 'ile godzin'

  1. $eventDate = mktime(date('H'), date('i'), date('s'), date('m'), date('d')+$_POST['czas'], 2012);


potem pobieram dane
funkcja mi liczy godziny i wypisuje w tablece
  1. function CountDown($hour, $minute, $second, $month, $day, $year) {
  2.  
  3. $eventDate = mktime($hour, $minute, $second, $month, $day, $year);
  4.  
  5.  
  6. $today = mktime();
  7.  
  8. $secondsTo = $eventDate - $today;
  9. $minutesTo = round($secondsTo / 60);
  10. $hoursTo = round($minutesTo / 60);
  11. $daysTo = round($hoursTo / 24);
  12. $weeksTo = round($daysTo / 7);
  13. $monthsTo = round($weeksTo / 4);
  14. $yearsTo = round($monthsTo / 12);
  15.  
  16. $values = array(
  17.  
  18. "seconds" => $secondsTo,
  19. "minutes" => $minutesTo,
  20. "hours" => $hoursTo,
  21. "days" => $daysTo,
  22. "weeks" => $weeksTo,
  23. "months" => $monthsTo,
  24. "years" => $yearsTo
  25. );
  26. return $values;
  27.  
  28. }
  29.  
  30. $today = mktime();
  31.  
  32. $sql = $db->query('select * from report where is_active = 1 order by mk_time < "'.$today.'" DESC limit 20 ');
  33.  
  34.  
  35. while($row = $sql->fetch_array())
  36. {
  37. $x = explode('.', $row[date]);
  38.  
  39. $y = explode(" ",$x[2]);
  40.  
  41. $z = explode(":",$y[1]);
  42.  
  43. $rok = $y[0];
  44. $miesiac = $x[1];
  45. $dzien = $x[0];
  46. $godzina =$z[0];
  47.  
  48.  
  49. $xx = CountDown($godzina, 0, 0, $miesiac, $dzien+$row[day], 2012);
  50. if($xx['hours'] < 10)
  51. {
  52. $c = '#F00';
  53. }
  54. else
  55. {
  56. //$c = '#00CC00';
  57. }
  58. ?>
  59. <tr style="color:<?=$c;?>">
  60.  
  61. <td><?=$row[name];?></td>
  62. <td><?=$row[surname];?></td>
  63. <td><?=$row[adress];?></td>
  64. <td><?=$row[phone];?></td>
  65. <td><?=$row[cases];?></td>
  66.  
  67.  
  68. <td><? echo $xx['hours']; ?> h</td>
  69. <td><a href="?action=zamykam&id=<?=$row[id_zgloszenia ];?>" class="myButton">Zamykam</a>
  70. <a href="?action=edit&id=<?=$row[id_zgloszenia ];?>" class="myButton">Edytuj</a></td>
  71.  
  72.  
  73. </tr>
  74. <?
  75. }


Lecz to sortowanie dobrze nie działa, są błędy
Jak to rozwiązać?
Mam jeszcze jeden problem dotyczący CSS, w operze i google chrome tabelka mi wypada z suwaka jest pod nim.


Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




order by mk_time < "'.$today.'"
Nie za bardzo kumam tego zapisu - co to niby ma robić?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #3





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


pole mk_time w tabeli ma wartość ze zmiennej $eventDate która zawiera informacje o dniu do którego ma być odliczane


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




tyle ja się domyślam. Nie rozumiem jednak co o to:
mk_time < "'.$today.'"
robi w ORDER BY.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #5





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


no chce to posortować w zapytaniu, robię źle?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale sortuje się np. po kolumnie, a nie po warunku logicznym - owszem, po warunku też można, ale jak się wie po co sie go robi. Ty wiesz? I właśnie tego nie rozumiem.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


to jak mam to rozwiązać?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




chyba się nawzajem nie rozumiemy.... no a czemu nie zrobisz tak:
order by pole_z_data_w_tabeli_report
?

edit: chyba już kumam... do_konca smile.gif

1) Czemu robisz rekurencje tutaj? Czemu w funkcji CountDown wywołujesz znowu CountDown?
2) Zeby sortować po "do konca" to trzeba od daty koncowej odjąc date dzisiejszą i po tym sortowac:

order by data_koncowa-now()
i juz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #9





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


ech
zrobiłem dodatkowe pole i wpisuje w nim date kiedy odliczanie się kończy i na tej podstawie sortuje i jest ok, pozostaje jeszzcze problem z cssem pod operą i chrome

edit:
no racja, też sposób

nie rozumiem jeszcze twojego pytania o rekurencje, jak inaczej to rozwiązać?


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No bo robisz tu rekurencję. Nie wiem po co. Czemu to ma służyć?
Przecież zapytanie z
order by data_koncowa-now()
załatwia wszystko. Po co więc jeszcze w petli wywołujesz sam siebie ponownie tworząc rekurencje?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #11





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


no przecież wywołuje funkcje przy każdym rekordzie żeby obliczyć ilość pozostałych godzin


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Albo ja jestem ślepy i nie widzę gdzieś zakonczenia funkcji albo Ty.

Przecież w funkcji CountDown wywołujesz funkcję CountDown.
Przecież w funkcji CountDown pobierasz już rekordy z bazy i w petli z bazy znowu wywołujesz CountDown i znowu pobierasz z bazy to samo i znbowu wywolujesz CountDown i znowu..... rozumiesz?

edit: dobra, ja jestem slepy. Już znalazłem zakonczenie funkcji smile.gif

Tak bywa, gdy się dostaje kod bez normalnych wcięć.... wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lejto
post
Post #13





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


ok smile.gif spoko
masz jakiś pomysł na css?

ok, poradziłem sobie, okazało się że szerokości nie te były smile.gif

pojawiły się problemy z sortowaniem i odliczaniem
sami zobaczcie:
http://hosting8840938.az.pl/Geckonet_system/index.php

tak sortuje:

  1. $sql = $db->query('select * from report where is_active = 1 order by mk_time - NOW()');


problem pojawia się kiedy licznik się przekręca, jak sortować żeby było poprawie od największej do najmniejszej?

mk_time to data do kiedy zlecenie ma być wykonane


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A jakiego typu jest pole mk_time?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 20.08.2025 - 06:13