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:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> <script language="JavaScript" type="text/javascript"> function sprawdz() { var f = document.forms.formularz1; if(f.nazwa.value.length < 3 || f.nazwa.value.length > 20) { alert('Nazwa musi miec od 3 do 20 znakow!'); return; } if(f.haslo.value.length < 6 || f.haslo.value.length > 40) { alert('Haslo musi miec od 6 do 40 znakow!'); return; } if(f.haslo.value != f.haslo2.value) { alert('Hasła różnią się od siebie!'); return; } if(f.imie.value == "" || f.nazwisko.value == "" || f.email.value == "") { alert('Proszę wypełnić wszystkie pola formularza!'); return; } f.submit(); } //Koniec kodu JavaScript --> </script> </head> <body> <form name = "formularz1" action = "http://localhost/index.php?strona=new_user.php" method = "post" > <td> <input style="width: 150px; height: 15px" type="text" name="nazwa"> </td> </tr> <tr> <td> <input style="width: 150px; height: 15px" type="password" name="haslo"> </td> </tr> <td> <input style="width: 150px; height: 15px" type="password" name="haslo2"> </td> </tr> <tr> <td> <input style="width: 150px; height: 15px" type="text" name="imie"> </td> </tr> <tr> <td> <input style="width: 150px; height: 15px" type="text" name="nazwisko"> </td> </tr> <tr> <td> <input style="width: 150px; height: 15px" type="text" name="email"> </td> </tr> <tr> <td colspan="2" align="right"> <input type="submit" value="Zarejestruj"> </td> </tr> </table> </form> </body> </html>
A to plik php new_user.php:
<?php function rejestruj($nazwa, $haslo, $haslo2, $imie, $nazwisko, $email) { //sprawdzenie poprawnoĹ›ci danych if($userNameLenght < 3 || $userNameLengh > 20) return BAD_USER_NAME_LENGHT; if($userPassLenght < 6 || $userPassLenght > 40) return BAD_USER_PASS_LENGHT; if($imie == "" || $nazwisko == "" || $email == "") return EMPTY_FIELDS; if($haslo != $haslo2) return DIFFERENT_PASSWORDS; //połączenie z bazÄ… danych return SERVER_ERROR; } return SERVER_ERROR; } // sprawdzenie, czy uĹŒytkownik o podanej nazwie istnieje w bazie $query = "SELECT COUNT(*) FROM users WHERE user='$nazwa' "; return SERVER_ERROR; } return SERVER_ERROR; } else{ if($row[0] > 0) { return USER_NAME_ALREADY_EXISTS; } } //dodanie nowego uĹŒytkownika $query = "INSERT INTO users VALUES (NULL, '$nazwa', '$haslo', '$imie', '$nazwisko','$email')"; return SERVER_ERROR; } if($count <> 1) { return SERVER_ERROR; } else { return OK; } } } include "new_user.html"; } else{ ?> <?php $nazwa = $_POST["nazwa"]; $haslo = $_POST["haslo"]; $haslo2 = $_POST["haslo2"]; $imie = $_POST["imie"]; $nazwisko = $_POST["nazwisko"]; $email = $_POST["email"]; $val = rejestruj($nazwa, $haslo, $haslo2, $imie, $nazwisko, $email); if($val == OK){ } else if($val == BAD_USER_NAME_LENGHT) { include('new_user.html'); } else if($val == BAD_USER_PASS_LENGHT) { include('new_user.html'); } else if($val == DIFFERENT_PASSWORDS) { include('new_user.html'); } else if($val == USER_NAME_ALREADY_EXISTS){ echo('<font color="black"> <b> Użytkownik '.$_POST[nazwa].' jest już zarejestrowany. </b> </font>'); include('new_user.html'); } else if ($val == EMPTY_FIELDS){ include('new_user.html'); } else{ include('new_user.html'); } } ?>
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?