Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zablokowanie odświeżania strony
Geniesis
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 5
Dołączył: 4.12.2013
Skąd: Śląsk

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


Witam! Ponieważ uczę się PHP postanowiłem napisać w tym właśnie języku prostą gre "saper" niestety mam problem, ponieważ za każdym razem gdy nacisnę input to strona sie odświeża, co z tym idzie nie można przetestować dalszego kodu czy działa poprawie ze względu na reset wszystkiego. Czy moglibyście mi poradzić jak mam rozwiązać ten problem? Ew. jeżeli istnieje jakieś inne lepsze rozwiązanie podsunąć mi je.
Drugim "estetycznym" problemem jest dla mnie napisanie warunku: czy da się if z linii 20 zapisać prościej w stylu linii 23?


  1. <?php
  2. // zmienne for: r a i b c
  3. //$bomb[]
  4. //$man[] tablica pokazujaca ile bomb obok
  5. //write tablica wypisujaca
  6. $wyn = 0; //sprawdza czy wygrales
  7. $dis = 0; //blokowanie tablicy
  8. $bomb[1] = 23;
  9. $bomb[2] = 43;
  10. //losuje miejsca $bomb
  11. for ($r = 1; $r<11; $r++){
  12. //$bomb[$r] = rand(1,100);
  13. echo $bomb[$r]. " ";
  14. }
  15. if (isset($_POST[$a])){
  16. for($i = 1; $i < 101;$i++){ //sprawdza czy klikniecie w $bombe
  17. for ($b = 1; $b < 11; $b++){
  18. if($a != $bomb[$b]){
  19. for($c = 1; $c < 11; $c++){ // sprawdza ile bomb jest obok
  20. if (($a - 1 == $bomb[$c]) && ($a != 11) && ($a != 21) && ($a != 31) && ($a != 41) && ($a != 51) &&
  21. ($a != 61) && ($a != 71) && ($a != 81) && ($a != 91)){$man[$a]++; $dis = 1;}
  22.  
  23. if (($a + 1 == $bomb[$c]) && ($a % 10 == 0)){$man[$a]++; $dis = 1;}
  24.  
  25. if (($a - 11 == $bomb[$c]) && ($a != 11) && ($a != 21) && ($a != 31) && ($a != 41) && ($a != 51) &&
  26. ($a != 61) && ($a != 71) && ($a != 81) && ($a != 91)){$man[$a]++; $dis = 1;}
  27.  
  28. if (($a - 10 == $bomb[$c])){$man[$a]++; $dis = 1;}
  29.  
  30. if (($a - 9 == $bomb[$c]) && ($a % 10 == 0)){$man[$a]++; $dis = 1;}
  31.  
  32. if (($a + 9 == $bomb[$c]) && ($a != 11) && ($a != 21) && ($a != 31) && ($a != 41) && ($a != 51) &&
  33. ($a != 61) && ($a != 71) && ($a != 81) && ($a != 91)){$man[$a]++; $dis = 1;}
  34.  
  35. if (($a + 10 == $bomb[$c])){$man[$a]++; $dis = 1;}
  36.  
  37. if (($a + 11 == $bomb[$c]) && ($a % 10== 0)){$man[$a]++; $dis = 1;}
  38.  
  39. else{$man[$a] = ""; $dis = 1;} //jezeli nie ma
  40. }
  41. }
  42. if($a == $bomb[$b]){
  43. echo "przegrales";
  44. break;
  45. }
  46. $wyn++;
  47. if ($wyn == 90){
  48. echo "wygrales";
  49. }
  50. }
  51. }
  52. }
  53.  
  54. ?>
  55. <html>
  56. <head>
  57. <script language ="JavaScript">
  58. var sek = 0;
  59. setInterval("add()",1000);
  60. function add(){
  61. sek++;
  62. refresh();
  63. }
  64. function refresh(){
  65. document.getElementById("stoper").innerHTML = sek;
  66. }
  67. </script>
  68. </head>
  69. <body>
  70. <form id = "ff" method ="POST">
  71. <div id = "stoper">0</div>
  72. <div align = "center">
  73. <table cellspacing = "0" cellpadding ="0">
  74. <tr>
  75. <?php
  76. for ($a = 1; $a < 101; $a++){
  77. echo "<td>";
  78. echo "<form id = \"ff[$a]\" method = \"POST\">";
  79. echo "<input type = \"submit\" name = \"$a\" value = \"$man[$a]\""; if ($dis == 1){ echo "disabled = \"disabled\""; } echo "/>";
  80. echo "</form>";
  81. echo "</td>";
  82. if(($a % 10 == 0)){
  83. echo "</tr>";
  84. echo "<tr>";
  85. }
  86. }
  87. ?>
  88. </tr>
  89. </table>
  90. </div>
  91. </form>
  92. </body>
  93. </html>


Ten post edytował Geniesis 4.12.2013, 19:51:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
werdan
post
Post #2





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


>Podejrzewam, że jest to związane, że PHP jest językiem serwerowym nie przeglądarkowym choć dlaczego akurat odświeżać musi się każdorazowo strona?

Dokładnie. To język scryptowy. Scrypt sie wykonuje i w twoim przypadku zwraca html, aby cokolwiek zdziałac dalej, nalezy do skryptu przeslac jakies tam dane i skrypt wykona sie ponownie.
Jesli w przegladarce widzisz swojego sapera, to znaczy ze skypt PHP sie wykonał i efekt masz na ekranie. Nic juz wiecej nie zdziałasz, dopoki ponownie nie wykonasz skryptu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 30.12.2025 - 04:25