Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Odświeżanie funkcji php w js
kujol
post 28.03.2014, 13:10:59
Post #1





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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.

Ten post edytował kujol 28.03.2014, 13:13:16


--------------------
;)
Go to the top of the page
+Quote Post
vonski
post 28.03.2014, 13:19:10
Post #2





Grupa: Zarejestrowani
Postów: 292
Pomógł: 89
Dołączył: 27.12.2006
Skąd: Warszawa

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


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


--------------------
Zend Certified Engineer | Microsoft Certified Professional: Programming in HTML5 with JavaScript & CSS3 | Blog
Go to the top of the page
+Quote Post
kujol
post 28.03.2014, 19:07:54
Post #3





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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.  


Ten post edytował kujol 28.03.2014, 19:15:04


--------------------
;)
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 Wersja Lo-Fi Aktualny czas: 11.06.2025 - 10:22