Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sprawdzanie formularza
Forum PHP.pl > Forum > Przedszkole
musiek86
Mam taki oto fragment kodu który sprawdza m.in czy w bazie nie istnieje rekord z podana nazwa, loginem badz mailem. gdy wpisze nazwe która istnieje t owyskakuje odpowiednia informacja, gdy wpisze nazwe która nie istnieje to przechodzi dalej do sprawdzania maila i loginu i tu jest problem bo cokolwiek bym nie wpisał to wyskakuje ze juz istnieje, gdzie jest błąd?

  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. $szukaj_nazwy=mysql_query("SELECT COUNT(nazwa) FROM efora_zamowienia WHERE nazawa = '$nazwa'");
  7. $szukaj_loginu=mysql_query("SELECT COUNT(login) FROM efora_zamowienia WHERE login = '$login'");
  8. $szukaj_maila=mysql_query("SELECT COUNT(email) FROM efora_zamowienia WHERE email = '$email'");
  9.  
  10. if($nazwa == "" || $login == "" || $haslo == "" ||$haslo2 == "" || $email == "" )
  11. {
  12. echo "<br /><br /><center>Uwaga!!! <br> Pozostawiono puste pola.<br>Wpisz dane do wszystkich wymaganch pol oznaczonyvh (*) .</center>";
  13. }
  14. elseif($haslo <> $haslo2)
  15. {
  16. echo "Wpisane hasla nie sa identyczne, wroc i popraw ten blad!";
  17. }
  18. elseif($regulamin <> '1')
  19. {
  20. echo "Regulamin musi zostac zaakceptowany!";
  21. }
  22.  
  23. elseif($szukaj_nazwy > 0)
  24. {
  25. echo "Wybrana nazwa juz istnieje w bazie, zmien ja!";
  26. }
  27. elseif($szukaj_maila > 0)
  28. {
  29. echo "Wybrany adres email juz istnieje w bazie, zmien go!";
  30. }
  31. elseif($szukaj_loginu > 0)
  32. {
  33. echo "Wybrany login juz istnieje w bazie, zmien go!";
  34. }
  35. else
  36. {
  37. echo "Formularz zostal poprawnie wypelniony.<br>";
  38. }
  39. ?>
CuteOne
1. literówka nazawa = '$nazwa', nazwa = '$nazwa'
2. może najpierw sprawdzaj czy podano wszystkie dane a dopiero potem zapytania do sql?
musiek86
Nie zauwazyłem tej literówki - poprawiona, aczkolwiek nadal jest cos nie tak bo teraz o kazda nazwe jakabym nie wpisał to czepia sie ze istnieje w bazie a faktycznie jej nie ma...
vifus
A zadeklarowałeś w ogóle zmienne $nazwa, $email, $login ? jeśli tak - to pokaż jak.
musiek86
Naturalnie.
z pliku form.html dane przez formularz leca do pliku zamowienie.php. To co dawałem wczesniej to zawartosc pliku sprawdzanie_formularza.php

form.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Załóż własne forum</title>
  6. <link rel="stylesheet" type="text/css" href="view.css" media="all">
  7. <script type="text/javascript" src="view.js"></script>
  8.  
  9. </head>
  10. <body id="main_body" >
  11.  
  12.  
  13. <div id="form_container">
  14.  
  15.  
  16. <form id="form_387165" class="appnitro" method="post" action="zamowienie.php">
  17. <div class="form_description">
  18. <h2>Załóż własne forum</h2>
  19. <p></p>
  20. </div>
  21. <ul >
  22.  
  23. <li id="li_1" >
  24. <label class="description" for="element_1">Nazwa forum (tylko litery i cyfry)<font color="red">*</font> </label>
  25. <div>
  26. <input id="element_1" name="nazwa" class="element text small" type="text" maxlength="255" value=""/>.e-fora.eu
  27. </div>
  28. </li> <li id="li_2" >
  29. <label class="description" for="element_2">Login administratora<font color="red">*</font> </label>
  30. <div>
  31. <input id="element_2" name="login" class="element text small" type="text" maxlength="255" value=""/>
  32. </div>
  33. </li> <li id="li_3" >
  34. <label class="description" for="element_3">Hasło administratora<font color="red">*</font> </label>
  35. <div>
  36. <input id="element_3" name="haslo" class="element text small" type="password" maxlength="255" value=""/>
  37. </div>
  38. </li> <li id="li_4" >
  39. <label class="description" for="element_4">Powtórz hasło<font color="red">*</font> </label>
  40. <div>
  41. <input id="element_4" name="haslo2" class="element text small" type="password" maxlength="255" value=""/>
  42. </div>
  43. </li> <li id="li_5" >
  44. <label class="description" for="element_5">Adres e-mail<font color="red">*</font> </label>
  45. <div>
  46. <input id="element_5" name="email" class="element text small" type="text" maxlength="255" value=""/>
  47. </div>
  48. </li> <li id="li_6" >
  49. <label class="description" for="element_6"> </label>
  50. <li id="li_12" >
  51. <label class="description" for="element_12">Który wyraz nie pasuje do pozostałych: pies, kot, drzewo, koń<font color="red">*</font> </label>
  52. <div>
  53. <input id="element_12" name="antybot2" class="element text small" type="text" maxlength="255" value=""/>
  54. </div>
  55. </li>
  56. <span>
  57. <input type="hidden" name="antybot" value="1" />
  58.  
  59. <li >
  60. <input id="element_6_1" name="regulamin" class="element checkbox" type="checkbox" value="1" />
  61. <label class="choice" for="element_6_1">Akceptuje warunki <a href="http://e-fora.eu/index.php/regulamin" target="_blank">regulaminu</a><font color="red">*</font></label>
  62.  
  63.  
  64. </span>
  65. </li>
  66. <font color="red">*</font> Pola wymagane.
  67. <li class="buttons">
  68. <input type="hidden" name="form_id" value="387165" />
  69.  
  70. <input id="saveForm" class="button_text" type="submit" name="submit" value="Wyślij" />
  71. </li>
  72. </ul>
  73. </form>
  74.  
  75. </body>
  76. </html>


zamowienie.php
  1. <?php
  2. #wyświetlanie błędów w działaniu skryptu.
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. #zabezpieczenie antybotowe
  7. if( !isset( $_POST['antybot'] ) ) exit();
  8.  
  9. #zabezpieczenie antybotowe2
  10.  
  11.  
  12. #Zmienne przekazane formularzem z pliku formularz.html
  13. $regulamin=$_POST['regulamin'];
  14. $nazwa=$_POST['nazwa'];
  15. $login=$_POST['login'];
  16. $haslo=$_POST['haslo'];
  17. $haslo2=$_POST['haslo2'];
  18. $email=$_POST['email'];
  19. $ip=$_SERVER['REMOTE_ADDR'];
  20.  
  21. #Połaczenie z baza danych efora
  22. require_once("laczenie_z_baza.php");
  23.  
  24. #Sprawdzanie czy wszystkie pola w formularzu zostały wypełnione oraz czy haslo = haslo2
  25. require_once("sprawdzanie_formularza.php");
  26.  
  27. #tworzenie katalogu $nazwa i kopiowanie skryptu phpbb2 by przemo do niego
  28. require_once("kopiowanie_skryptu.php");
  29.  
  30. #tworzenie subdomeny
  31. require_once("tworzenie_subdomeny.php");
  32.  
  33. #szablon wysyłanej wiadomości (wraz z danymi z formularza) do admina serwisu oraz osoby tworzącej forum
  34. require_once("tresc_maila.php");
  35.  
  36. #Dodanie do bazy danych z zamowienia
  37. require_once("ksiegowanie_zamowienia.php");
  38.  
  39. #wysłanie maila do admina serwisu oraz założyciela forum z danymi z formularza
  40. require_once("wysylanie_maila.php");
  41.  
  42. #tu kod przenoszący usera wraz z wpisanymi przez niego danymi do instalacji skryptu (plik install.php)
  43. ?>
  44.  
  45. <html>
  46. <body>
  47. <form id="form_" class="appnitro" method="post" target="_self" action="../../<?php echo $nazwa ?>/install.php">
  48.  
  49. <input id="element_1" name="nazwa" class="element text small" type="hidden" maxlength="255" value="<?php echo $nazwa ?>"/>
  50. <input id="element_2" name="login" class="element text small" type="hidden" maxlength="255" value="<?php echo $login ?>"/>
  51. <input id="element_3" name="haslo" class="element text small" type="hidden" maxlength="255" value="<?php echo $haslo ?>"/>
  52. <input id="element_4" name="haslo2" class="element text small" type="hidden" maxlength="255" value="<?php echo $haslo2 ?>"/>
  53. <input id="element_5" name="email" class="element text small" type="hidden" maxlength="255" value="<?php echo $email ?>"/>
  54.  
  55. <input type="hidden" name="form_id" value="387165" />
  56. <input id="saveForm" class="button_text" type="submit" name="submit" value="Kontynuuj" />
  57. </form>
  58.  
  59. </body>
  60. </html>
vifus
Może spróbuj tak:

  1.  
  2. <?php
  3.  
  4. error_reporting( E_ALL );
  5. ini_set( 'display_errors', 1 );
  6.  
  7. $szukaj=mysql_query("SELECT * FROM efora_zamowienia WHERE `nazwa` = '$nazwa' AND `login`= '$login' AND `email`= '$email' LIMIT 1 ");
  8.  
  9.  
  10. if($nazwa == "" || $login == "" || $haslo == "" ||$haslo2 == "" || $email == "" )
  11. {
  12. echo "<br /><br /><center>Uwaga!!! <br> Pozostawiono puste pola.<br>Wpisz dane do wszystkich wymaganch pol oznaczonyvh (*) .</center>";
  13. }
  14. elseif($haslo <> $haslo2)
  15. {
  16. echo "Wpisane hasla nie sa identyczne, wroc i popraw ten blad!";
  17. }
  18. elseif($regulamin <> '1')
  19. {
  20. echo "Regulamin musi zostac zaakceptowany!";
  21. }
  22.  
  23. elseif($szukaj > 0)
  24. {
  25. echo "Wystąpił błąd!";
  26. }
  27.  
  28. else
  29. {
  30. echo "Formularz zostal poprawnie wypelniony.<br>";
  31. }
  32. ?>



Błąd prawdopodobnie był w tym, że zmienna $szukaj zawsze będzie pusta jeżeli przypisujesz jej wartości z bazy, musisz podać nazwę komórki np. $szukaj['nazwa']; , no chyba, że sprawdzasz ilość elementów - w tym przypadku powinno działać.
musiek86
Podałeś jeden bład niezaleznie od 3 wariantów co mnie nie zadowala, no ale cały czas szukałem i wreszcie mam rozwiazanie.
  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. $szukaj_nazwy=("SELECT `nazwa` FROM `efora_zamowienia` WHERE `nazwa`= '$nazwa'");
  7. $szukaj_maila=("SELECT `email` FROM `efora_zamowienia` WHERE `email`= '$email'");
  8. $zapytanie_o_nazwe= mysql_query($szukaj_nazwy);
  9. $wynik_zapytania_o_nazwe = mysql_fetch_assoc($zapytanie_o_nazwe);
  10. $zapytanie_o_maila= mysql_query($szukaj_maila);
  11. $wynik_zapytania_o_maila = mysql_fetch_assoc($zapytanie_o_maila);
  12.  
  13.  
  14.  
  15. if($nazwa == "" || $login == "" || $haslo == "" ||$haslo2 == "" || $email == "" )
  16. {
  17. echo "<center>Uwaga!!! Pozostawiono puste pola.<br>Wpisz dane do wszystkich wymaganch pol oznaczonyvh (*) .</center>";
  18. }
  19. elseif($haslo <> $haslo2)
  20. {
  21. echo "Wpisane hasla nie sa identyczne, wroc i popraw ten blad!";
  22. }
  23. elseif($regulamin <> '1')
  24. {
  25. echo "Regulamin musi zostac zaakceptowany!";
  26. }
  27.  
  28. elseif($nazwa == $wynik_zapytania_o_nazwe['nazwa'])
  29. {
  30. echo "Wybrana nazwa juz istnieje w bazie, zmien ja!";
  31. }
  32. elseif($email == $wynik_zapytania_o_maila['email'])
  33. {
  34. echo "Wybrany adres email juz istnieje w bazie, zmien go!";
  35. }
  36. else
  37. {
  38. echo "Formularz zostal poprawnie wypelniony.<br>";
  39. }
  40. ?>


Napotkałem kolejny problem, mam taka walidacje pola w formularzu:
  1. elseif (!ereg('^[a-z ]+$', $nazwa))
  2. {
  3. echo "Wpisana nazwa zawiera niedozwolone znaki. Dozwolone sa tylko male litery i cyfry bez polskich znakow.";
  4. }

Jak do tego dodać by to pole nie przyjmowało spacji? Chodzi o to ze to pole moze zawierać wyłacznie 1 wyraz a zdarzaja sie takie przypadki które wpisują mi tam 2 a nawet 3 wyrazy oddzielone spacja przez co skrypt mi sie wykłada.
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.