Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Walidacja formularza
Forum PHP.pl > Forum > Przedszkole
eurosoft
Witam, mam taki formularz:
...........
  1. {
  2. echo'
  3. <form action="popraw.php" method="post">
  4. <input type="hidden" name="a" value="save" />
  5. <input type="hidden" name="id_book" value="'.$id_book.'" />
  6.  
  7.  
  8. Imię i Nazwisko:<br />
  9. <input type="text name="imie_nazwisko" readonly disabled
  10. value="'.$r['imie_nazwisko'].'" /><br /><br>
  11. Data \ godz. zak.:<br />
  12. <input type="text" size="10" name="end_pol" value="'.$r['end_pol'].'" />&nbsp;&nbsp;
  13. <select name="godz_end">
  14. <option value="'.$r['godz_end'].'">'.$r['godz_end'].'</option>
  15. <option value="01:00">01.00</option>
  16. <option value="02:00">02.00</option>
  17. <option value="03:00">03.00</option>
  18. <option value="04:00">04.00</option>
  19. <option value="05:00">05.00</option>
  20. <option value="06:00">06.00</option>
  21. <option value="07:00">07.00</option>
  22. <option value="08:00">08.00</option>
  23. <option value="09:00">09.00</option>
  24. <option value="10:00">10.00</option>
  25. <option value="11:00">11.00</option>
  26. <option value="12:00">12.00</option>
  27. <option value="13:00">13.00</option>
  28. <option value="14:00">14.00</option>
  29. <option value="15:00">15.00</option>
  30. <option value="16:00">16.00</option>
  31. <option value="17:00">17.00</option>
  32. <option value="18:00">18.00</option>
  33. <option value="19:00">19.00</option>
  34. <option value="20:00">20.00</option>
  35. <option value="21:00">21.00</option>
  36. <option value="22:00">22.00</option>
  37. <option value="23:00">23.00</option>
  38. <option value="24:00">24.00</option>
  39. </select><br /><br />
  40. Nazwa:&nbsp;&nbsp;&nbsp;&nbsp;Ilość szt:<br />
  41. <select name="animals">
  42. <option value="'.$z['animals'].'">'.$z['animals'].'</option>
  43. <option value=""></option>';
  44. while($nt=mysql_fetch_array($wynikan0))
  45. {
  46. echo '<option value="'.($nt['nazwa_anim']).'">'.($nt['nazwa_anim']).'</option>';
  47. }
  48. </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  49. <select name="ilosc" >
  50. <option value="'.$z['ilosc'].'">'.$z['ilosc'].'</option>
  51. <option value=""></option>
  52. <option value="1">1</option>
  53. <option value="2">2</option>
  54. <option value="3">3</option>
  55. <option value="4">4</option>
  56. <option value="5">5</option>
  57. </select><br /><br />
  58.  
  59. <select name="animals1">
  60. <option value="'.$z['animals1'].'">'.$z['animals1'].'</option>
  61. <option value=""></option>';
  62. while($nt=mysql_fetch_array($wynikan1))
  63. {
  64. echo '<option value="'.($nt['nazwa_anim']).'">'.($nt['nazwa_anim']).'</option>';
  65. }
  66. </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  67. <select name="ilosc1" >
  68. <option value="'.$z['ilosc1'].'">'.$z['ilosc1'].'</option>
  69. <option value=""></option>
  70. <option value="1">1</option>
  71. <option value="2">2</option>
  72. <option value="3">3</option>
  73. <option value="4">4</option>
  74. <option value="5">5</option>
  75. </select><br /><br />
  76. <select name="animals2">
  77. <option value="'.$z['animals2'].'">'.$z['animals2'].'</option>
  78. <option value=""></option>';
  79. while($nt=mysql_fetch_array($wynikan2))
  80. {
  81. echo '<option value="'.($nt['nazwa_anim']).'">'.($nt['nazwa_anim']).'</option>';
  82. }
  83. </select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  84. <select name="ilosc2" >
  85. <option value="'.$z['ilosc2'].'">'.$z['ilosc2'].'</option>
  86. <option value=""></option>
  87. <option value="1">1</option>
  88. <option value="2">2</option>
  89. <option value="3">3</option>
  90. <option value="4">4</option>
  91. <option value="5">5</option>
  92. </select><br /><br />
  93. Ilość rzutów:<br />
  94. <select name="ilosc_shot" >
  95. <option value="'.$z['ilosc_shot'].'">'.$z['ilosc_shot'].'</option>
  96. <option value=""></option>
  97. <option value="1">1</option>
  98. <option value="2">2</option>
  99. <option value="3">3</option>
  100. <option value="4">4</option>
  101. <option value="5">5</option>
  102. <option value="6">6</option>
  103. <option value="7">7</option>
  104. <option value="8">8</option>
  105. <option value="9">9</option>
  106. <option value="10">10</option>
  107.  
  108. </select><br /><br>
  109. <input type="submit" value="Aktualizuj dane"/>
  110. </form>';
  111. }
  112. }
  113.  
  114. elseif($a == 'save') {
  115. /* odbieramy zmienne z formularza */
  116. $id_book = $_POST['id_book'];
  117. $end_pol = trim($_POST['end_pol']);
  118. $godz_end = trim($_POST['godz_end']);
  119. $animals = trim($_POST['animals']);
  120. $animals1 = trim($_POST['animals1']);
  121. $animals2 = trim($_POST['animals2']);
  122. $ilosc = trim($_POST['ilosc']);
  123. $ilosc1 = trim($_POST['ilosc1']);
  124. $ilosc2 = trim($_POST['ilosc2']);
  125. $ilosc_shot = trim($_POST['ilosc_shot']);
  126. $login = trim($_SESSION['login']);
  127.  
  128.  
  129. /* uaktualniamy tabelę */
  130. mysql_query("UPDATE shot, book SET shot.animals='$animals', shot.animals1='$animals1', shot.animals2='$animals2', shot.ilosc='$ilosc', shot.ilosc1='$ilosc1', shot.ilosc2='$ilosc2', shot.ilosc_shot='$ilosc_shot', shot.login='$login', book.end_pol='$end_pol', book.godz_end='$godz_end' WHERE shot.id_book='$id_book' and book.id_book='$id_book'")
  131. or die('Błąd zapytania');
  132.  
  133.  
  134. echo 'Dane zostały zaktualizowane</br><br>
  135.  
  136. </form>';
  137.  
  138. }

mój problem polega na tym aby skrypt przed wysłaniem sprawdzał czy jest wypełnione pole 'animals' a jeśli tak, to czy pole 'ilosc' nie jest puste, analogicznie do pól 'animals1' vel 'ilosc1', 'animals2' vel 'ilosc2' a na koniec czy pole 'ilosc_shot' nie jest mniejsze od sumy ilosci pól 'ilosc'+'ilosc1'+'ilosc2'

nie umiem sobie z tym poradzić, prosze o pomoc w tym zakresie.
Dziękuję i pozdrawiam!
Valdi_B
Co do podstaw (jak robić walidację), nawet na tym forum jest trochę porad.
Sprawdź http://forum.php.pl/index.php?showtopic=16...mp;#entry836180
(ściślej -zawarte tam linki).

Co do szczegółów - sprawdzenia konkretnych pól - mając podstawy powinieneś sobie poradzić.
modern-web
Na przykład tak...

  1. <script type="text/javascript">
  2. var re = /[a-zA-Z]{2,}/;
  3. function sprawdź(str, imgId)
  4. {
  5. var img = document.getElementById(imgId);
  6. if(!img) return;
  7.  
  8. if(re.exec(str) != str)
  9. img.src = 'blad.png';
  10. else
  11. img.src = 'ok.png';
  12. }


i formularz:

  1. <input type="text" name="imie" onkeyup="sprawdź(this.value, 'imgTfImie');" /><img src="blad.png" id="imgTfImie" alt="wskaźnik" />
  2. <input type="text" name="nazwisko" onkeyup="sprawdź(this.value, 'imgTfNazwisko');" /><img src="blad.png" id="imgTfNazwisko" alt="wskaźnik"/>


To nie jest takie trudne wink.gif
Valdi_B
Sprawdzenie powiązane z onkeyup też może być (nawet pozwala na szybszą sygnalizację błędu), ale nie blokuje wysłania formularza z błędnymi danymi.
"Finalne" sprawdzenie powinno być w ramach obsługi zdarzenia onsubmit, na poziomie formularza, czyli coś w rodzaju:
<form ... onsubmit="return funk_kontr();" > ...
</form>

Taka funkcja (funk_kontr()) jeżeli zwróci false to zablokuje operację submit.

Na dobrą sprawę, przed zwrotem wyniku false powinien być jakiś alert z wyjaśnieniem co jest źle.
Warto także ustawić fokus w odpowiednim polu (tam gdzie coś było źle).
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.