rafik73
4.03.2015, 20:19:09
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?:
<?php
$a=='save';
$wynik = mysql_query("SELECT * FROM tabela WHERE id=2") or
die('Błąd zapytania');
echo '<br><form action="x.php" method="post"> '; if($r[moderator] == 1)
{
echo ' Moderator?: <input type="checkbox" class="table" name="moderator[]" value="1" checked="checked" >'; }
else
{
echo ' Moderator?: <input type="checkbox" class="table" name="moderator[]" value="0" > '; }
}
echo '<input type="submit" class="button" value="POPRAW" />' ; }
if($a == 'save') {
$moderator = $_POST['moderator'];
/
mysql_query("UPDATE tabela SET moderator=$moderator WHERE id=2") or
die('Błąd zapytania'); echo '<p class="table_center_edit_head">DANE ZOSTAŁY ZAKTUALIZOWANE</p>';
}
?>
nospor
5.03.2015, 07:06:35
Problem z mysql nie ma zwiazku. Przenosze.
A ty patrz co dostajesz
var_dump( $_POST['moderator']);
rafik73
6.03.2015, 21:57:10
Hmmm, jeśli zaznaczone to wyświetla array a jak nie to nie wyświetla nic. NULL?
robertpiaty
6.03.2015, 22:06:58
Nie zaznaczony checkbox nie wysyła danych. Rozwiązuje się to przeważnie w ten sposób:
<input type='hidden' value='0' name='selfdestruct'> <input type='checkbox' value='1' name='selfdestruct'>
W ukrytym inpucie masz wartość jaką chcesz wysłać jeśli checkbox jest nie zaznaczony.
rafik73
7.03.2015, 07:59:34
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
8.03.2015, 10:28:00
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
8.03.2015, 12:23:50
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.
<?
$checked = $r['moderator'] == 1 ? 'checked="checked"' : '';
echo '<input type="hidden" class="table" name="moderator['.$r['id'].']" value="0" > Moderator?: <input type="checkbox" class="table" name="moderator['.$r['id'].']" value="1" '.$checked.' >'
?>
rafik73
8.03.2015, 19:16:34
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
9.03.2015, 01:07:47
Ja tam nie widzę celowości używania tablicy w name pól.
nospor
9.03.2015, 08:28:36
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
9.03.2015, 16:59:54
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.