Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz z pamięcią
Forum PHP.pl > Forum > PHP
marcin002
Witam,

Mam mały problem z formularzem. Chciałbym aby formularz zapamiętywał pola poprawnie wpisane. Nie mam problemów z kontrolkami typu textfiled, lecz nie wiem jak się odnięść do kontrolek typu: radio button, checkbox i list menu. Walidacja formularza działa w następujący sposób. Użytkownik wpisuje dane do formularza i naciska przycisk wyślij. Jeżeli jakieś pole zostawi puste pojawia się napis z prośbą o uzupełnienie tych właśnie pól. Pola typu textfiled formularz zapamiętuje, natomiast kontrolki wyżej wymienione ustawiają swoją wartość default'ową. Jak zrobić aby formularz zapamietywał i ich ustawienia?

listing:

  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=iso-8859-2" />
  5. <title>Untitled Document</title>
  6. <link href="slowniczek_php/slowniczek.css" rel="stylesheet" type="text/css" />
  7. </head>
  8.  
  9. <body>
  10. <?php
  11.  
  12. //Wyrażenie warunkowe obsługujace formularz.
  13. if (isset($_POST['dodano']))
  14. {
  15.  
  16. //Utwórz zmienną imie.
  17. if (!empty($_POST['imie']))
  18. {
  19. $imie = $_POST['imie'];
  20. }
  21. else
  22. {
  23. $imie = NULL;
  24. echo '<span class="menu">Podaj swoje imię!</span><br />';
  25. }
  26.  
  27. //Utwórz zmienną nazwisko.
  28. if (!empty($_POST['nazwisko']))
  29. {
  30. $nazwisko = $_POST['nazwisko'];
  31. }
  32. else
  33. {
  34. $nazwisko = NULL;
  35. echo '<span class="menu">Podaj swoje nazwisko!</span><br />';
  36. }
  37.  
  38. //Utwórz zmienną plec.
  39. if (isset($_POST['plec']))
  40. {
  41. $plec = $_POST['plec'];
  42. }
  43. else
  44. {
  45. $plec = NULL;
  46. echo '<span class="menu">Podaj swoją płeć!</span><br />';
  47. }
  48.  
  49. //Utwórz zmienną email.
  50. if (!empty($_POST['email']))
  51. {
  52. $plec = $_POST['email'];
  53. }
  54. else
  55. {
  56. $plec = NULL;
  57. echo '<span class="menu">Podaj swój email!</span><br />';
  58. }
  59. }
  60. ?>
  61. <form id="form1" name="form1" method="post" action="formularz.php">
  62. <table width="60%" border="0" cellspacing="0" cellpadding="3">
  63. <tr>
  64. <td width="50%" class="body">Imię</td>
  65. <td colspan="2"><label>
  66. <input name="imie" type="text" class="body" id="imie" value="<?php if(!empty($_POST['imie'])) echo $_POST['imie']; ?>" maxlength="20" />
  67. </label></td>
  68. </tr>
  69. <tr>
  70. <td class="body">Nazwisko</td>
  71. <td colspan="2"><label>
  72. <input name="nazwisko" type="text" class="body" id="nazwisko" value="<?php if(!empty($_POST['nazwisko'])) echo $_POST['nazwisko']; ?>" maxlength="25" />
  73. </label></td>
  74. </tr>
  75. <tr>
  76. <td class="body">Płeć</td>
  77. <td colspan="2" class="body"><label>
  78. Kobieta
  79. <input name="plec" type="radio" id="plec" value="Kobieta" />
  80. Mężczyzna 
  81. <input name="plec" type="radio" id="plec" value="Mężczyzna" />
  82. </label></td>
  83. </tr>
  84. <tr>
  85. <td class="body">Miasto</td>
  86. <td colspan="2"><label>
  87. <select name="select" class="body">
  88. <option value="0">Warszawa</option>
  89. <option value="1">Poznań</option>
  90. <option value="2">Kraków</option>
  91. <option value="3">Radom</option>
  92. </select>
  93. </label></td>
  94. </tr>
  95. <tr>
  96. <td class="body">Email</td>
  97. <td colspan="2"><label>
  98. <input name="email" type="text" class="body" id="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email']; ?>" />
  99. </label></td>
  100. </tr>
  101. <tr>
  102. <td class="body">Zainteresowania</td>
  103. <td width="25%" class="body">Muzyka</td>
  104. <td><label>
  105. <input name="zainteresowania[]" type="checkbox" class="body" id="zainteresowania[]" value="Muzyka" />
  106. </label></td>
  107. </tr>
  108. <tr>
  109. <td class="body"> </td>
  110. <td class="body">Film</td>
  111. <td><label>
  112. <input name="zainteresowania[]" type="checkbox" id="zainteresowania[]" value="Film" />
  113. </label></td>
  114. </tr>
  115. <tr>
  116. <td class="body"> </td>
  117. <td class="body">Sport</td>
  118. <td><label>
  119. <input name="zainteresowania[]" type="checkbox" id="zainteresowania[]" value="Sport" />
  120. </label></td>
  121. </tr>
  122. <tr>
  123. <td class="body"> </td>
  124. <td class="body">Komputer</td>
  125. <td><label>
  126. <input name="zainteresowania[]" type="checkbox" id="zainteresowania[]" value="Komputer" />
  127. </label></td>
  128. </tr>
  129. <tr>
  130. <td class="body"> </td>
  131. <td colspan="2"><label>
  132. <input name="dodano" type="hidden" id="dodano" value="RUE" />
  133. <input name="Submit" type="submit" class="body" value="Wyślij" />
  134. </label></td>
  135. </tr>
  136. <tr>
  137. </table>
  138. </form>
  139. </body>
  140. </html>
conip
to powinno rozwiązać sprawe

przykładowe pola:

input -> radio

  1. <input name="plec" type="radio" id="plec" value="Mężczyzna" <?php if($_POST['plec'] == 'Mężczyzna') { echo 'checked';} ?>>Kobieta</input>


input -> select

  1. <select name="select" class="body">
  2.  
  3. <option value="0" <?php if($_POST['select'] == '0') { echo 'selected';} ?> >Warszawa</option>
  4. <option value="1" <?php if($_POST['select'] == '1') { echo 'selected';} ?>>Poznań</option>
  5. <option value="2">Kraków</option>
  6. <option value="3">Radom</option>
  7. </select>


itd... do pozostalych pol

pozdrawiam
marcin002
Dalej nie działa. Po wpisaniu:

  1. <tr>
  2. <td class="body">Miasto</td>
  3. <td colspan="2"><label>
  4. <select name="select" class="body">
  5. <option value="0" <?php if($_POST['select'] == '0') { echo 'selected';} ?> >Warszawa</option>
  6. <option value="1" <?php if($_POST['select'] == '1') { echo 'selected';} ?>>Poznań</option>
  7. <option value="2" <?php if($_POST['select'] == '2') { echo 'selected';} ?>>Kraków</option>
  8. <option value="3" <?php if($_POST['select'] == '3') { echo 'selected';} ?>>Radom</option>
  9. </select>
  10. </label></td>
  11. </tr>

W kontrolce pojawiają się następujące napisy:
Dla Warszawy: Notice: Undefined index: select in C:\htdocs\php_mysql\formularz.php on line 103>Warszawa
Dla Poznania, Krakowa i Radomia to samo.
Proszę o pomoc.
Kicok
Wywala ci błąd bo sprawdzasz wartość zmiennej $_POST['select'], która jeszcze nie została utworzona (bo formularz jeszcze nie został wysłany).
Używaj tego kodu:
  1. <?php if(isset($_POST['select']) && ($_POST['select'] == '0')) echo('selected'); ?>
Hacker
A i jak
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


to selected="selected" i checked="checked"
marcin002
Bardzo wam dziękuję za pomoc. Wszystko działa oki.
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.