Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Problem z walidacją formularza
--Marian--
post
Post #1





Goście







Witam,
mam problem z walidacją formularza.
Stworzyłem formularz który dodaje mi wydarzenia do bazy.
Problem w tym, ze nawet jak nic nie wpiszę do formularza, to mi wysyła go i wyswietla komunikat że dodało wydarzenie do bazy,
czego oczywisscie fizycznie nie wykonało. Jeśli podam wszystkie pola, to wydarzenie normalnie jest dodawane do bazy,
chciałbym też mieć możliwość wypełnienia nie wszystkich pól formularzai żeby dodawane zostało wydarzenie do bazy z mniejszą iloscią danych.
Przesyłam kody:

[formularz]

  1.  
  2. <form method="GET" action="dodawanieNiestac.php">
  3. <div class="form">
  4. <legend>Dodaj Wydarzenie</legend>
  5.  
  6. <span>Nazwa Wydarzenia</span>
  7. <input type="text" class="add" name="nazwa" />
  8.  
  9. <span>Inna informacja</span>
  10. <input type="text" class="add" name="inna"/>
  11.  
  12. <span>Numer Zjazdu</span>
  13. <input type="text" class="add" name="numerZ"/>
  14.  
  15. <span>Data Rozpoczęcia</span>
  16. <input type="text" class="add" name="dataR"/>
  17.  
  18. <span>Data Zakończenia</span>
  19. <input type="text" class="add" name="dataZ"/>
  20.  
  21. <input type="submit" class="button" value="Wyślj" />
  22. </div>
  23. </form>
  24.  
  25.  




[Obrabianie formularza]


  1.  
  2. $nazwa=$_GET['nazwa'];
  3. $inna=$_GET['inna'];
  4. $numerZ=$_GET['numerZ'];
  5. $dataR=$_GET['dataR'];
  6. $dataZ=$_GET['dataZ'];
  7.  
  8. $data = $dataR;
  9.  
  10.  
  11.  
  12.  
  13. if(isset($_GET['nazwa']) && isset($_GET['dataR']) && isset($_GET['dataZ']) && isset($_GET['numerZ']))
  14. {
  15.  
  16. $result = mysqli_query($con,"SELECT * FROM niestacjonarne WHERE wydarzenie='".$nazwa."' AND data='".$data."'");
  17. $row=mysqli_fetch_array($result,MYSQLI_NUM);
  18.  
  19. if ($row == 0 )
  20. {
  21. while ($data <= $dataZ)
  22. {
  23. mysqli_query($con,"INSERT INTO niestacjonarne (numer_zjazdu, data, wydarzenie) VALUES ('".$numerZ."', '".$data."', '".$nazwa."')");
  24.  
  25. $data = strtotime($data . '+ 1 day');
  26. }
  27. echo "Dodałeś nowe wydarzenie do bazy !";
  28. echo"<p><a href='logowanie.php'>Powrót</a></p>";
  29.  
  30. }
  31. else
  32. {
  33. require_once('logowanie.php');
  34. echo "Istnieje już takie wydarzenie w tym dniu !";
  35. }
  36.  
  37. }
  38. elseif(isset($_GET['nazwa']) && isset($_GET['dataR']) && isset($_GET['dataZ']) && isset($_GET['inna']) && isset($_GET['numerZ']))
  39. {
  40. $result = mysqli_query($con,"SELECT * FROM niestacjonarne WHERE wydarzenie='".$nazwa."' AND data='".$data."'");
  41. $row=mysqli_fetch_array($result,MYSQLI_NUM);
  42.  
  43. if ($row == 0 )
  44. {
  45. while ($data <= $dataZ)
  46. {
  47. mysqli_query($con,"INSERT INTO niestacjonarne (numer_zjazdu, data, wydarzenie, dodatek) VALUES ('".$numerZ."', '".$data."', '".$nazwa."', '".$inna."')");
  48.  
  49. $data = strtotime($data . '+ 1 day');
  50. }
  51. echo "Dodałeś nowe wydarzenie do bazy !";
  52. echo"<p><a href='logowanie.php'>Powrót</a></p>";
  53.  
  54. }
  55. else
  56. {
  57. require_once('logowanie.php');
  58. echo "Istnieje już takie wydarzenie w tym dniu !";
  59. }
  60. }
  61.  
  62.  
  63. elseif(isset($_GET['nazwa']) && isset($_GET['dataR']) && isset($_GET['dataZ']))
  64. {
  65. $result = mysqli_query($con,"SELECT * FROM niestacjonarne WHERE wydarzenie='".$nazwa."' AND data='".$data."'");
  66. $row=mysqli_fetch_array($result,MYSQLI_NUM);
  67.  
  68. if ($row == 0 )
  69. {
  70. while ($data <= $dataZ)
  71. {
  72. mysqli_query($con,"INSERT INTO niestacjonarne (data, wydarzenie) VALUES ('".$data."', '".$nazwa."')");
  73.  
  74. $data = strtotime($data . '+ 1 day');
  75. }
  76. echo "Dodałeś nowe wydarzenie do bazy !";
  77. echo"<p><a href='logowanie.php'>Powrót</a></p>";
  78.  
  79. }
  80. else
  81. {
  82. require_once('logowanie.php');
  83. echo "Istnieje już takie wydarzenie w tym dniu !";
  84. }
  85. }
  86.  
  87. else
  88. {
  89. require_once('logowanie.php');
  90.  
  91. }
  92.  
  93.  
  94.  
  95.  
  96.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
gitbejbe
post
Post #2





Grupa: Zarejestrowani
Postów: 516
Pomógł: 63
Dołączył: 27.08.2012

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


przecież napisałem Tobie....
Twój problem to
  1. if(isset($_GET['nazwa']) && isset($_GET['dataR']) && isset($_GET['dataZ']) && isset($_GET['numerZ']))


za każdym razem to ten warunek u Ciebie decyduje o tym, co robić dalej. Po za tym, zobacz jak wygląda URL po wysłaniu pustego formularza. jeśli sa w nim wypisane zmienne bez wartości to się nie dziw, ze spełnia sie powyższy warunek bo zmienne GET istnieją (łał)
Kolejnym błędem, jest sam ten skrypt. Nie chciałbym natrafić na "coś takiego", tym bardziej podawać w takim czymś swoje dane.

nie wiem tez dalczego napisałeś, że masz problem z walidajcą formularza, skoro Ty nic tak naprawdę nie walidujesz.
Kompletnie nic nie sprawdzasz, po za tym czy istnieją zmienne GET.

Napisałbym,żebyś przewertował manuala lub przeanalizować gotowe skrypty walidacji ale zrób do końca ten skrypt po swojemu a z czasem sam zobaczysz co to za potwór i może zmotywujesz się do większego wysiłku ;d

edit:

własnie... jeszcze jedno. Sprawdz - bo ja nie mam juz czasu a sam nie pamietam bo dawno dawno nie używałem GET, czy zmienne tworzą się w URL mimo tego, że sa puste. Jeśli tak to jest twój problem. Zamiast warunków sprawdzających czy te zmienne istnieją, sprawdz lepiej czy te zmienne posiadaja odpowiednie dane i po kłopocie. Tak powinieneś zrobić, skoro piszesz, że jest to "walidacja" ;p
po zakończeniu dodania do bazy, wstaw header("location: jakis_plik.php");
Mimo wszystko radziłbym Tobie zmienić GET na POST.

Ten post edytował gitbejbe 19.06.2013, 14:00:08
Go to the top of the page
+Quote Post

Posty w temacie


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: 30.12.2025 - 18:56