Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Wyświetlanie danych w polu tekstowym
Forum PHP.pl > Forum > Przedszkole
requinus
Witam,
mam taki problem. Mam formularz gdzie wpisuje się dane rejestracyjne. Jest on plikiem html. Z tego formularza dane przekazywane są do pliku php,
który sprawdza poprawność danych i jeśli wszystko jest ok dopisuje dane do bazy. Jeśli nie są OK (zła liczba znaków czy źle powtórzone hasło)
wyrzuca komunikat o błędzie. W pliku php poleceniem include zaimportowałem plik html, żeby nie trzeba było się cofać aby ponownie wypełnić
formularz. Problem w tym, że dane w formularzu zostają wyczyszczone i trzeba je po każdym błędzie wpisywać od nowa.
Jak zrobić, żeby dane z formularza w przypadku błędnego wpisu nie czyściły się?
Oto plik formularza new_user.html:

  1. <title>Rejestracja</title>
  2. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  3. <script language="JavaScript" type="text/javascript">
  4. function sprawdz()
  5. {
  6. var f = document.forms.formularz1;
  7. if(f.nazwa.value.length < 3 ||
  8. f.nazwa.value.length > 20) {
  9. alert('Nazwa musi miec od 3 do 20 znakow!');
  10. return;
  11. }
  12. if(f.haslo.value.length < 6 ||
  13. f.haslo.value.length > 40) {
  14. alert('Haslo musi miec od 6 do 40 znakow!');
  15. return;
  16. }
  17. if(f.haslo.value != f.haslo2.value) {
  18. alert('Hasła różnią się od siebie!');
  19. return;
  20. }
  21. if(f.imie.value == "" ||
  22. f.nazwisko.value == "" ||
  23. f.email.value == "") {
  24. alert('Proszę wypełnić wszystkie pola formularza!');
  25. return;
  26. }
  27. f.submit();
  28. }
  29. //Koniec kodu JavaScript -->
  30. </head>
  31. <h2 align="top">Wprowadź dane rejestracyjne: </h2>
  32. <form name = "formularz1"
  33. action = "http://localhost/index.php?strona=new_user.php"
  34. method = "post"
  35. >
  36. <table border="0" align="center"> <tr>
  37. <td align="left">Login:</td>
  38. <td>
  39. <input style="width: 150px; height: 15px" type="text" name="nazwa">
  40. </td>
  41. </tr>
  42. <tr>
  43. <td align="left">Hasło:</td>
  44. <td>
  45. <input style="width: 150px; height: 15px" type="password" name="haslo">
  46. </td>
  47. </tr>
  48. <td align="left">Powtórz hasło:</td>
  49. <td>
  50. <input style="width: 150px; height: 15px" type="password" name="haslo2">
  51. </td>
  52. </tr>
  53. <tr>
  54. <td align="left">Imie:</td>
  55. <td>
  56. <input style="width: 150px; height: 15px" type="text" name="imie">
  57. </td>
  58. </tr>
  59. <tr>
  60. <td align="left">Nazwisko:</td>
  61. <td>
  62. <input style="width: 150px; height: 15px" type="text" name="nazwisko">
  63. </td>
  64. </tr>
  65. <tr>
  66. <td align="left">E-mail:</td>
  67. <td>
  68. <input style="width: 150px; height: 15px" type="text" name="email">
  69. </td>
  70. </tr>
  71. <tr>
  72. <td colspan="2" align="right">
  73. <input type="submit" value="Zarejestruj">
  74. </td>
  75. </tr>
  76. </form>
  77. </body>
  78. </html>


A to plik php new_user.php:
  1. <?php
  2. define("OK",0);
  3. define("SERVER_ERROR", 1);
  4. define("BAD_USER_NAME_LENGHT", 2);
  5. define("BAD_USER_PASS_LENGHT", 3);
  6. define("USER_NAME_ALREADY_EXISTS", 4);
  7. define("EMPTY_FIELDS", 5);
  8. define("DIFFERENT_PASSWORDS", 6);
  9. function rejestruj($nazwa, $haslo, $haslo2, $imie, $nazwisko, $email)
  10. {
  11. //sprawdzenie poprawności danych
  12. $userNameLenght = strlen($nazwa);
  13. $userPassLenght = strlen($haslo);
  14. if($userNameLenght < 3 || $userNameLengh > 20)
  15. return BAD_USER_NAME_LENGHT;
  16. if($userPassLenght < 6 || $userPassLenght > 40)
  17. return BAD_USER_PASS_LENGHT;
  18. if($imie == "" || $nazwisko == "" || $email == "")
  19. return EMPTY_FIELDS;
  20. if($haslo != $haslo2)
  21. return DIFFERENT_PASSWORDS;
  22.  
  23. //połączenie z bazą danych
  24. if(!$db_lnk = mysql_connect("localhost", "blablabla", "blablabla")) {
  25. echo ('Wystąpił błąd podczas próby połączenia z serwerem MySQL...');
  26. return SERVER_ERROR;
  27. }
  28.  
  29. if(!mysql_select_db('baza')){
  30. echo('Wystąpił błąd podczas próby wyboru bazy danych');
  31. return SERVER_ERROR;
  32. }
  33.  
  34. // sprawdzenie, czy uĹŒytkownik o podanej nazwie istnieje w bazie
  35. $query = "SELECT COUNT(*) FROM users WHERE user='$nazwa' ";
  36. if(!$result = mysql_query($query, $db_lnk)){
  37. echo('Wystąpił błąd: Instrukcja SELECT...');
  38. return SERVER_ERROR;
  39. }
  40.  
  41. if(!$row = mysql_fetch_row($result)){
  42. echo('Wystąpił błąd: nieprawidĹ‚owe wyniki zapytania');
  43. return SERVER_ERROR;
  44. }
  45. else{
  46. if($row[0] > 0) {
  47. return USER_NAME_ALREADY_EXISTS;
  48. }
  49. }
  50.  
  51. //dodanie nowego uĹŒytkownika
  52.  
  53. $query = "INSERT INTO users VALUES (NULL, '$nazwa', '$haslo', '$imie', '$nazwisko','$email')";
  54. if(!$result = mysql_query($query, $db_lnk)){
  55. echo('Wystąpił błąd: instrukcja INSERT...');
  56. return SERVER_ERROR;
  57. }
  58. $count = @mysql_affected_rows();
  59. if($count <> 1) {
  60. return SERVER_ERROR;
  61. }
  62. else {
  63. return OK;
  64.  
  65. }
  66.  
  67. }
  68. if(isSet($_SESSION['zalogowany'])){
  69. header("Location: index.php");
  70. }
  71. else if(!isSet($_POST["nazwa"]) || !isSet($_POST["haslo"]) || !isSet($_POST["haslo2"]) ||
  72. !isSet($_POST["imie"]) || !isSet($_POST["nazwisko"]) ||
  73. !isSet($_POST["email"])){
  74. include "new_user.html";
  75. }
  76. else{
  77. ?>
  78. <?php
  79. $nazwa = $_POST["nazwa"];
  80. $haslo = $_POST["haslo"];
  81. $haslo2 = $_POST["haslo2"];
  82. $imie = $_POST["imie"];
  83. $nazwisko = $_POST["nazwisko"];
  84. $email = $_POST["email"];
  85. $val = rejestruj($nazwa, $haslo, $haslo2, $imie, $nazwisko, $email);
  86. if($val == OK){
  87. echo('<font color="black"> <b> Rejestracja poprawna. Możesz się zalogować. </b> </font>');
  88. }
  89.  
  90. else if($val == BAD_USER_NAME_LENGHT) {
  91. echo('<font color="black"> <b> Nazwa użytkownika musi mieć od 3 do 20 znaków. </b> </font>');
  92. include('new_user.html');
  93. }
  94. else if($val == BAD_USER_PASS_LENGHT) {
  95. echo('<font color="black"> <b> Hasło musi mieć od 6 do 40 znaków. </b> </font>');
  96. include('new_user.html');
  97. }
  98. else if($val == DIFFERENT_PASSWORDS) {
  99. echo('<font color="black"> <b> Hasła różnią się od siebie. </b> </font>');
  100. include('new_user.html');
  101. }
  102. else if($val == USER_NAME_ALREADY_EXISTS){
  103. echo('<font color="black"> <b> Użytkownik '.$_POST[nazwa].' jest już zarejestrowany. </b> </font>');
  104. include('new_user.html');
  105. }
  106. else if ($val == EMPTY_FIELDS){
  107. echo('<font color="black"> <b> Proszę wypełnic wszystkie pola formularza. </b> </font>');
  108. include('new_user.html');
  109. }
  110. else{
  111. echo('<font color="black"> <b> Błąd serwera. Rejestracja nie powiodła się. </b> </font>');
  112. include('new_user.html');
  113. }
  114. }
  115. ?>


Pomocy....
Z góry dziękuję.

P.S.
Przy okazji mam ogólne pytanie. Jak wyświetlać dane w polu tekstowym formularza ze zmiennej lub bazy danych?
mecenas
Generalnie nie da się w czystym htmlu tego tak zrobić. Tym bardziej proste doczytanie statycznego html'u nie rozwiąże problemu.

Pola typu input mają atrybut "value" i tutaj musisz ustawić wartość, którą otrzymałeś, natomiast dla textarea musisz wstawić zawartość bezpośrednio do środka - ale to przecież naprawdę elementarna wiedza...

Poczytaj trochę manuali, to ułatwi sprawę smile.gif
gosienkami
dane w polu tekstowym przekazane z formularza
  1. $dane=$_POST['dane'];
  2. <input name="tytul" type="text" id="tytul" value="<? echo $dane; ?>" />

z bazy
  1. <?php
  2. $zapytanie=mysql_query("select * from tabela");
  3.       $rekord=mysql_fetch_array($zapytanie,$db);
  4.       echo 'dane kolumny tytul ' .$rekord['tytul'];
  5. ?>
erix
Cytat
Jak zrobić, żeby dane z formularza w przypadku błędnego wpisu nie czyściły się?

Formularz i skrypt obrabiający niech będą w tym samym pliku - wywołanie tak, jak napisała ~gosienkami z tą różnicą, że trzeba sprawdzić, czy w formularzu są jakieś dane. winksmiley.jpg
requinus
Bardzo Wam dziękuję. Jestem wdzięczny.
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.