Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript][MYSQL]Połączenie PHP z JS, odliczanie czasu
Forum PHP.pl > Forum > Przedszkole
zurek
Od dłuższego czasu pracuję nad skomplikowanym skryptem. Oto on:

  1. <?
  2.  
  3.  
  4.  
  5. require_once('../mysql_connect.php');
  6. $query = "SELECT money FROM progress WHERE user='$user'";
  7. $result = mysql_query($query);
  8.  
  9. if($result){
  10. while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  11. $money = $row['money'];
  12. }
  13. }
  14.  
  15. Aktualnie masz <b>$ '.$money.'</b>
  16. <form action="user_panel.php?page=buy" method="POST">
  17. <table class="tabela1">
  18. <tr>
  19. <td>
  20. Wpisz ilość danej jednostki, którą chcesz nabyć:
  21. </td>
  22. <td>
  23. <input type="text" name="value">
  24. </td>
  25. </tr>
  26. <tr>
  27. <td align="left">
  28. <input type="submit" name="wyslij" value="KUPUJ/REKRUTUJ"/>
  29. </td>
  30. </tr>
  31. </table>
  32. <input type="hidden" name="element" value="' . $element . '" />
  33. </form>';
  34.  
  35. if(isset($_GET['element'])){
  36. $element = $_GET['element'];
  37. }
  38. else if(isset($_POST['element'])){
  39. $element = $_POST['element'];
  40. }
  41.  
  42. if(isset($_POST['wyslij'])){
  43. if(isset($_POST['value']) && is_numeric($_POST['value'])){
  44. $value = $_POST['value'];
  45. }
  46.  
  47.  
  48. $query = "SELECT price FROM game_elements WHERE name='$element'";
  49. $result = mysql_query($query);
  50.  
  51. if($result){
  52. while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  53. $price = $row['price'];
  54. }
  55. }
  56.  
  57. $due1 = $value*$price;
  58.  
  59. if($money<$due1){
  60. print "Nie masz wystarczającej ilości pieniędzy, aby zakupić nowe oddziały";
  61. }
  62. else{
  63.  
  64. $query = "INSERT INTO events (user, operation, time, date)";
  65. $result = mysql_query($query);
  66.  
  67. $query = "SELECT * FROM armies WHERE user='$user'";
  68. $result = mysql_query($query);
  69.  
  70.  
  71. if($result){
  72. while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  73. $quanity = $row[''.$element.''];
  74. }
  75. }
  76.  
  77. $due2 = $quanity+$value;
  78.  
  79. $query = "SELECT seconds FROM game_elements WHERE name='$element'";
  80. $result = mysql_query($query);
  81.  
  82. if($result){
  83. while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  84. $seconds = $row['seconds'];
  85. }
  86.  
  87.  
  88. ?>
  89.  
  90. <script type="text/javascript">
  91. var secs = 0; 
  92. var element = 'czas'; 
  93. var T = null;
  94. function count(id){
  95. temp = secs;
  96.  
  97. if(secs > 0){
  98.  
  99.  result = Math.floor(temp / 86400) + ' dni ';
  100. temp %= 86400;
  101. result += Math.floor(temp / 3600) + ' godzin '; 
  102. temp %= 3600;
  103. result += Math.floor(temp / 60) + ' minut ';
  104. temp %= 60;
  105. result += temp + ' sekund';
  106. document.getElementById(element).innerHTML = result;
  107.  
  108. secs--;
  109. }else{
  110.  
  111. <?
  112.  
  113. }
  114.  
  115. $query = "UPDATE armies SET `$element`='$due2' WHERE user='$user' ";
  116. $result = mysql_query($query);
  117.  
  118. $due3 = $money-$due1;
  119.  
  120. $query = "UPDATE progress SET money='$due3' WHERE user='$user' ";
  121. $result = mysql_query($query);
  122.  
  123. }
  124.  
  125. ?>
  126.  
  127.  
  128. clearInterval(T);
  129. }
  130.  
  131. }
  132. function counter(days, hours, minutes, seconds){
  133.  
  134. secs = days*86400 + hours*3600 + minutes*60 + seconds;
  135.  
  136. T = window.setInterval("count()", 1000);
  137. //count();
  138. }
  139.  
  140.  
  141. </script>
  142.  
  143. <?
  144.  
  145. }
  146.  
  147. ?>
  148.  
  149.  
  150.  
  151. <div id="czas"></div>
  152.  
  153. <script type="text/javascript">counter(<? print "$days, $hours, $minutes, $seconds"; ?>);</script>


Nie jest on oczywiście jeszcze skończony, jest pare błędów, np. złe ustawienie i odczytanie z bazy danych czasu. Ale nie o to chodzi. Mam kilka pytań:
- co zrobić, aby po rozpoczęciu odliczania, przekierować użytkownika na inną podstronę? Próbowałem już z header(), ale wywalało błędy o nagłówkach. Poza tym w którym miejscu to umieścić, żeby nie zakłuciło to działania skryptu JS?
- jak zablokować odświeżanie strony?
- co zrobić aby po odświeżeniu strony, odliczanie ie zaczynało się od początku?

Mam nadzieję, że w miarę zrozumiale to napisałem. Proszę o szybką pomoc. Z góry dzięki za pomoc.
Shili
Aby po odświeżeniu nie zerowało się możesz trzymać to na przykład w sesjach.

Blokowania odświeżania raczej nie zrobisz.

Co do header i wysłanych nagłówków możesz spróbować z ob_start, albo po prostu jsem dodać gdzieś na chama metę przekierowującą (nie wiem czy działa).
zurek
Cytat(Shili @ 16.06.2008, 19:13:30 ) *
Aby po odświeżeniu nie zerowało się możesz trzymać to na przykład w sesjach.

Tak właśnie myslałem, to chyba będzie najlepsze rozwiązanie.

Cytat(Shili @ 16.06.2008, 19:13:30 ) *
Co do header i wysłanych nagłówków możesz spróbować z ob_start, albo po prostu jsem dodać gdzieś na chama metę przekierowującą (nie wiem czy działa).

Próbowałem z buforami wejścia i wyjścia, ale coś nie za bardzo to wychodzi. Słyszałem, że można to zrobić za pomocą JS. Niestety kiedy wstawiam:

Kod
<BR>window. location ="<A href="http://www.przykladowa.strona3.com">http://www.przykladowa.strona3.com</A>";<BR>


to wszystko się psuje.
Ociu
Proszę o poprawienie nazwy tematu o odpowiednie tagi.
Shili
Kod
<BR>window. location ="<A href="http://www.przykladowa.strona3.com">http://www.przykladowa.strona3.com</A>";<BR>

To powyżej to jest faktyczny kod, który wstawiałeś?

Poprawnie to powinno wyglądać:
Kod
window.location = "http://www.przykladowa.strona3.com";
zurek
Cytat(Shili @ 16.06.2008, 19:38:35 ) *
Kod
<BR>window. location ="<A href="http://www.przykladowa.strona3.com">http://www.przykladowa.strona3.com</A>";<BR>

To powyżej to jest faktyczny kod, który wstawiałeś?

Poprawnie to powinno wyglądać:
Kod
window.location = "http://www.przykladowa.strona3.com";


Tam u góry coś mi się pomieszało, sorry. Ale nawet z tym wszystko się miesza. W którym dokładnie miejscu mam postawić ten fragment?
Shili
Chcesz to zrobić po rozpoczęciu odliczania tak?
To ustaw to po kodzie, który zaczyna Ci odliczać.
bmL
Najlepiej buforowanie + header ale jeżeli Ci nie wychodzi to można prościej:
  1. <?php
  2. echo '<meta http-equiv=”refresh” content=”0; URL=http://innastrona.pl/” />';
  3. ?>

gdzie za content można wstawić czas po jakim strona zostanie odświeżona.
Co prawda jest to nieskładniowe od strony HTML ale działa.
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.