Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odliczanie czasu do kazdego rekordu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
jacobson
Witam, mam pytanie... chce do swojej strony dorobic cos takiego ze rekordy pobrane z bazy danych wyswietlane sa jeden pod drugim tak jak np najblizsze imprezy sportowe.

i Teraz znalazlem skrypt JS odliczania czasu

  1. function czasDoWydarzenia(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda)
  2. {
  3. var aktualnyCzas = new Date();
  4. var dataWydarzenia = new Date(rok, miesiac, dzien, godzina, minuta, sekunda, milisekunda);
  5. var pozostalyCzas = dataWydarzenia.getTime() - aktualnyCzas.getTime();
  6.  
  7. if (pozostalyCzas > 0)
  8. {
  9. var s = pozostalyCzas / 1000; // sekundy
  10. var min = s / 60; // minuty
  11. var h = min / 60; // godziny
  12.  
  13. var sLeft = Math.floor(s % 60); // pozostało sekund
  14. var minLeft = Math.floor(min % 60); // pozostało minut
  15. var hLeft = Math.floor(h % 60); // pozostało godzin
  16.  
  17. if (minLeft < 10)
  18. minLeft = "0" + minLeft;
  19. if (sLeft < 10)
  20. sLeft = "0" + sLeft;
  21.  
  22. return hLeft + " : " + minLeft + " : " + sLeft;
  23. }
  24. else
  25. return;
  26. }
  27.  
  28. window.onload = function()
  29. {
  30. idElement = "content_main_countdown";
  31. document.getElementById(idElement).innerHTML = czasDoWydarzenia(2011, 04, 16, 20, 0, 0, 0);
  32. setInterval("document.getElementById(idElement).innerHTML = czasDoWydarzenia(2011, 04, 16, 20, 0, 0, 0)", 1000);
  33. };


i teraz w moim pliku index.php w <head> dalem <script type="text/javascript" src="/lib/countdown.js" />

no i tam gdzie mam rekordy:

  1. $q = "SELECT * FROM " . TBL_1 . " LIMIT 0,10";
  2. $result = $database->query($q);
  3. $num_rows = mysql_numrows($result);
  4. for ($i = 0; $i < $num_rows; $i++) {
  5. $id = mysql_result($result, $i, "quizid");
  6. echo "<div id=\"content_main_entry\">
  7. <span class=\"content_main_entry_value\">" . $id . "</span>
  8. <div id=\"content_main_countdown\">Tutaj czas</div></a></div>
  9. <div id=\"content_main_entry_enroll\"><a href=\"##\">Zapis</a></div>";
  10. }



Wszystko dziala, rekordy z bazy danych sa wypisywane odpowiednio jeden pod drugim, jednak czas ktory powinien odliczac sie dla kazdego elementu odlicza sie tylko dla pierwszego.

Moze ja cos robie niepoprawnie i ktos by mnie nakierowal co i jak powinienem zrobic zeby to dzialalo poprawnie smile.gif
pozdrawiam
krowal
W dokumencie nie może być więcej niż jeden elementów o tym samym id. Twój skrypt po prostu znajduje pierwszy taki element o id content_main_countdown i dalej nawet nie próbuje szukać. powinieneś sobie zrobić coś w tym stylu:
[JAVASCRIPT] pobierz, plaintext
  1. for (var i=0; i<ilosc_elementow; i++){
  2. document.getElementById('content_main_countdown_'+i).innerHTML = czasDoWydarzenia(2011, 04, 16, 20, 0, 0, 0);
  3. setInterval(function(){
  4. document.getElementById('content_main_countdown_'+i).innerHTML = czasDoWydarzenia(2011, 04, 16, 20, 0, 0, 0)
  5. },1000);
  6. }
[JAVASCRIPT] pobierz, plaintext
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.