Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][TPL] przekazywanie zmiennych
Forum PHP.pl > Forum > Przedszkole
krystian1991x
Mam problem z formularzem rejestracji a konkretnie taki ustawiłem sobie żeby sprawdzało czy wszystkie pola zostały wypełnione oraz czy pola z hasłem oraz pola z email są takie same niestety coś tutaj nie gra Bo gdy za pierwszym razem wypełnię formularz to plik się przeładuje ale nie wyskoczy żaden komunikat :/ za drugim razem za to pokazuje mi tak jak by błąd z poprzedniego wypełnienia czyli jak w poprzednim niezgodne było hasło to wtedy wyskakuje mi błąd że pola z hasłem nie są identyczne o co tutaj chodzi ? Podaje kod PHP
  1. $login = mysql_escape_string($_POST['nick']);
  2. $password = mysql_escape_string($_POST['pw']);
  3. $rpw = mysql_escape_string($_POST['rpw']);
  4. $email = mysql_escape_string($_POST['email']);
  5. $remail = mysql_escape_string($_POST['remail']);
  6.  
  7. $login_use = mysql_query ("SELECT login FROM user WHERE login='$login'");
  8. $email_use = mysql_query ("SELECT email FROM user WHERE email='$email'");
  9.  
  10. if($_POST['register'] == 1) {
  11. if($login == "" && $password == "" && $rpw == "" && $email == "" && $remail == "")
  12. {
  13. $error_register = "bad_null";
  14. } else{
  15. if($pw == $rpw) {
  16.  
  17. $error_register = "bad_pw";
  18. } else {
  19.  
  20. if($email != $remail) { $error_register = "bad_email";
  21. } else {
  22.  
  23. $error_register = "yes";
  24.  
  25. $zapytanie = "INSERT INTO `user` (`id`, `login`, `password`, `email`, `avatar`)
  26. VALUES ('', '$login', '".md5($password)."', '$email', '')" ;
  27. $idzapytania = mysql_query($zapytanie);
  28. } }
  29. }
  30. }
  31. $smarty->assign('index', $img);
  32. $smarty->assign('error', $error_register);
  33. $smarty->display('register.tpl');
sadistic_son
Po pierwsze to w linijce 11 wszystkie AND pozamieniaj na OR. Czyli && na ||. Bo wystarczy abyś wpisał cokolwiek w którekolwiek pole i skrypt nie wychwyci że pozostałe pola są puste. A w linijce 15 powinno być raczej != zamiast == , nie sądzisz?
krystian1991x
mój błąd ale nadal nie wyświetla błędu za pierwszym razem gdy klikam wyślij tylko za drugim i to błąd z poprzedniego wysyłania ;/ konkretnie wpisuje np 2 odmienne adresy email klikam wyślij strona sie przeładuje zero komunikatu o błędzie oraz o tym czy wysłało wypełniam więc formularz jeszcze raz np tym razem daje niepoprawne pola z hasłem i co ? i wyświetla mi błąd z nieprawidłowym adresem email ;(

na tym forum każdy jest mądry do czasu snitch.gif ktoś mi powiedział coś mądrego że na takich forach ludzie którzy się na czymś znają nie mają czasu na takie rzeczy a ci którzy się najmniej znają pieprzą najwięcej smile.gif
krispak
Sprawdz to czy jest ok..
  1. if($_POST['register'] == 1)
  2. {
  3. $login = mysql_escape_string($_POST['nick']);
  4. $password = mysql_escape_string($_POST['pw']);
  5. $rpw = mysql_escape_string($_POST['rpw']);
  6. $email = mysql_escape_string($_POST['email']);
  7. $remail = mysql_escape_string($_POST['remail']);
  8.  
  9. $login_use = mysql_query("SELECT login, email FROM user WHERE login = '$login' OR email = '$email'"); // zamienilem na jedno zapytanie po co dwa?
  10.  
  11. if($login == "" || $password == "" || $rpw == "" || $email == "" || $remail == "")
  12. {
  13. $error_register['bad_null'] = "bad_null";
  14. $blad = true;
  15. }
  16. if($pw != $rpw)
  17. {
  18. $error_register['bad_pw'] = "bad_pw";
  19. $blad = true;
  20. }
  21. if($email != $remail)
  22. {
  23. $error_register['bad_email'] = "bad_email";
  24. $blad = true;
  25. }
  26. if($blad)
  27. {
  28. $smarty->assign('post', $_POST); // wrzucasz te posty w value aby przy zle wypelnionym nie trzeba bylo wypelniac jeszcze raz wystarczy poprawic
  29. $smarty->assign('error', $error_register); //errory
  30. } else {
  31. $zapytanie = "INSERT INTO `user` (`id`, `login`, `password`, `email`, `avatar`) VALUES ('', '$login', '".md5($password)."', '$email', '')";
  32. $idzapytania = mysql_query($zapytanie);
  33. }
  34. }
  35.  
  36. $smarty->assign('index', $img);
  37. $smarty->display('register.tpl');

Bledy w register.tpl wywoluj tak {$error.bad_null}, {$error.bad_pw}, {$error.bad_email}
Mozesz tez dodac Post aby nie wypelniac ponownie w razie bledu, czyli w value ustaw tak jak masz w post np. gdzie wpisujesz nick ustaw value="{$post.nick}"
Pozdrawiam
krystian1991x
ja to robię jako wyskakujące okienka "alert" i chyba tak jak napisałeś się nie da bo zobacz jak ja to robię w TPL
  1. {if $error.bad_null == bad_null }
  2. <script type="text/javascript">
  3. {literal}
  4. function show_orders()
  5. {
  6. alert("Wypelnij wszystkie pola !");
  7. }
  8. {/literal}
  9. {/if}

i tak dalej i tak dalej próbowałem też zamiast stawiać warunku w treści okienka wpieprzyć zmienną ale cóż nie działało :<
krispak
Wg mnie zle to robisz. Sprawdzanie w js to jedno a sprawdzanie w php to drugie. Sprawdzanie w js musisz robic przed wyslaniem formularza czyli po kliknieciu zapisz wyskakuje komunikat "Wypelnij wszystkie pola" jezeli jakies sa wymagane a sa puste, ale formularz nie jest wysylany. Dopiero jak przejdzie walidacje w js ze wszystko wypelnione to wysyla..
Chyba ze te alerty wrzuc tutaj..
  1. if($blad)
  2. {
  3. echo '<script type="text/javascript">';
  4. foreach($error_register as $value)
  5. {
  6. echo 'alert(\''.$value.'\');';
  7. }
  8. echo '</script>';
  9. } else {
  10. $zapytanie = "INSERT INTO `user` (`id`, `login`, `password`, `email`, `avatar`) VALUES ('', '$login', '".md5($password)."', '$email', '')";
  11. $idzapytania = mysql_query($zapytanie);
  12. }
krystian1991x
zrobiłem to w ten sposób ale i tak nie działa HELP

  1. <form action="register.php" onsubmit="return validate();" method="post">
  2.  
  3. <div style="padding-left: 100px;">
  4. <table style="width: 377px; height: 220px; background-image: url('templates/images/54.png');">
  5.  
  6. <tr>
  7. <td valign="top">
  8. <table style="color: #FFFFFF; font-family: Tahoma; font-size: 11px; padding-left: 36px;padding-top: 40px;">
  9. <tr><td valign="top" align="right" style="padding-top: 5px;"><b>Login:</b></td><td><input style="background-repeat: no-repeat; background-color: #64a424;padding-left: 4px;background-image: url('templates/images/52.png'); border: 0px; width: 165px; height: 22px;" name="nick" type="text" /></td></tr>
  10. <tr><td valign="top" align="right" style="padding-top: 5px;"><b>Hasło:</b></td><td><input style="background-repeat: no-repeat; background-color: #64a424; padding-left: 4px; background-image: url('templates/images/52.png'); border: 0px; width: 165px; height: 22px;" name="pw" type="password" /></td></tr>
  11. <tr><td valign="top" align="right" style="padding-top: 5px;"><b>Powtórz hasło:</b></td><td><input style="background-repeat: no-repeat; background-color: #64a424; padding-left: 4px; background-image: url('templates/images/52.png'); border: 0px; width: 165px; height: 22px;" name="rpw" type="password" /></td></tr>
  12. <tr><td valign="top" align="right" style="padding-top: 5px;"><b>Adres e-mail:</b></td><td><input style="background-repeat: no-repeat; background-color: #64a424; padding-left: 4px; background-image: url('templates/images/52.png'); border: 0px; width: 165px; height: 22px;" name="email" type="text" /></td></tr>
  13. <tr><td valign="top" align="right" style="padding-top: 5px;"><b>Powtórz adres:</b></td><td><input style="background-repeat: no-repeat; background-color: #64a424; padding-left: 4px; background-image: url('templates/images/52.png'); border: 0px; width: 165px; height: 22px;" name="remail" type="text" /></td></tr>
  14. <tr><td><input type='hidden' name='register' value='1' /></td><td style="padding-left: 100px;" align="left"> <input type="image" src="templates/images/53.png" value="Załóż konto" /></td></tr>
  15. </td>
  16. </tr>
  17.  
  18.  
  19. </div>
  20. </form>
  21. <script type="text/javascript">{literal}
  22. function error(tekst) {
  23. if (errfound) return;
  24. window.alert(tekst);
  25. errfound = true;
  26. }
  27. function validate() {
  28. errfound = false;
  29. var bledy = "";
  30. with (document.forms[0]) {
  31. if (nick.value == "") bledy += "Nie podałeś imienia. \n";
  32. if (pw.value == "") bledy += "Nie podałeś nazwiska.\n";
  33. if (rpw.value == "") bledy += "Nie napisałeś treści";
  34. if (email.value == "") bledy += "Nie podałeś nazwiska.\n";
  35. if (remail.value == "") bledy += "Nie napisałeś treści";
  36. if (bledy != "") error(bledy);
  37. }
  38. return !errfound;
  39. }
  40. {/literal}</script>


pomocy ?

help ?

hej hej help me :E

nikt nie wie ? dziwne :<
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.