Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Zaznaczanie opcji po przetworzeniu formularza
Forum PHP.pl > Forum > Przedszkole
Robert3d
Witam mam problem nie wiem jak stworzyć warunki czy może inną metodę zastosować by:

Mam formularz z 20 checkbox-ami zaznaczam kilka. formularz przetwarza się i w tablicy $_GET pojawiają się puszka=on, nakretka=on plastik=on.
Po przetworzeniu wraca na tą samą stronę i teraz jak zrobić by opcje po przetworzeniu formularza były zaznaczone.


gdzie formularz prezentuje sie tak.
  1. while($row = mysqli_fetch_assoc($dane)){
  2. ?>
  3. <li>
  4. <div><input type="checkbox" name="<?php echo $row['rodzaj']; ?>" /></div>
  5. <div><?php echo $row['rodzaj'];?><img src="<?php echo $row['obrazek']; ?>"/></div>
  6. </li>
  7. <?php } ?>
  8. </ul>
  9. <input type="submit" value="Pokaż" />
Rid
Stan kontrolki w tym przypadku checkboxa można by zapisać do sesji,ale nie wiem czy to by było optymalne rozwiązanie.
thek
I wlaśnie dlatego logikę aplikacji robi się PRZED wyświetlaniem. Gdy masz tak zrobione to po kliknięciu wyślij masz na serwer pchany $_POST i go przetwarzasz. Gdy się skończy robi coś na serwerze ale gdy kończy wciąż masz $_POST dostępny. Teraz w czasie wyświetlania sprawdzasz czy w zmiennej $_POST ten checkbox wystąpił i jeśli tak, dajesz mu checked. Mniej więcej coś w deseń:
  1. <?php
  2. //tu jakiś kod do połączenia z bazą i wstępnych operacji
  3. //ja tworzę sobie też zmienną z wszystkimi domyślnymi wartościami formularza, co załatwia mi też problem warningów "index undefined" co jest zmorą początkujących ;)
  4. $fields = array( 'input' => 'wartość', 'input2' => 'wartość', 'checkbox' => false, 'checkbox2' => true );
  5. if( array_key_exist( 'submit', $_POST ) ) {
  6. //tu przetwarzasz i w razie czego robisz przypisania post do fields w stylu
  7. $fields['checkbox'] = true;
  8. }
  9. //czas na wyświetlanie
  10. ?>
  11. <form method="post", action="">
  12. <input type="text" name="input" value="<?php echo $fields['input']; ?>" />
  13. <input type="" name="input2" value="<?php echo $fields['input2']; ?>" />
  14. <input type="" name="checkbox"<?php echo ( $fields['checkbox'] ? ' checked="checked"' : ''); ?> />
  15. <input type="" name="checkbox2"<?php echo ( $fields['checkbox2'] ? ' checked="checked"' : ''); ?> />
  16. <input type="submit" name="submit" value="Wyślij" />
  17. </form>
Robert3d
Dziękuję za pomoc smile.gif wszystko działa

Mam jeszcze pytanie odnośnie zapytania SQL dla tego typu rozwiązania czy dla każdej z opcji musi być LIKE?
AND LIKE
AND LIKE i tak aż cały formularz zrobie??
thek
To JAK to ma działać w połączeniu z bazą jest już zależne od jej struktury. Na tym właśnie polega dobra strona takiego rozdzielenia. Masz całkowicie niezależne generowanie formularza od tego co robisz w logice aplikacji czy po stronie bazy. Nie mieszasz obu. Jak dla mnie rozwiązań może być wiele:
1) złączenie typu many-to-many,
2) serializowana tablica,
3) osobne kolumny w tabeli dla każdego checkboxa
żeby tylko wymienić 3 najpopularniejsze rozwiązania.
Robert3d
zrobiłem na razie oddzielnie dla każdego checkboxa dla aktywnego 1 dla nie 0 i według tego przez like 1 i formularz składa mi zapytanie typu and like
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.