Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularze - zapamiętywanie danych
slawo
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 0
Dołączył: 11.01.2010
Skąd: Nowa Dęba

Ostrzeżenie: (0%)
-----


Witam,
mam pewien formularz. Gdy wszystko zostanie uzupełnione dodaje się rekord do bazy. Jednak gdy nie wypełnimy jednej rzeczy to zwraca komunikat, że coś nie zostało wypełnione i pojawia się button 'popraw' (wstecz). Po jego kliknięciu chciałbym żeby zostawały wpisane wcześniej dane żeby nie wpisywać wszystkiego od nowa.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Powinieneś to rozwiązać w ten sposób, by skrypt nie przechodził dalej, ale do skutku monitował o poprawne wypełnienie całego forma.

Drugie rozwiązanie to zapisanie sobie wartości pól w sesji i wtedy możesz je przywrócić w każdej chwili.
Go to the top of the page
+Quote Post
Bangeusz
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.04.2010
Skąd: Lubań

Ostrzeżenie: (0%)
-----


Cytat(blooregard @ 2.04.2010, 20:49:07 ) *
Powinieneś to rozwiązać w ten sposób, by skrypt nie przechodził dalej, ale do skutku monitował o poprawne wypełnienie całego forma.

Czyli dla jasności kolega mówi o funkcji exit;. Chodzi o to, że jak masz sprawdzanie, czy wszelkie wymagane pola zostały wpisane, to po tym dajesz exit;, by Ci nie dodawał rekordu z lukami, których użytkownik nie wypełnił.

Ten post edytował Bangeusz 14.04.2010, 21:44:15
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Cytat(Bangeusz @ 14.04.2010, 22:43:20 ) *
Czyli dla jasności kolega mówi o funkcji exit;. Chodzi o to, że jak masz sprawdzanie, czy wszelkie wymagane pola zostały wpisane, to po tym dajesz exit;, by Ci nie dodawał rekordu z lukami, których użytkownik nie wypełnił.
@Bangeusz Po pierwsze exit() to nie funkcja tylko element składni języka. Po drugie exit() zatrzymuje wykonywanie skryptu, zatem wszystko co ma "nastąpić" po exit() nie nastąpi.
Zamiast exit() możemy użyć zmiennej typu boolean, która będzie przyjmować wartość false, jeśli tylko któreś z pól formularza będzie puste. Przykład
  1. <?php
  2. if(!empty($_POST)) {
  3. if(empty($_POST['firstname'])) {
  4. $invalidForm = true;
  5. $error['EMPTY_FIRSTNAME'] = true;
  6. }
  7. if(empty($_POST['lastname'])) {
  8. $invalidForm = true;
  9. $error['EMPTY_LASTNAME'] = true;
  10. }
  11. if(!isset($invalidForm)) {
  12. // wszystko jest w porządku i możemy
  13. // zapisać dane do bazy danych
  14. // później możemy wykonać przekierowanie
  15. echo 'It\'s OK!';
  16. }
  17. }
  18. ?>
  19. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
  20. <input type="hidden" name="action" value="save" />
  21. <dl>
  22. <dt>First name:</dt>
  23. <dd>
  24. <input type="text" name="firstname" value="<?php echo isset($_POST['firstname']) ? $_POST['firstname'] : ''; ?>" /><?php if(isset($error['EMPTY_FIRSTNAME'])) echo ' Uzupełnij pole'; ?>
  25. </dd>
  26. <dt>Last name:</dt>
  27. <dd>
  28. <input type="text" name="lastname" value="<?php echo isset($_POST['lastname']) ? $_POST['lastname'] : ''; ?>" /><?php if(isset($error['EMPTY_FIRSTNAME'])) echo ' Uzupełnij pole'; ?>
  29. </dd>
  30. <dt></dt>
  31. <dd><input type="submit" value="Zapisz" /></dd>
  32. </dl>
  33. </form>

EDIT:
Oczywiście sposobów rozwiązania takiego typu problemów jest więcej.

Ten post edytował mortus 15.04.2010, 08:00:13
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 05:01