Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd przy warunku if
Forum PHP.pl > Forum > Przedszkole
stefik4
Mam następujący problem w programie obliczającym:

W formularzu mam kilkanaście pół które są uzupełniany w tym kodzie poniżej za pomocą funkcji _POST. I chodzi mi, aby utworzyć zabezpieczenie/warunek, że jeśli nie uzupełni się jakiegoś pola to wyskoczy powiadomienie. Napisałem to co mam poniżej, ale jesli nie wpiszę się kilku wartosi to skypt mimo to obliczy to co ma obliczyc.

Chodiz mi cos w postsci exit tylko zbytnio nie poznałem jescze tej funski i nie znam jej skutków.

  1. <?php
  2. ini_set( 'display_errors', 'On' );
  3.  
  4. $blad = 0;
  5. $imie = $_POST['imie'];
  6. $nazwisko = $_POST['nazwisko'];
  7. $xp = $_POST['xp']; //doswiadczenie
  8. $r = $_POST['r']; //reflex
  9. $k = $_POST['k']; //kondycja
  10. $s = $_POST['s']; //sila
  11. $tj = $_POST['tj']; //technika jazdy
  12. $ts = $_POST['ts']; //technika stratu
  13. $wiek = $_POST['wiek']; //wiek
  14. $suma = ($r+$k+$s+$tj+$ts); //suma skille
  15. $sumaxp = ($suma+$xp); //suma skilli + doswiadczenie
  16. $liczbax = 1000; //liczba do pensji
  17. $srednia = ($suma)/5; //srednia skili
  18. $podstawa = $suma; // do podpisu
  19.  
  20. $wykladnik = (3+0.01*(27-$wiek)); //Do kasy za podpis
  21. $wykladnik2 = 5; // do pensji
  22.  
  23.  
  24. if (empty($_POST['imie']) or !isset($_POST['imie']))
  25. { $blad++; echo &#092;"Nie podano imienie
  26. &#092;"; }
  27.  
  28. if (empty($_POST['nazwisko']) or !isset($_POST['nazwisko']))
  29. { $blad++; echo &#092;"Nie podano nazwiska
  30. &#092;"; }
  31.  
  32. if (empty($_POST['wiek']) or !isset($_POST['wiek']))
  33. { $blad++; echo &#092;"Nie podano wieku
  34. &#092;"; }
  35.  
  36. if (empty($_POST['xp']) or !isset($_POST['xp']))
  37. { $blad++; echo &#092;"Nie podano doświadczenia
  38. &#092;"; }
  39.  
  40. if (empty($_POST['k']) or !isset($_POST['k']))
  41. { $blad++; echo &#092;"Nie podano kondycji
  42. &#092;"; }
  43.  
  44. if (empty($_POST['r']) or !isset($_POST['r']))
  45. { $blad++; echo &#092;"Nie podano refleksu
  46. &#092;"; }
  47.  
  48. if (empty($_POST['s']) or !isset($_POST['s']))
  49. { $blad++; echo &#092;"Nie podano siły
  50. &#092;"; }
  51.  
  52. if (empty($_POST['ts']) or !isset($_POST['ts']))
  53. { $blad++; echo &#092;"Nie podano techniki startu
  54. &#092;"; }
  55.  
  56. if (empty($_POST['tj']) or !isset($_POST['tj']))
  57. { $blad++; echo &#092;"Nie podano techniki jazdy
  58. &#092;";}
  59.  
  60. else
  61. {
  62.  
  63. echo &#092;" tekst \";
  64.  
  65. }
  66.  
  67. ?>
lukasz_os
A nie mozesz przed wyslaniem sprawdzic w JS czy wszystkie pola sa wypelnione i zaleznie od tego wysylac(albo nie) formularz snitch.gif

Pozdrawiam
hiszpanespaniol
najprościej zliczyc ilośc elementów tablicy $_POST (która zawiera w sobie także nazwę formularza), i sprawdzic, czy jest równa tyle ile powinna. czyli funkcja count. dodatkowo zawsze lepiej sprawdzic czy któryś element nie jest ustawiony, niż sprawdzac, czy wszystkie są ustawione (czyli stosowac OR i ! zamiast AND) co Ty czynisz wlaśnie więc dobrze masz. czyli najprościej: użyj funkcji count do zliczenia elementów tablicy POST i wtedy wewnątrz if'a daj obliczenia swoje. Wyświetlanie błędów dla konkretnego pustego pola to już trochę trudniejsza sprawa. Ty to masz wykonane za pomocą if'ów, ale można to załatwic za pomocą porównywania dwóch tablic: Twojej napisanej w php i tej POST. każdy element po kolei przepuszczas przez pętlę, a jeśli któryś jest nie ustawiony w tej drugiej tablicy, to wtey podstawiasz nazwę pola do szablonu 'nie wypełniono pola '.$pole_puste

wybacz mi brak polskiej literki "ci" ale skrót wywołuje co innego.
stefik4
DO sprawdzania formularzy za pomoca JS znalazłem na dysku taki kod:

  1. <script type="text/javascript">
  2. // <![CDATA[
  3. function sprawdz(formularz)
  4. {
  5. for (i = 0; i < formularz.length; i++)
  6. {
  7. var pole = formularz.elements[i];
  8. if (!pole.disabled && !pole.readonly && (pole.type == "text" || pole.type == "password" || pole.type == "textarea") && pole.value == "")
  9. {
  10. alert("Proszę wypełnić wszystkie pola!");
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. // ]]>


Jednak nie działa on na mojej stronie ;/

Osobiście wolałbym dać to sprawdznie w pliku php bo w indexie mam kilak tych kalkolatorów i jakbym dał takie sprawdzanie w JS to trzeba by wszyskie polka wszykich kalkulatorow usupelnic a nie tylko tego oc chche wykorzystac.

Podpowie ktoś jak to napisać w PHPku ?
lukasz_os
Co do kodu w JS to jest on zle napisany biggrin.gif
  1. <script type="text/javascript">
  2. // <![CDATA[
  3. function sprawdz(formularz)
  4. {
  5. var validity=true;
  6. for (i = 0; i < formularz.length; i++)
  7. {
  8. var pole = formularz.elements[i];
  9. if (!pole.disabled && !pole.readonly && (pole.type == "text" || pole.type == "password" || pole.type == "textarea") && pole.value == "")
  10. {
  11. validity=false;
  12. alert("Proszę wypełnić wszystkie pola!");
  13. return false;
  14. break;
  15. }
  16. }
  17. if(validity==true){formularz.submit();}
  18. }
  19. // ]]>
  20. <form action='1.htm' name='form1' method='post'>
  21. <input type='text' name='jakis_input' value='' />
  22. <input type='button' value='Wyślij' onclick="javascript:sprawdz(form1);" />
  23. </form>

Nie musisz sprawdzac wszystkich formularzy tylko ten co wysylasz biggrin.gif

Pozdrawiam.
stefik4
Lukasz_os poprawiłem ten kod wrzuciłem na serwa iii ... wykasuje ostrzeżenie ale jak sie kliknie ok to przejdzie do tego co miało przejsc ;p

Dowód> http://przystanek9.pl/strona/
lukasz_os
Bo masz input wysylajacy typu submit a powinno byc button biggrin.gif

Pozdrawiam.
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.