Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uniwersalny formularz w php - checkbox
rafik73
post 4.03.2015, 20:19:09
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post 5.03.2015, 07:06:35
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Problem z mysql nie ma zwiazku. Przenosze.

A ty patrz co dostajesz
var_dump( $_POST['moderator']);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rafik73
post 6.03.2015, 21:57:10
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


Hmmm, jeśli zaznaczone to wyświetla array a jak nie to nie wyświetla nic. NULL?
Go to the top of the page
+Quote Post
robertpiaty
post 6.03.2015, 22:06:58
Post #4





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


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.

Ten post edytował robertpiaty 6.03.2015, 22:09:40


--------------------
Go to the top of the page
+Quote Post
rafik73
post 7.03.2015, 07:59:34
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


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.

Ten post edytował rafik73 7.03.2015, 08:36:53
Go to the top of the page
+Quote Post
markonix
post 8.03.2015, 10:28:00
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


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).


--------------------
Go to the top of the page
+Quote Post
robertpiaty
post 8.03.2015, 12:23:50
Post #7





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


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. ?>


Ten post edytował robertpiaty 8.03.2015, 12:24:31


--------------------
Go to the top of the page
+Quote Post
rafik73
post 8.03.2015, 19:16:34
Post #8





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


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?

Ten post edytował rafik73 8.03.2015, 19:28:20
Go to the top of the page
+Quote Post
markonix
post 9.03.2015, 01:07:47
Post #9





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Ja tam nie widzę celowości używania tablicy w name pól.


--------------------
Go to the top of the page
+Quote Post
nospor
post 9.03.2015, 08:28:36
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rafik73
post 9.03.2015, 16:59:54
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 19.03.2014

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


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 !

Ten post edytował rafik73 9.03.2015, 18:00:33
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:10