Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomysl na formularz
Forum PHP.pl > Forum > PHP
bigos1995-95
Nie mam pomysłu jak zrobić aby kod wyświetlał formularz, i pozniej sprawdzal czy sa jakies bledy w formularzu jesli tak to wyswietlal jeszcze raz formularz ale z danymi wprowadzonymi wczesniej przez uzytkownika, jesli natomiast nie ma bledow to kod sie konczy .

napisalem cos takiego ale mi jakies pętle nieskonczone wychodza

  1. <?php
  2. require('naglowek.php');
  3. $p = 0;
  4.  
  5. while($p == 0) {
  6. foreach($tablica as $wynik) {
  7. echo $wynik.'<br />';
  8. }
  9. if($i > 0 || $p == 0) {
  10. ?>
  11. <div id="formularz" align="center">
  12. <form enctype="multipart/form-data" method="post" action="dodaj_skrypt.php">
  13.  
  14. <table border="0">
  15. <tr bgcolor="#cccccc">
  16. <td width="300">Co musisz wybrać/wpisać</td>
  17. <td width="500">Wpisz/wybierz</td>
  18. </tr>
  19. <tr>
  20. <td>Podaj nazwe skryptu</td>
  21. <?php
  22. echo '<td><input type="text" name="nazwaskryptu" maxlength="49" size="49" value"'.$nazwaskryptu.'"></td>';
  23. ?>
  24. </tr>
  25. <tr>
  26. <td>Profesja</td>
  27. <td>
  28. <select name="profesja">
  29. <?php
  30. echo '<option value="brak">---//---</option>';
  31. echo '<option value="Druid" ';
  32. porownaj_profesje(Druid);
  33. echo '>Druid</option>';
  34. echo '<option value="Knight" ';
  35. porownaj_profesje(Knight);
  36. echo '>Knight</option>';
  37. echo '<option value="Paladyn" ';
  38. porownaj_profesje(Paladyn);
  39. echo '>Paladyn</option>';
  40. echo '<option value="Sorcerer" ';
  41. porownaj_profesje(Sorcerer);
  42. echo '>Sorcerer</option>';
  43. ?>
  44. </select>
  45. </td>
  46. </tr>
  47. <tr>
  48. <td>Podaj poziom</td>
  49. <?php
  50. echo '<td><input type="text" name="nazwapoziom" maxlength="3" size="3" value="'.$nazwapoziom.'"></td>';
  51. ?>
  52. </tr>
  53. <tr>
  54. <td>Podaj opis skryptu (500 znaków)</td>
  55. <?php
  56. echo '<td><textarea name="komentarz" cols="50" rows="8" wrap="virtual" maxlength="500">'.$komentarz.'</textarea></td>';
  57. ?>
  58. </tr>
  59. <tr>
  60. <td>Wybierz miasto</td>
  61. <td>
  62. <select name="miasto">
  63. <?php
  64. echo '<option value="brak">---//---</option>';
  65. echo '<option value="ab" ';
  66. porownaj_miasto(ab);
  67. echo '>Ab"dendriel</option>';
  68. echo '<option value="ank" ';
  69. porownaj_miasto(ank);
  70. echo '>Ankrahmun</option>';
  71. echo '<option value="carlin" ';
  72. porownaj_miasto(carlin);
  73. echo '>Carlin</option>';
  74. echo '<option value="darashia" ';
  75. porownaj_miasto(darashia);
  76. echo '>Darashia</option>';
  77. echo '<option value="edron" ';
  78. porownaj_miasto(edron);
  79. echo '>Edron</option>';
  80. echo '<option value="gray" ';
  81. porownaj_miasto(gray);
  82. echo '>Gray Island</option>';
  83. echo '<option value="liberty" ';
  84. porownaj_miasto(liberty);
  85. echo '>Liberty bay</option>';
  86. echo '<option value="port" ';
  87. porownaj_miasto(port);
  88. echo '>Port Hope</option>';
  89. echo '<option value="svargrond" ';
  90. porownaj_miasto(svargrond);
  91. echo '>Svargrond</option>';
  92. echo '<option value="thais" ';
  93. porownaj_miasto(thais);
  94. echo '>Thais</option>';
  95. echo '<option value="venore" ';
  96. porownaj_miasto(venore);
  97. echo '>Venore</option>';
  98. echo '<option value="yalahar" ';
  99. porownaj_miasto(yalahar);
  100. echo '>Yalahar</option>';
  101. echo '<option value="zao" ';
  102. porownaj_miasto(zao);
  103. echo '>Zao</option>';
  104. echo '<option value="rookgard" ';
  105. porownaj_miasto(rookgard);
  106. echo '>Rookgard</option>';
  107. echo '<option value="inne" ';
  108. porownaj_miasto(inne);
  109. echo '>Inne</option>';
  110. ?>
  111. </select>
  112. </td>
  113. </tr>
  114. <tr>
  115. <td>Do jakiego bota chcesz dodać skrypt</td>
  116. <td>
  117. <select name="jaki_bot">
  118. <?php
  119. echo '<option value="pusty">---//---</option>';
  120. echo '<option value="ibot" ';
  121. porownaj_bota(ibot);
  122. echo '>IBot</option>';
  123. echo '<option value="blackdbot" ';
  124. porownaj_bota(blackdbot);
  125. echo '>BlackdProxy</option>';
  126. echo '<option value="autobot" ';
  127. porownaj_bota(autobot);
  128. echo '>TibiaAuto</option>';
  129. echo '<option value="redbot" ';
  130. porownaj_bota(redbot);
  131. echo '>RedBot</option>';
  132. echo '<option value="xenobot" ';
  133. porownaj_bota(xenobot);
  134. echo '>XenoBot</option>';
  135. ?>
  136. </select>
  137. </td>
  138. </tr>
  139. <tr>
  140. <td>Name skryptera</td>
  141. <?php
  142. echo '<td><input type="text" name="skrypter" maxlength="14" size="14" value="'.$skrypter.'"></td>';
  143. ?>
  144. </tr>
  145. </table>
  146.  
  147. <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
  148. <table width="400" border="3">
  149. <tr>
  150. <td width="400">
  151. <label for="plikuzytkownika">Załaduj ten plik:</label>
  152. <input name="plikuzytkownika" type="file" value="plikuzytkownika" />
  153. </td>
  154. </tr>
  155. <tr>
  156. <td>
  157. <input name="przycisk" type="submit" value="Wyślij" />
  158. </td>
  159. </tr>
  160. </table>
  161. <br />
  162. </form>
  163. <?php
  164. }
  165. if (isset($_POST['przycisk'])) {
  166. //ustawianie wskaznika tablicy na pierwszy
  167. $i = 0;
  168. //czyszczenie tablicy
  169. $tabela =array();
  170. //Tworzymy krótkie nazwy zmiennych
  171. $nazwaskryptu = $_POST['nazwaskryptu'];
  172. $profesja = $_POST['profesja'];
  173. $nazwapoziom = $_POST['nazwapoziom'];
  174. $komentarz = $_POST['komentarz'];
  175. $miasto = $_POST['miasto'];
  176. $jaki_bot = $_POST['jaki_bot'];
  177. $plikuzytkownika = $_FILES['plikuzytkownika'];
  178. $skrypter = $_POST['skrypter'];
  179.  
  180. //Sklejanie zmiennych
  181. $danatabela = $jaki_bot . $miasto;
  182.  
  183. //lokalizacja pliku
  184. $lokalizacja = 'wyslane/'.$_FILES['plikuzytkownika']['name'];
  185.  
  186. if(strlen($lokalizacja) > 50) {
  187. $tablica[$i] = 'Dodawany plik nie może mieć nazwy dłuższej niż 50 znaków';
  188. $i++;
  189. }
  190.  
  191. // tworzenie zmiennej nazwy pliku
  192. $nazwapliku = $_FILES['plikuzytkownika']['name'];
  193.  
  194. // Sprawdzanie, czy wszystkie dane zostały wpisane
  195. if(!$nazwaskryptu || !$nazwapoziom || !$komentarz || $miasto == "brak" || $jaki_bot == "pusty" || $profesja == "brak" || !$plikuzytkownika) {
  196. $tablica[$i] = 'Nie podałeś wszystkich danych';
  197. $i++;
  198. }
  199.  
  200. // Sprawdzenie, czy przy próbie wysłania pliky wystąpił błąd
  201. if ($_FILES['plikuzytkownika']['error'] > 0)
  202. {
  203. switch ($_FILES['plikuzytkownika']['error'])
  204. {
  205. case 1: $tablica[$i] = 'Rozmiar pliku przekroczył wartość upload_max_filesize'; break;
  206. case 2: $tablica[$i] = 'Rozmiar pliku przekroczył wartość max_file_size'; break;
  207. case 3: $tablica[$i] = 'Plik wysłany tylko częściowo'; break;
  208. case 4: $tablica[$i] = 'Nie wysłano żadnego pliku'; break;
  209. case 6: $tablica[$i] = 'Nie można wysłać pliku: Nie wskazano katalogu tymczasowego.'; break;
  210. case 7: $tablica[$i] = 'Wysłane pliku nie powiodło się: Nie zapisano pliku na dysku.'; break;
  211. }
  212. $i++;
  213. }
  214.  
  215. // sprawdzanie czy pole POZIOM zawiera same cyfry
  216. if(!ctype_digit($nazwapoziom)) {
  217. $tablica[$i] = 'Pole "Podaj poziom" musi zawierać same cyfry';
  218. $i++;
  219. }
  220. //sprawdzanie czy plik o podanej nazwie istnieje w katalogu
  221. $istnieje = file_exists($lokalizacja);
  222. if($istnieje) {
  223. $tablica[$i] = 'Plik o nazwie <font color="#00FF00">'.$nazwapliku.'</font> istnieje już w katalogu, zmień nazwę pliku i spróbuj ponownie.';
  224. $i++;
  225. }
  226.  
  227.  
  228. //formatowanie zmiennych przed włożeniem do bazy danych
  229. $nazwaskryptu = mysql_escape_string($nazwaskryptu);
  230. $profesja = mysql_escape_string($profesja);
  231. $nazwapoziom = doubleval($nazwapoziom);
  232. $komentarz = mysql_escape_string($komentarz);
  233. $miasto = mysql_escape_string($miasto);
  234. $jaki_bot = mysql_escape_string($jaki_bot);
  235. $skrypter = mysql_escape_string($skrypter);
  236. }
  237.  
  238. //laczenie z baza danych i dodawanie zapytania
  239. @ $db = new mysqli('xxxxx', 'x', 'xx', 'xxxxx');
  240.  
  241.  
  242. if(mysqli_connect_errno()) {
  243. $tablica[$i] = 'Blad: Polaczenie z baza danych nie powiodlo sie';
  244. $i++;
  245. }
  246. $zapytanie = "insert into $danatabela values (NULL, '".$profesja."', '".$nazwaskryptu."', '".$nazwapoziom."', '".$komentarz."', '".$skrypter."', '".$lokalizacja."',
  247. '".$lokalizacja."') ";
  248. $wynik = $db->query($zapytanie);
  249. if(!$wynik) {
  250. $tablica[$i] = "Wystąpił błąd podczas zapisywania danych";
  251. $i++;
  252. }
  253. $db->close();
  254.  
  255.  
  256. // umieszczenie pliku w pożądanej lokalizacji
  257. if($i == 0) {
  258. if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
  259. {
  260. if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja))
  261. {
  262. $tablica[$i] = 'Problem: Plik nie może być skopiowany do katalogu';
  263. $i++;
  264. }
  265. }
  266. else
  267. {
  268. $tablica[$i] = 'Problem: możliwy atak podczas wysyłania pliku. Nazwa pliku: '.$_FILES['plikuzytkownika']['name'];
  269. $i++;
  270. }
  271. echo 'Plik został wysłany<br><br>';
  272. $p == 1;
  273. }
  274. }
  275. }
  276. ?>
  277. </body>
  278. </html>
  279.  
  280. <?php
  281. function porownaj_profesje($jaka_p) {
  282. if($profesja == $jaka_p) {
  283. echo 'selected';
  284. }
  285. }
  286.  
  287. function porownaj_miasto($jakie_m) {
  288. if($miasto == $jakie_m) {
  289. echo 'selected';
  290. }
  291. }
  292.  
  293. function porownaj_bota($jaki_b) {
  294. if($jaki_bot == $jaki_b) {
  295. echo 'selected';
  296. }
  297. }
  298.  
  299.  
  300.  
  301. ?>
nospor
Po co Ty tu w ogóle jakąś pętle WHILE robisz? Do wyswietlenia formualarza gdy są błedy lub ich nie ma, naprawdę nie potrzeba żadnej pętli :/
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.