Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sprawdzanie pustych pól formularza
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


Witam, na samym poczatku chciałbym poinformować że przegladałem forum i znalazłem bardzo dużo informacji, ale niestety nie potrafiłem ich wykorzystać w swoim formularzu.

A więc mój problem wyglada następująco. Mam zrobiony koszyk, z którego mam możliwość składania zamówienia. Zamówienie zrobiłem na dwa sposoby. Jak użytkownik jest zalogowany to dane do formularza są wstawiane automatycznie i użytkownik nie ma mozliwości edycji, więc tutaj nie potrzebuje sprawdzania danych. I drugi sposób: Jak użytkownik nie jest zalogowany to dane do zamówienia trzeba wprowadzać z palca i tutaj walidacja danych jest bardzo potrzebna, szczególnie email, ponieważ na adres mailowy jest wysyłana wiadomość dotycząca zamówienia.

Oto kod od zamówienia.:

  1. .....
  2. if(isset($_SESSION['login']))
  3. {
  4.  
  5. echo "
  6. <style type=\"text/css\">
  7. tr:nth-child(odd) {background-color:#2b5584;}
  8. tr:nth-child(even) {background-color:#eef2f6;}
  9. </style>
  10. <p><form action=\"?dzial=zamowienie_zatwierdzenie\" method=\"get\"><table border=\"1\" class=\"m-tabela\" width=\"100%\">
  11. <input type=\"hidden\" name=\"dzial\" value=\"zamowienie_zatwierdzenie\" />
  12. <input type=\"hidden\" name=\"imie\" value=\"".$_SESSION['imie']."\">
  13. <input type=\"hidden\" name=\"mail\" value=\"".$_SESSION['mail']."\">
  14. <input type=\"hidden\" name=\"nazwisko\" value=\"".$_SESSION['nazwisko']."\">
  15. <input type=\"hidden\" name=\"adres\" value=\"".$_SESSION['adres']."\">
  16. <input type=\"hidden\" name=\"kontakt\" value=\"".$_SESSION['kontakt']."\">
  17. <input type=\"hidden\" name=\"pr1\" value=\"".$towary[0]."\">
  18. <input type=\"hidden\" name=\"pr2\" value=\"".$towary[1]."\">
  19. <input type=\"hidden\" name=\"pr3\" value=\"".$towary[2]."\">
  20. <input type=\"hidden\" name=\"pr4\" value=\"".$towary[3]."\">
  21. <input type=\"hidden\" name=\"pr5\" value=\"".$towary[4]."\">
  22. <input type=\"hidden\" name=\"pr6\" value=\"".$towary[5]."\">
  23. <input type=\"hidden\" name=\"cena\" value=\"".$suma."\">
  24. <tr><td width=\"10%\">Imię:</td><td>".$_SESSION['imie']."</td></tr>
  25. <tr><td>Nazwisko:</td><td>".$_SESSION['nazwisko']."</td></tr>
  26. <tr><td>Adres:</td><td>".$_SESSION['adres']."</td></tr>
  27. <tr><td>Kontakt:</td><td>".$_SESSION['kontakt']."</td></tr>
  28. <tr><td>Mail:</td><td>".$_SESSION['mail']."</td></tr>
  29. <tr><td></td><td><input type=\"submit\" class=\"m-idz\" value=\"Zamów\" />
  30. </form>
  31.  
  32. </table></p>
  33. ";
  34. }
  35. else{
  36. echo "
  37. <style type=\"text/css\">
  38. tr:nth-child(odd) {background-color:#2b5584;}
  39. tr:nth-child(even) {background-color:#eef2f6;}
  40. </style>
  41. <p><form action=\"?dzial=zamowienie_zatwierdzenie\" method=\"post\"><table border=\"1\" class=\"m-tabela\" width=\"100%\">
  42. <input type=\"hidden\" name=\"dzial\" value=\"zamowienie_zatwierdzenie\" />
  43. <input type=\"hidden\" name=\"pr1\" value=\"".$towary[0]."\">
  44. <input type=\"hidden\" name=\"pr2\" value=\"".$towary[1]."\">
  45. <input type=\"hidden\" name=\"pr3\" value=\"".$towary[2]."\">
  46. <input type=\"hidden\" name=\"pr4\" value=\"".$towary[3]."\">
  47. <input type=\"hidden\" name=\"pr5\" value=\"".$towary[4]."\">
  48. <input type=\"hidden\" name=\"pr6\" value=\"".$towary[5]."\">
  49. <input type=\"hidden\" name=\"cena\" value=\"".$suma."\">
  50. <tr><td width=\"10%\">Imię:</td><td><input type=\"text\" name=\"imie\" value=\"\"></td></tr>
  51. <tr><td>Nazwisko:</td><td><input type=\"text\" name=\"nazwisko\" value=\"\"></td></tr>
  52. <tr><td>Adres:</td><td><input type=\"text\" name=\"adres\" value=\"\"></td></tr>
  53. <tr><td>Kontakt:</td><td><input type=\"text\" name=\"kontakt\" value=\"\"></td></tr>
  54. <tr><td>Mail:</td><td><input type=\"text\" name=\"mail\" value=\"\"></td></tr>
  55. <tr><td></td><td><input type=\"submit\" class=\"m-idz\" name=\"gotowe\" value=\"Zamów\" />
  56. </form>
  57.  
  58. </table></p>";
  59. }


A to skrypt do którego leci zamówienie.

  1. $imie = $_GET['imie'];
  2. $nazwisko = $_GET['nazwisko'];
  3. $adres = $_GET['adres'];
  4. $kontakt = $_GET['kontakt'];
  5. $email = $_GET['mail'];
  6. $pr1 = $_GET['pr1'];
  7. $pr2 = $_GET['pr2'];
  8. $pr3 = $_GET['pr3'];
  9. $pr4 = $_GET['pr4'];
  10. $pr5 = $_GET['pr5'];
  11. $pr6 = $_GET['pr6'];
  12. $cena = $_GET['cena'];
  13.  
  14.  
  15.  
  16. $zapytanie1="INSERT INTO `zamowienie` (`imie`,`nazwisko`,`adres`,`telefon`,`cena`,`produkt1`,`produkt2`,`produkt3`
    ,`produkt4`,`produkt5`,`produkt6`,`zaplata`) VALUES ('$imie','$nazwisko','$adres','$kontakt','$cena','$pr1','$pr2','$pr3','$pr4','$pr5','$pr6','NIE')"
    ;
  17.  
  18. $temp=mysql_query($zapytanie1) or die("Wystąpił błąd" );
  19.  
  20. echo('Zamówienie zostało złożone');
  21. // Wysyłanie maila do zamawiącego
  22. include("phpmailer/class.phpmailer.php");
  23. include("phpmailer/class.smtp.php");
  24.  
  25. $mail = new PHPMailer();
  26.  
  27. $body = eregi_replace("[\]",'',$body);
  28.  
  29. $mail->IsSMTP();
  30. $mail->SMTPAuth = true; // enable SMTP authentication
  31. $mail->SMTPSecure = "ssl"; // sets the prefix to the servier
  32. $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
  33. $mail->Port = 465; // set the SMTP port
  34.  
  35. $mail->Username = "kontodopracydyplomowej@gmail.com"; // GMAIL username
  36. $mail->Password = "*****"; // GMAIL password
  37.  
  38. $mail->From = "kontodopracydyplomowej@gmail.com";
  39. $mail->FromName = "";
  40. $mail->Subject = "Zamówienie";
  41. $mail->AltBody = ""; //Text Body
  42. $mail->WordWrap = 50; // set word wrap
  43.  
  44. $text_body = "Witam\n\n";
  45. $text_body .= "Drogi użytkowniku, złożyłeś zamówienie na nastepujące produkty:\n\n";
  46. $text_body .= "".$pr1."\n\n";
  47. $text_body .= "".$pr2."\n\n";
  48. $text_body .= "".$cena."\n\n";
  49.  
  50. $mail->Body = $text_body;
  51. $mail->AddAddress($email);
  52.  
  53.  
  54. if(!$mail->Send()) {
  55. echo "Mailer Error: " . $mail->ErrorInfo;
  56. } else {
  57. echo "Message has been sent";
  58. }
  59.  
  60. unset($_SESSION["koszyk"]);
  61. header("Refresh:3; url=?dzial=main");


Wiem, że taki temat był poruszany nie pierwszy raz ale nie potrafie przełożyć tamtych rozwiązań na mój problem. Dziękuje za pomoc. Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
. Jak użytkownik jest zalogowany to dane do formularza są wstawiane automatycznie i użytkownik nie ma mozliwości edycji, więc tutaj nie potrzebuje sprawdzania danych
W wiekszym błędzie już być nie mogleś (IMG:style_emoticons/default/winksmiley.jpg)

Co do sprawdzania:
robisz
if (empty(jakiespole)) die('Jol, ziom, wypelnij mnie');
najprostrza forma (IMG:style_emoticons/default/smile.gif)
Jak ją opanujesz to przejdziemy dalej
Go to the top of the page
+Quote Post
Barcelona
post
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


Cytat(nospor @ 17.05.2010, 11:59:27 ) *
W wiekszym błędzie już być nie mogleś (IMG:style_emoticons/default/winksmiley.jpg)

Pewnie chodzi Ci o to że dane można podstawić pod wartości GET w linku ? Faktycznie można tak pozmieniać dane ale tą strone robie do inż. wiec tylko ja będę z niej korzystał.

co do tego ifa, to zrobiłem to tak:
  1. if (empty($imie)) {
  2. die ('Pole "imie" jest puste');
  3. }


I teraz jak pole imie będzie puste to wyswietli wiadomość i zatrzyma dlasze odczytywanie skyptu i niby wszystko jest OK ale ja swoja stronke robie na takiej zasadzie że w indexie mam zrobionego switcha w którym otwietam poszczególne strony, jest to dość wygodne rozwiązanie ale przez to kiedy na kompilator natrafi na polecenie die wtedy przestaje wgrywać reszte strony. A wygląda to tak:

(IMG:http://iv.pl/images/99732993825924745652.jpg)

Nie wgrywa się kod, który znajduje się pod poleceniem die

Dzięki za szybką odpowiedź

Ten post edytował Barcelona 17.05.2010, 11:28:16
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




die() przerywa działanie programu więc nic więcej po nim się nie wykona. Najlepiej będzie jeśli utworzysz sobie tablicę z błędami np.:
  1. $errors = array();

i podczas sprawdzania, jeśli dane są wpisane błędnie, dopiszesz do tablicy błąd np.:
  1. if (nie_podano_czegos) {
  2. $errors[] = 'Podaj cos!';
  3. }

Następnie sprawdzasz czy są jakieś błędy (rozmiar tablicy będzie > 0):
  1. if (count($errors) == 0) {
  2. // zrób coś bo wszystko jest OK
  3. }
  4. else {
  5. echo 'Wystąpiły błędy!';
  6.  
  7. // wypisz zawartość tablicy
  8. }

Tyle.

Ten post edytował phpion 17.05.2010, 11:29:29
Go to the top of the page
+Quote Post
Barcelona
post
Post #5





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


@phpion wiem że napisałeś to w bardzo jasny sposób ale troche gupie sie w tym.
Po I to twój skrypt sprawdza czy są puste pola
  1. if (count($errors) == 0) {
  2. // zrób coś bo wszystko jest OK
  3. }
  4. else {
  5. echo 'Wystąpiły błędy!';
  6.  
  7. // wypisz zawartość tablicy
  8. }


To wyświetla tylko informacje że instnieją puste pola ale skrypt pójdzie dalej i wyśle puste pola do bazy danych

Ogólnie pomysł mi się podoba ale będę miał problemy z jego wdrożeniem.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




// zrób coś bo wszystko jest OK
w to miejsce masz wstawic to co ma sie wykonac gdy wszystko jest ok. A ty tam zostawiles jak bylo a caly skrypt pewnie jak lecial nizej tak leci.
Go to the top of the page
+Quote Post
Barcelona
post
Post #7





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

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


Udało się zrobić przed pracą (IMG:style_emoticons/default/smile.gif) Na szczęscie wszystko dobrze działa i teraz formularz sprawdza pola. Jeszcze raz dzieki za pomoc

Ten post edytował Barcelona 17.05.2010, 12:00:20
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: 4.10.2025 - 03:01