Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] walidacja formularza + reszta kodu, jak to połączyć??
kononowicz
post 14.01.2007, 04:51:19
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 12.11.2006
Skąd: Białystok

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


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

Ten post edytował kononowicz 14.01.2007, 16:13:23


--------------------
gdy moderator śpi - budzą się demony ]:->
Go to the top of the page
+Quote Post
Cienki1980
post 14.01.2007, 10:06:13
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.


--------------------
404
Go to the top of the page
+Quote Post
kononowicz
post 14.01.2007, 14:44:38
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 12.11.2006
Skąd: Białystok

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


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

Ten post edytował kononowicz 14.01.2007, 14:49:40


--------------------
gdy moderator śpi - budzą się demony ]:->
Go to the top of the page
+Quote Post
Cienki1980
post 14.01.2007, 14:51:57
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.

Ten post edytował Cienki1980 14.01.2007, 14:52:49


--------------------
404
Go to the top of the page
+Quote Post
kononowicz
post 14.01.2007, 15:25:40
Post #5





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 12.11.2006
Skąd: Białystok

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


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


Ten post edytował kononowicz 14.01.2007, 16:19:48


--------------------
gdy moderator śpi - budzą się demony ]:->
Go to the top of the page
+Quote Post
dr_bonzo
post 14.01.2007, 15:51:16
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Prosze dodac odpowiedni tag to tytulu topika, tak jak stoi w reg. Przedszkola.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 06:54