Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pusta tablica
Forum PHP.pl > Forum > Przedszkole
butek
Dlaczego tablica tablica_m jest pusta ? Mam błędy w linii 101 i 103 ale nie wiem o co chodzi .

  1. <?php
  2. <HTML>
  3. <head>
  4. <meta http-equiv="Content-Language" content="pl">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>ćwiczenia z PHP</title>
  7. </head>
  8. <BODY>
  9. <center><H1>LOTTO wersja rozszerzona</H1>
  10. ';
  11. $tablica_m=array();
  12. //tablica ile liczb losujemy
  13. $tablica_n=array();
  14. $tablica_mn=array();
  15. $i=0;
  16. if(!empty($_POST['dalej'])){$dalej=$_POST['dalej'];}else{$dalej=0;};
  17.  
  18. if(empty($dalej))
  19. {
  20. echo'<form method="POST" action="zadanie081.php">';
  21. echo"Z ilu liczb losujesz (1-100) <input type=\"text\" name=\"m\"><br>
  22. Ile liczb losujesz (1-20) <input type=\"text\" name=\"n\"><br>
  23. <input type=\"hidden\" name=\"dalej\" value=\"1\"><br>
  24. <input type=\"submit\" name=\"wyślij\"><br>
  25. </form>";
  26. };
  27.  
  28. if($dalej==1)
  29. {
  30. if(!empty($_POST['m'])){$m=$_POST['m'];}else{$m=0;};
  31. if(!empty($_POST['n'])){$n=$_POST['n'];}else{$n=0;};
  32.  
  33. echo"m = $m";
  34. echo"n = $n";
  35. // tablica z ilu liczb bedziemy losowac
  36. $i1=0;
  37. $wylosowano=0;
  38. while ($wylosowano < $n) 
  39. {
  40. $liczba = rand(1,$m);
  41. if (!in_array($liczba, $tablica_m)) 
  42. {
  43. array_push($tablica_m, $liczba);
  44.  $wylosowano++;
  45. };
  46. };
  47. foreach ($tablica_m as $liczba)
  48. {
  49. echo" <br>wylosowano liczbę $liczba<br>";
  50. };
  51. sort($tablica_m);
  52. echo'Maszyna wylosowała liczby';
  53. for($i=0;$i<$n;$i++)
  54. {
  55. echo"<br> $tablica_m[$i]<br>";
  56. };
  57. echo"Zaznacz $n liczb";
  58. echo'<form method="POST" action="zadanie081.php">';
  59. for($j=0;$j<$m;$j++)
  60. {
  61. $j1=$j+1;
  62. echo"<input type=\"checkbox\" name=\"nazwa$j\" value=\"$j1\">$j1<br>";
  63. };
  64. <input type=\"hidden\" name=\"ukryta_m\" value=\"$m\">
  65. <input type=\"hidden\" name=\"ukryta_n\" value=\"$n\">
  66. <input type=\"hidden\" name=\"dalej\" value=\"2\">
  67. <br><input type=\"submit\" value=\"Wyślij2\">
  68. </form>";
  69. };
  70. if($dalej==2)
  71. {
  72. if(!empty($_POST['ukryta_m'])){$m=$_POST['ukryta_m'];}else{$m=0;};
  73. if(!empty($_POST['ukryta_n'])){$n=$_POST['ukryta_n'];}else{$n=0;};
  74. if($n<=$m)
  75. {
  76. echo"m = $m";
  77. echo"n = $n";
  78. $trafionych=0;
  79. for($j=0;$j<$m;$j++)
  80. {
  81. $pole="nazwa$j";
  82. if(!empty($_POST[$pole])){$pole=$_POST[$pole];}else{$pole=0;};
  83. if(!empty($pole))
  84. {
  85. $tablica_n[]=$pole;
  86. };
  87. };
  88. echo '<pre>';
  89. print_r($tablica_m);
  90. echo '</pre>';
  91. for($j=0;$j<$n;$j++)
  92. { $wypisz=$tablica_m[$j];
  93. echo"<br> tablica_m_$j $wypisz<br>";
  94. if($tablica_n[$j]==$tablica_m[$j])
  95. {
  96. $tablica_mn[$j]=$tablica_n[$j];
  97. $dobraliczba=$tablica_mn[$j];
  98. echo"wylosowałeś liczbę $dobraliczba";
  99. $trafionych++;
  100. };
  101. };
  102. if($trafionych==0)
  103. {
  104. $komentarz="Spróbuj szczęścia raz jeszcze, może następnym razem uśmiechnie się ono do C
    iebie"
    ;
  105. };
  106. if($trafionych==1)
  107. {
  108. $komentarz="Trafiłeś jedną";
  109. };
  110. if($trafionych==2)
  111. {
  112. $komentarz="Trafiłeś dwie";
  113. };
  114. if($trafionych==3)
  115. {
  116. $komentarz="Trafiłeś trzy";
  117. };
  118. if($trafionych==4)
  119. {
  120. $komentarz="Trafiłeś cztery";
  121. };
  122. if($trafionych==5)
  123. {
  124. $komentarz="Trafiłeś pięć";
  125. };
  126. if($trafionych==6)
  127. {
  128. $komentarz="Trafiłeś sześć WOW ";
  129. };
  130. echo"Ilość trafionych $trafionych liczb<br><br><b>$komentarz</b><br><br>";
  131. }else{echo'błąd logiczny';};
  132. };
  133.  
  134. echo'<br><br>
  135. <a href="zadanie081.php">Zagraj jeszcze raz</a>
  136. <br><br><a href="index.html">Powrót do spisu ćwiczeń</a>';
  137.  
  138. echo'</center></BODY>
  139. </HTML>
  140. ';
  141. ?>
  142.  
  143. <?php
  144. <HTML>
  145. <head>
  146. <meta http-equiv="Content-Language" content="pl">
  147. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  148. <title>ćwiczenia z PHP</title>
  149. </head>
  150. <BODY>
  151. <center><H1>LOTTO wersja rozszerzona</H1>
  152. ';
  153. $tablica_m=array();
  154. //tablica ile liczb losujemy
  155. $tablica_n=array();
  156. $tablica_mn=array();
  157. $i=0;
  158. if(!empty($_POST['dalej'])){$dalej=$_POST['dalej'];}else{$dalej=0;};
  159.  
  160. if(empty($dalej))
  161. {
  162. echo'<form method="POST" action="zadanie081.php">';
  163. echo"Z ilu liczb losujesz (1-100) <input type=\"text\" name=\"m\"><br>
  164. Ile liczb losujesz (1-20) <input type=\"text\" name=\"n\"><br>
  165. <input type=\"hidden\" name=\"dalej\" value=\"1\"><br>
  166. <input type=\"submit\" name=\"wyślij\"><br>
  167. </form>";
  168. };
  169.  
  170. if($dalej==1)
  171. {
  172. if(!empty($_POST['m'])){$m=$_POST['m'];}else{$m=0;};
  173. if(!empty($_POST['n'])){$n=$_POST['n'];}else{$n=0;};
  174.  
  175. echo"m = $m";
  176. echo"n = $n";
  177. // tablica z ilu liczb bedziemy losowac
  178. $i1=0;
  179. $wylosowano=0;
  180. while ($wylosowano < $n) 
  181. {
  182. $liczba = rand(1,$m);
  183. if (!in_array($liczba, $tablica_m)) 
  184. {
  185. array_push($tablica_m, $liczba);
  186.  $wylosowano++;
  187. };
  188. };
  189. foreach ($tablica_m as $liczba)
  190. {
  191. echo" <br>wylosowano liczbę $liczba<br>";
  192. };
  193. sort($tablica_m);
  194. echo'Maszyna wylosowała liczby';
  195. for($i=0;$i<$n;$i++)
  196. {
  197. echo"<br> $tablica_m[$i]<br>";
  198. };
  199. echo"Zaznacz $n liczb";
  200. echo'<form method="POST" action="zadanie081.php">';
  201. for($j=0;$j<$m;$j++)
  202. {
  203. $j1=$j+1;
  204. echo"<input type=\"checkbox\" name=\"nazwa$j\" value=\"$j1\">$j1<br>";
  205. };
  206. <input type=\"hidden\" name=\"ukryta_m\" value=\"$m\">
  207. <input type=\"hidden\" name=\"ukryta_n\" value=\"$n\">
  208. <input type=\"hidden\" name=\"dalej\" value=\"2\">
  209. <br><input type=\"submit\" value=\"Wyślij2\">
  210. </form>";
  211. };
  212. if($dalej==2)
  213. {
  214. if(!empty($_POST['ukryta_m'])){$m=$_POST['ukryta_m'];}else{$m=0;};
  215. if(!empty($_POST['ukryta_n'])){$n=$_POST['ukryta_n'];}else{$n=0;};
  216. if($n<=$m)
  217. {
  218. echo"m = $m";
  219. echo"n = $n";
  220. $trafionych=0;
  221. for($j=0;$j<$m;$j++)
  222. {
  223. $pole="nazwa$j";
  224. if(!empty($_POST[$pole])){$pole=$_POST[$pole];}else{$pole=0;};
  225. if(!empty($pole))
  226. {
  227. $tablica_n[]=$pole;
  228. };
  229. };
  230. echo '<pre>';
  231. print_r($tablica_m);
  232. echo '</pre>';
  233. for($j=0;$j<$n;$j++)
  234. { $wypisz=$tablica_m[$j];
  235. echo"<br> tablica_m_$j $wypisz<br>";
  236. if($tablica_n[$j]==$tablica_m[$j])
  237. {
  238. $tablica_mn[$j]=$tablica_n[$j];
  239. $dobraliczba=$tablica_mn[$j];
  240. echo"wylosowałeś liczbę $dobraliczba";
  241. $trafionych++;
  242. };
  243. };
  244. if($trafionych==0)
  245. {
  246. $komentarz="Spróbuj szczęścia raz jeszcze, może następnym razem uśmiechnie się ono do C
    iebie"
    ;
  247. };
  248. if($trafionych==1)
  249. {
  250. $komentarz="Trafiłeś jedną";
  251. };
  252. if($trafionych==2)
  253. {
  254. $komentarz="Trafiłeś dwie";
  255. };
  256. if($trafionych==3)
  257. {
  258. $komentarz="Trafiłeś trzy";
  259. };
  260. if($trafionych==4)
  261. {
  262. $komentarz="Trafiłeś cztery";
  263. };
  264. if($trafionych==5)
  265. {
  266. $komentarz="Trafiłeś pięć";
  267. };
  268. if($trafionych==6)
  269. {
  270. $komentarz="Trafiłeś sześć WOW ";
  271. };
  272. echo"Ilość trafionych $trafionych liczb<br><br><b>$komentarz</b><br><br>";
  273. }else{echo'błąd logiczny';};
  274. };
  275.  
  276. echo'<br><br>
  277. <a href="zadanie081.php">Zagraj jeszcze raz</a>
  278. <br><br><a href="index.html">Powrót do spisu ćwiczeń</a>';
  279.  
  280. echo'</center></BODY>
  281. </HTML>
  282. ';
  283. ?>
Piniek
moze to ze po instrukcjach warunkowych nie daje się średnika ;]
butek
Skasowałem średniki po if tak samo się zachowuje jak wcześniej. Biorę udział w kursie z php dla początkujących i w materiałach są średniki po if
norbis
Przejrzałem kod pobieżnie i moim zdaniem tablica jest pusta, ponieważ nie deklarujesz jej ponownie po przeładowaniu strony.
Aby to rozwiązać możesz:
a) Przekazać jakoś wynik losowania do kolejnej podstrony (sesja lub ukryte imputy).
cool.gif Fragment kodu generujący tablicę przepisać na funkcję i wywołać po raz kolejny na drugiej podstronie.

Generalnie dużą część kodu zdublowałeś, dałoby się prościej i ładniej, ale skoro piszesz, że to kurs dla początkujących to i tak nieźle. No i tak jak poprzednika denerwują mnie te średniki po ifach smile.gif
PiXel2.0
Sredniki wystepuja po liniach kodu a nie blokach kodu w klamrach wiec nalezy na poczatek pousuwac wszystkie sredniki za if, for, while itp.

P.S.:
Radze sie najpierw nauczyc PHP krok po kroku a nie brac sie od razu za takie cos bez podstawowej wiedzy.
Najlepszy kurs to MANUAL winksmiley.jpg
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.