Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Odświeżanie funkcji php w js
Forum PHP.pl > Forum > Przedszkole
kujol
Wita, jak można odświeżyć funkcję php za pomocą js?

  1. <!doctype html>
  2. <html>
  3. <head>
  4.  
  5. <title>Demo</title>
  6. <meta charset="UTF-8">
  7.  
  8. </head>
  9. <body>
  10.  
  11. <?Php
  12.  
  13. function odliczanieCzasu($moj_czas){
  14. //Tutaj funkcja odliczająca czas w php
  15. }
  16.  
  17. //odliczanieCzasu($data); - Wywołanie funkcji
  18.  
  19. ?>
  20.  
  21. <script>
  22.  
  23. function czas(){
  24.  
  25. document.getElementById("czas").innerHTML = "<?Php odliczanieCzasu($data); ?>";
  26. }
  27.  
  28. setInterval("czas();", 1000);
  29.  
  30. </script>
  31.  
  32. <p id="czas"></p>
  33.  
  34. </body>
  35. </html>
  36.  


Ten skrypt nie odświeża funkcji, przez co wyświetlony czas się nie zmienia.
vonski
PHP działa po stronie serwera, Javascript po stronie przeglądarki, więc to:

  1. document.getElementById("czas").innerHTML = "<?Php odliczanieCzasu($data); ?>";


wstawia w miejsce odliczanieCzasu($data) wartość zwróconą przez funkcję w momencie generowania dokumentu. Jeśli chcesz z poziomu JS wykonać skrypt po stronie serwera (czyli np. PHP), użyj AJAX-a. Z tym że w przypadku odliczania czasu to raczej nie będzie działać tak jak sobie tego życzysz, bo zapewne element #czas ma być uaktualniany co sekundę a biorąc pod uwagę naturę AJAX-a nie masz gwarancji, że komunikacja: klient - serwer - klient będzie trwała sekundę, bądź mniej. Z tego względu lepiej po prostu użyć samego JS. Czyli cokolwiek ma być w PHP-owej funkcji odliczanieCzasu(), napisz to w Javascript i już.
kujol
Dla kogoś potrzebującego:

  1. <!doctype html>
  2. <html>
  3. <head>
  4.  
  5. <title>Demo</title>
  6. <meta charset="UTF-8">
  7.  
  8. </head>
  9. <body>
  10.  
  11. <style>
  12.  
  13. body > div{
  14. float:left;
  15. padding: 0px 0px 0px 5px;
  16. }
  17.  
  18. </style>
  19.  
  20. <?Php
  21.  
  22. include("check.php");
  23.  
  24. $zapytanie = mysql_query("SELECT `data` FROM `ankieta` WHERE `nick` = 'konto'");
  25. while($rek = mysql_fetch_array($zapytanie)){
  26. $data = $rek[0];
  27. }
  28.  
  29. ?>
  30.  
  31. <hr/>
  32.  
  33. <script>
  34.  
  35. function czas(moj_czas){
  36. cd=new Date();
  37. ad=new Date(moj_czas)
  38.  
  39. sekundy = Math.floor((cd.getTime() - ad.getTime()) / 1000);
  40.  
  41. if(sekundy > 0){ //Jeśli dodatnia to czas przeszły
  42. document.getElementById("komunikat").innerHTML = "<p>Twoje zdarzenie juz sie wydarzyło!</p>";
  43. dni = Math.floor(sekundy / (60*60*24));
  44. dni_1 = dni * 86400;
  45. dni_2 = sekundy - dni_1;
  46. }
  47.  
  48. else{ //Jeśli ujemna to czas przyszły
  49. document.getElementById("komunikat").innerHTML = "<p>Twoje zdarzenie dopiero sie wydarzy!</p>";
  50. new_sek = sekundy * (-1);
  51. dni = Math.floor(new_sek / (60*60*24));
  52. dni_1 = dni * 86400;
  53. dni_2 = new_sek - dni_1;
  54. }
  55.  
  56. godz = Math.floor(dni_2 / (60 * 60));
  57. godz_1 = godz * 3600;
  58. godz_2 = dni_2 - godz_1;
  59.  
  60. min = Math.floor(godz_2 / 60);
  61. min_1 = min * 60;
  62. min_2 = godz_2 - min_1;
  63.  
  64. sek = min_2;
  65.  
  66. if(sekundy > 0){
  67. document.getElementById("co").innerHTML = "Upłyneło:";
  68. }
  69. else{
  70. document.getElementById("co").innerHTML = "Pozostało:";
  71. }
  72.  
  73. if(dni > 1){
  74. document.getElementById("dni").innerHTML = dni+" dni";
  75. }
  76.  
  77. else{}
  78.  
  79. if(dni == 1){
  80. document.getElementById("dni").innerHTML = dni+" dzień";
  81. }
  82.  
  83. else{}
  84.  
  85. if(godz > 0){
  86. document.getElementById("godz").innerHTML = godz+" godz";
  87. }
  88.  
  89. else{}
  90.  
  91. if(min > 0){
  92. document.getElementById("min").innerHTML = min+" min";
  93. }
  94.  
  95. else{}
  96.  
  97. if(sek > 0){
  98. document.getElementById("sek").innerHTML = sek+" s";
  99. }
  100.  
  101. else{}
  102. }
  103.  
  104. setInterval("czas('<?Php echo $data; ?>');", 1000); //Twoja data
  105.  
  106. </script>
  107.  
  108. <p id="komunikat"></p>
  109. <div id="co"></div>
  110. <div id="dni"></div>
  111. <div id="godz"></div>
  112. <div id="min"></div>
  113. <div id="sek"></div>
  114.  
  115. </body>
  116. </html>
  117.  
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.