kielich
27.05.2010, 16:14:06
Witam mam taki problem
mam kilka CHECKBOXÓW i musze zrobić że po zaznaczeniu, wysłaniu update'uje mi 0 lub 1 w bazie( w zależności od zaznaczenia) jak to wykonać
jaslanin
27.05.2010, 16:21:10
w jakiej formie są checkboxy, tzn. mają name="name[]" czy name="name1", name="name2", jaką masz strukturę tabeli w bazie danych.
kielich
27.05.2010, 16:32:54
name[] - oczywiście chodzi mi tylko o to kiedy jest w bazie na 1 to box jest zaznaczony ale kiedy .NO i kiedy go odznaczę to żeby było 0 ale nie wiem jak to ugryźć
Napisałem sobie takie cos:
if (isset($_POST['act'])){ $act = $_POST['act'];
foreach($act as $a => $b)
{
$query = mysql_query("UPDATE user SET status = '$b' WHERE id = '$a'"); }
}
No i zaznacza na 1 ale nie wiem jak zrobić kiedy jest zaznaczone żeby odznaczyć i zmienić w bazie na 0
tehaha
27.05.2010, 17:04:52
to zanim ustawisz zaznaczone na 1, to zmień wszystkie w bazie na 0, wtedy te, które nie zostały zaznaczone pozostaną na 0, a na 1 zmienią się tylko zaznaczone
jaslanin
27.05.2010, 17:05:03
łatwiej by to było zrobić z name_1 name_2 bo jakbyś wiedział że nie zostało wysłane przez formularz to ma mieć wartość 0, a jak wysłane to 1
Natomiast z name[] musisz najpierw wszystko zerować, a dopiero potem ustawiać na 1 te które są zaznaczone
PS. w twoim przykładzie $a będzie miało wartości do 0 do ilości checkboxów-1, lepiej jakbyś to id przekazywał w value (bo niezaznaczone i tak nie są przekazywane, więc status=0 nigdy nie wystąpi)
kielich
27.05.2010, 17:08:47
no ale to bedzie innaczej działać ponieważ powiedzmy mam 5 zaznaczonych chce odznaczyć 1 i co wszystko się zeruje a jeden zostaje zaznaczony ;/...
tehaha
27.05.2010, 17:11:10
jeżeli masz 5 zaznaczonych i odznaczysz jeden to wtedy: pozostaną 4 zaznaczone, czyli wyzerujesz wszystkie i zaznacz te 4, które są zaznaczone, tak będzie najprościej
kielich
27.05.2010, 20:35:04
Jakiś przykład mogę prosić

I jak poda mi ktoś jakieś dobre rozwiązanie...
Bardzo proszę o jakiś przykład jak mogę to fajnie rozwiązać ....
zend
27.05.2010, 21:09:43
Zrób różnice, jak rozumiem dane do formularza pobierasz z bazy, tak? To skorzystaj z tego samego zapytania, jeżeli w $_POST nie ma id rekordu który jest w rezultatach zapytania, to znaczy że ten rekord nalezy "wyzerować"
kielich
28.05.2010, 16:48:52
Możesz napisać jak miałbym to zrobić ...kurcze od wczoraj się męczę i nie wiem , nie potrafię tego jakoś ogarnąć
zend
28.05.2010, 18:48:48
Jak tego nie zrozumiesz to już nic Ci nie pomoże hehe

$select = 'select którym pobierasz dane do checkboxów do formularza';
$array = $db -> fetchAll($select);
foreach($array as $row)
{
if(!isset($_POST['checkbox'][$row['id']])) $db -> query('Delete where id = $row[id]');
}
kielich
28.05.2010, 19:26:20
Ojjj widzę że naprawdę to ty nie wiesz o czym ja pisze ja wiem jak usuwać ale nie wiem jak zrobić:
- w bazie mam '1' i checkbox jest zaznaczony i jest ok ale kiedy chce go odznaczyć i UPDATE do bazy to jakoś nie wiem jak zrobić bo checkbox mam ustawione value="1"
Ps. ... Wszędzie zendowo ...
zend
28.05.2010, 19:33:52
Z tego co zrozumiałem, Twój problem polega na tym że jak odznaczysz checkboxa to potem nie widzisz go w tablicy $_POST? Tak?? Bo takie właśnie rozwiązanie podałem (może być mały błąd ale sam musisz do niego dojść, a co!)

Daj nam jeszcze to i powiedz co jest nie tak
kielich
28.05.2010, 20:44:56
OK napisze raz jeszcze z kodem wiec tak mam checkboxa
<input type="checkbox" name="a[<?php echo $row['id']; ?>]" value="1" style="float:right; margin:15px 10px 0 0;"
<?php if($row['status'] == '1'){echo "checked='checked'";}?> />
i
UPDATE
$act = $_POST['a'];
foreach($act as $a => $b)
{
$query = "UPDATE user SET status = '$b' WHERE id = '$a'";
}
}
I działa to tak
mam np. 5 checkboxów zaznaczam i wysyłam po czym jest zaznaczony bo w bazie 1 ale chce go odznaczyć i wysłać to już nie działa bo w checkboxie jest 0
OK problem rozwiązałem sam , dzięki za odpowiedzi .
webmaniak
29.05.2010, 07:18:33
Jeśli rzeczywiście rozwiązałeś problem to podziel się, bo może ktoś inny skorzysta(także może i ja). Ja na razie mam taki update po naciśnięciu w link ale checkbox też byłby ok, nawet lepszy, jak dla mnie.
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.