Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie pustych pól formularza
Forum PHP.pl > Forum > Przedszkole
Barcelona
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
nospor
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ś winksmiley.jpg

Co do sprawdzania:
robisz
if (empty(jakiespole)) die('Jol, ziom, wypelnij mnie');
najprostrza forma smile.gif
Jak ją opanujesz to przejdziemy dalej
Barcelona
Cytat(nospor @ 17.05.2010, 11:59:27 ) *
W wiekszym błędzie już być nie mogleś 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:



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

Dzięki za szybką odpowiedź
phpion
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.
Barcelona
@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.
nospor
// 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.
Barcelona
Udało się zrobić przed pracą smile.gif Na szczęscie wszystko dobrze działa i teraz formularz sprawdza pola. Jeszcze raz dzieki za pomoc
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.