Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uniwersalny formularz w php - checkbox
Forum PHP.pl > Forum > Przedszkole
rafik73
Witam
Kombinuję, jak zrobić formularz, który jednocześnie będzie wyświetlał dane z tabeli w mysql i dawał możliwość ich edytowania i aktualizowania. Największy problem mam z checkboxem. Poniżej kod, w zapytaniach na "sztywno" wymuszony rekord, zmienna a$ ustawiona na "sztywno". Efekt: po zaznaczeniu checkboxa nic nie zmienia. Co robię nie tak?:

  1. <?php
  2. $a=='save';
  3. mysql_query("SET NAMES 'utf8'");
  4. $wynik = mysql_query("SELECT * FROM tabela WHERE id=2")
  5. or die('Błąd zapytania');
  6. if(mysql_num_rows($wynik) > 0) {
  7. while($r = mysql_fetch_assoc($wynik)) {
  8.  
  9. echo '<br><form action="x.php" method="post"> ';
  10. if($r[moderator] == 1)
  11. {
  12. echo ' Moderator?:&nbsp<input type="checkbox" class="table" name="moderator[]" value="1" checked="checked" >';
  13. }
  14. else
  15. {
  16. echo ' Moderator?:&nbsp<input type="checkbox" class="table" name="moderator[]" value="0" > ';
  17. }
  18. }
  19.  
  20. echo '<input type="submit" class="button" value="POPRAW" />' ;
  21. echo ' </form>';
  22. }
  23.  
  24. if($a == 'save') {
  25.  
  26. $moderator = $_POST['moderator'];
  27. /
  28. mysql_query("SET NAMES 'utf8'");
  29. mysql_query("UPDATE tabela SET moderator=$moderator WHERE id=2")
  30. or die('Błąd zapytania');
  31. echo '<br>';
  32. echo '<p class="table_center_edit_head">DANE ZOSTAŁY ZAKTUALIZOWANE</p>';
  33. echo '<br>';
  34.  
  35. }
  36.  
  37. ?>
nospor
Problem z mysql nie ma zwiazku. Przenosze.

A ty patrz co dostajesz
var_dump( $_POST['moderator']);
rafik73
Hmmm, jeśli zaznaczone to wyświetla array a jak nie to nie wyświetla nic. NULL?
robertpiaty
Nie zaznaczony checkbox nie wysyła danych. Rozwiązuje się to przeważnie w ten sposób:

  1. <input type='hidden' value='0' name='selfdestruct'>
  2. <input type='checkbox' value='1' name='selfdestruct'>
  3. </form>


W ukrytym inpucie masz wartość jaką chcesz wysłać jeśli checkbox jest nie zaznaczony.
rafik73
Dzięki za odpowiedź. Sposób powyżej działa. Ale meritum sprawy to wyświetlenie tego checkboxu z zawrtością tabeli mysql z możliwością edycji. Nie mogę wykombinować, jak połączyć zmienną $r[moderator] z ww sposobem.
W tabeli mysql mam wartości 1 lub 0.
markonix
Zaznaczaj domyślnie checkbox gdy wartość moderator == 1.
Tego typu pola możesz też rozwiązać polem radio, które rozwiązuje problem z brakiem wartości ale generalnie checbox wygląda ładniej (ale ma sens tylko przy dwóch stanach - tak/nie).
robertpiaty
Zrób dokładnie tak jak napisał markonix. Ponieważ w name checkobxa jest tablica to podrzucę Ci tu kawałek kodu który może Ci pomoże.
  1. <?
  2. $checked = $r['moderator'] == 1 ? 'checked="checked"' : '';
  3. echo '<input type="hidden" class="table" name="moderator['.$r['id'].']" value="0" >
  4. Moderator?:&nbsp<input type="checkbox" class="table" name="moderator['.$r['id'].']" value="1" '.$checked.' >'
  5. ?>
rafik73
Zwraca mi błąd zapytania bazy danych, dokładnie to zapytania z UPDATE, czyli w trakcie aktualizacji. Przy niezaznaczonym checkboxie polecenie var_dump( $_POST['moderator']); wyrzuca: array(1) { [2]=> string(1) "0" } a przy zaznaczonym: array(1) { [2]=> string(1) "1" }
Acha, czy id w $r['id'] to to samo id co w zapytaniu?
markonix
Ja tam nie widzę celowości używania tablicy w name pól.
nospor
Cytat
Zwraca mi błąd zapytania bazy danych
Oczywiscie ze zwraca blad, bo pod $_POST['moderator'] masz tablice, a ty to do zapytania wkladasz jakby tam byla pojedyncza wartosc...

Cytat
Ja tam nie widzę celowości używania tablicy w name pól.
Zgadza sie, w tym przypadku to nie ma zadnego sensu
rafik73
Spróbuję w name dać samo 'moderator', bez tablicy [], zobaczymy, co wyjdzie

No i o to loto. Dziękuję panowie, jesteście wielcy!!!! Browary dla wszystkich !
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.