Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Błąd przy warunku if
stefik4
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


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


Ten post edytował stefik4 10.12.2008, 19:34:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
lukasz_os
post
Post #2





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

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


A nie mozesz przed wyslaniem sprawdzic w JS czy wszystkie pola sa wypelnione i zaleznie od tego wysylac(albo nie) formularz (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
hiszpanespaniol
post
Post #3





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

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


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.
Go to the top of the page
+Quote Post
stefik4
post
Post #4





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


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 ?
Go to the top of the page
+Quote Post
lukasz_os
post
Post #5





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

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


Co do kodu w JS to jest on zle napisany (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post
stefik4
post
Post #6





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


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/
Go to the top of the page
+Quote Post
lukasz_os
post
Post #7





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

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


Bo masz input wysylajacy typu submit a powinno byc button (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Pozdrawiam.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 09:54