Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] walidacja formularza + reszta kodu
Forum PHP.pl > Forum > Przedszkole
kononowicz
Mam problem z połaczeniem kodu z walidacją formularza z kodem zapisujacym dane do pliku txt. Nie moge zrobic aby jezeli walidacja przeszła dobrze to ma zapisac dane do pliku. Walidację nie napisałem sam dlatego mam problem... ale nawet gdybym jakos napisał sam to też pewnie coś byloby nie tak tongue.gif


walidacja:
  1. <?php
  2. if (isset($_POST['submit']))
  3. {
  4. if ($_POST['persona']!='')
  5.  {
  6. if (!preg_match('/^[A-ZŁ]([a-ząćęłń󜼿])+ ([A-ZŁ]([a-ząćęłń󜼿])+)$$/', $_POST['persona']))
  7. $personaWalidacja = '<div id=walidacja>Podano nieprawodłowe dane. Format: "Imię Nazwisko"</div>';
  8.  }
  9. else
  10. $personaWalidacja = '<div id=walidacja>Nie podano Imienia i Nazwiska</div>';
  11.  
  12. if (trim($_POST['temat'])=='')
  13. $tematWalidacja = '<div id=walidacja>Nie wpisano tematu</div>';
  14.  
  15. if (trim($_POST['tresc'])=='')
  16. $trescWalidacja = '<div id=walidacja>Nie wpisano treści wiadomości</div>';
  17.  
  18. if ($_POST['email']!='')
  19.  {
  20.  if (!preg_match('/^(([a-z0-9_]+)-*.?)+@[a-z0-9](([a-z0-9]+)-?_?.?)+([a-z]{2,})$/', $_POST['email']))
  21.  $emailWalidacja = '<div id=walidacja>Podano nieprawodłowy adres e-mail</div>';
  22.  }
  23.  else
  24.  $emailWalidacja = '<div id=walidacja>Nie podano adresu e-mail</div>';
  25.  
  26.  
  27.  }
  28. ?>



zapisanie wiadomosci z formularza do pliku
  1. <?php
  2. function kontakt($ip, $email, $temat, $tresc, $persona)
  3. {
  4. $ip = $REMOTE_ADDR;
  5. $data = date('d-m-Y');
  6. $godz = date('H:i:s');
  7. $dane = "n<b>data:</b> $data <br>
  8. <b>godzina:</b> $godz<br>n
  9. <b>e-mail:</b> $email<br>n
  10. <b>Imie i Nazwisko:</b> $persona<br>n
  11. <b>IP:</b> $ip<br>n
  12. <b>temat:</b> $temat<br>n
  13. <b>treść:</b> $tresc<br><br>n
  14. n<img src=images/podzialka.jpg><br><br>n";
  15. $plikAdr = "wiadomosci/wiadomosci.txt";
  16. $plik = @fopen($plikAdr, "a");
  17. flock($plik, 2);
  18. fwrite($plik, $dane);
  19. flock($plik, 3);
  20. fclose($plik);
  21. print "<br><div id=uwaga>Pytanie zostało wysłane,<br>dziękuję</div>";
  22. }
  23.  
  24. kontakt($ip, $email, $temat, $tresc, $persona);
  25. ?>



sam formularz
  1. <?php
  2. print'  <br>
  3. <font size=4><img src="images/strzalka.jpg"> formularz </font><br>
  4. <br>
  5. <center>
  6.  
  7. <div id="uwaga"> Aby zadać pytanie wyślij formularz<br>
  8. odpowiedĽ prześlemy mailem <BR></div>
  9. <BR><img src="images/form.jpg">
  10. <form action="formularz.php" method=post id="formform">
  11. <p>
  12. <label for="temat">temat:</label>
  13. <input type=text name=temat class="tekst">
  14. '; if ($tematWalidacja) echo ($tematWalidacja);
  15.  print' </p>
  16. <p>
  17. <label for="persona">Imie i Nazwisko</label>
  18. <input type=text name=persona class="tekst">
  19. '; if ($personaWalidacja) echo ($personaWalidacja);
  20.  print' </p>
  21. <p>
  22. <label for="email">e-mail:</label>
  23. <input type=text name=email class="tekst">
  24. '; if ($emailWalidacja) echo ($emailWalidacja);
  25.  print' </p>
  26. <p><br>
  27. <label for="tresc">treść:</label><br>
  28. <textarea name="tresc" onKeyUp="limit(this,255);" onKeyDown="limit(this,200);"></textarea>
  29. '; if ($trescWalidacja) echo ($trescWalidacja);
  30. print'</p>
  31.  <p>
  32.  <input type=reset value="wyczyść" name="reset" class="przycisk">
  33.  <input type=submit value="wyślij" name="submit" class="przycisk">
  34. </p>
  35. </form>
  36. </center>';
  37. ?>


jak podczepic wszystko do siebie ,żeby było jedną całościa?questionmark.gif? ps. jest godzina 4:50 w nocy wiec troche juz nad tym mysle tongue.gif
Cienki1980
Po pierwsze primo: po co przekazujesz do funkcji kontakt zmienną $ip, skoro i tak pobierasz ją w funkcji questionmark.gif

Po drugie primo: w wywołaniu funkcji kontakt zmień $tresc na $_POST['tresc'] i analogicznie tak wszystkie zmienne przekazywane do funkcji.

Po trzecie primo: w walidacji brakuje czegoś co będzie pokazywało, czy możesz dodać wpis, bo jak narazie po prostu sprawdzasz czy poszczególne części są OK.... ale brakuje jakiegoś if'a który ostatecznie sprawdzi czy całość jest OK i doda wpis.

Po czwarte primo: jak poprawisz powyższe punkty, sklej te kawałki kodu razem w jednym pliku w kolejności:

- kod funkcji ( chociaż on może być w dowolnym miejscu )
- kod walidacji
- kod forumlarza.

Ja tak zrobiłem i u mnie zadziałało.
kononowicz
Cytat(Cienki1980 @ 14.01.2007, 10:06:13 ) *
Po trzecie primo: w walidacji brakuje czegoś co będzie pokazywało, czy możesz dodać wpis, bo jak narazie po prostu sprawdzasz czy poszczególne części są OK.... ale brakuje jakiegoś if'a który ostatecznie sprawdzi czy całość jest OK i doda wpis.


no własnie jak powinna wyglądać ta pętla questionmark.gif


Cytat(Cienki1980 @ 14.01.2007, 10:06:13 ) *
Po drugie primo: w wywołaniu funkcji kontakt zmień $tresc na $_POST['tresc'] i analogicznie tak wszystkie zmienne przekazywane do funkcji.


  1. <?php
  2. kontakt($_POST['email'], $_POST['temat'], $_POST['tresc'], $_POST['persona']);
  3. ?>


o to chodzi questionmark.gif
Cienki1980
Tam nie ma żadnej pętli ... tylko same if'y.

Możesz dodać sobie na początku jakąś zmienną ... np $check=0;

W przypadku gdy coś jest nie tak, wypisujesz komunikat ... a jeżeli jest dobrze to zwiększ $check o 1.

Na końcu sprawdź czy $check ma odpowiednią wartość ... ( podpowiem że powinna być równa 4 - zwiększenie o jeden na każde pole formularza ) ... i albo wykonujesz funkcję kontakt() albo nie.

EDIT: wywołanie funkcji poprawiłeś dobrze.
kononowicz
dzieki... oto cały kod do walidacji danych z formularza... nie działa mi jedynie wyswietlanie ip :/ (ps. musiałem zrobic jak byłoczyli wstawic w argument funkcji $ip)

  1. <?php
  2. $personaWalidacja = null;
  3. $adresWalidacja = null;
  4. $tematWalidacja = null;
  5. $trescWalidacja = null;
  6. $emailWalidacja = null;
  7.  
  8. function kontakt($email, $temat, $tresc, $persona)
  9. {
  10. $ip = $REMOTE_ADDR;
  11. $data = date('d-m-Y');
  12. $godz = date('H:i:s');
  13. $dane = "n<b>data:</b> $data <br>
  14. <b>godzina:</b> $godz<br>n
  15. <b>e-mail:</b> $email<br>n
  16. <b>Imie i Nazwisko:</b> $persona<br>n
  17. <b>IP:</b> $ip<br>n
  18. <b>temat:</b> $temat<br>n
  19. <b>treść:</b> $tresc<br><br>n
  20. n<img src=images/podzialka.jpg><br><br>n";
  21. $plikAdr = "wiadomosci/wiadomosci.txt";
  22. $plik = @fopen($plikAdr, "a");
  23. flock($plik, 2);
  24. fwrite($plik, $dane);
  25. flock($plik, 3);
  26. fclose($plik);
  27. print "<br><div id=uwaga>Pytanie zostało wysłane,<br>dziękuję</div>";
  28. }
  29.  
  30.  
  31.  
  32. if (isset($_POST['submit']))
  33. {
  34. $check=0;
  35. if ($_POST['persona']!='')
  36.  {
  37. if (!preg_match('/^[A-ZŁ]([a-ząćęłń󜼿])+ ([A-ZŁ]([a-ząćęłń󜼿])+)$$/', $_POST['persona']))
  38. $personaWalidacja = '<div id=walidacja>Podano nieprawodłowe dane. Format: "Imię Nazwisko"</div>';
  39. else
  40. $check++;
  41.  }
  42. else
  43. $personaWalidacja = '<div id=walidacja>Nie podano Imienia i Nazwiska</div>';
  44.  
  45.  
  46.  
  47.  
  48. if (trim($_POST['temat'])=='')
  49. $tematWalidacja = '<div id=walidacja>Nie wpisano tematu</div>';
  50. else
  51. $check++;
  52.  
  53. if (trim($_POST['tresc'])=='')
  54. $trescWalidacja = '<div id=walidacja>Nie wpisano treści wiadomości</div>';
  55. else
  56. $check++;
  57.  
  58. if ($_POST['email']!='')
  59.  {
  60.  if (!preg_match('/^(([a-z0-9_]+)-*.?)+@[a-z0-9](([a-z0-9]+)-?_?.?)+([a-z]{2,})$/', $_POST['email']))
  61.  $emailWalidacja = '<div id=walidacja>Podano nieprawodłowy adres e-mail</div>';
  62. else
  63.  $check++;
  64. }
  65. else
  66. $emailWalidacja = '<div id=walidacja>Nie podano adresu e-mail</div>';
  67.  
  68.  
  69.  }
  70.  
  71. if($check==4)
  72. kontakt($_POST['email'], $_POST['temat'], $_POST['tresc'], $_POST['persona']);
  73.  
  74.  
  75.  
  76. print'  <br>
  77. <font size=4><img src="images/strzalka.jpg"> formularz </font><br>
  78. <br>
  79. <center>
  80.  
  81. <div id="uwaga"> Aby zadać pytanie wyślij formularz<br>
  82. odpowiedĽ prześlemy mailem <BR></div>
  83. <BR><img src="images/form.jpg">
  84. <form action="formularz.php" method=post id="formform">
  85. <p>
  86. <label for="temat">temat:</label>
  87. <input type=text name=temat class="tekst">
  88. '; if ($tematWalidacja) echo ($tematWalidacja);
  89.  print' </p>
  90. <p>
  91. <label for="persona">Imie i Nazwisko</label>
  92. <input type=text name=persona class="tekst">
  93. '; if ($personaWalidacja) echo ($personaWalidacja);
  94.  print' </p>
  95. <p>
  96. <label for="email">e-mail:</label>
  97. <input type=text name=email class="tekst">
  98. '; if ($emailWalidacja) echo ($emailWalidacja);
  99.  print' </p>
  100. <p><br>
  101. <label for="tresc">treść:</label><br>
  102. <textarea name="tresc" onKeyUp="limit(this,255);" onKeyDown="limit(this,200);"></textarea>
  103. '; if ($trescWalidacja) echo ($trescWalidacja);
  104. print'</p>
  105.  <p>
  106.  <input type=reset value="wyczyść" name="reset" class="przycisk">
  107.  <input type=submit value="wyślij" name="submit" class="przycisk">
  108. </p>
  109. </form>
  110. </center>';
  111. ?>
dr_bonzo
Prosze dodac odpowiedni tag to tytulu topika, tak jak stoi w reg. Przedszkola.
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.