Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]CHECKBOX i UPDATE
Forum PHP.pl > Forum > Przedszkole
kielich
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ć questionmark.gif
jaslanin
w jakiej formie są checkboxy, tzn. mają name="name[]" czy name="name1", name="name2", jaką masz strukturę tabeli w bazie danych.
kielich
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:

  1.  
  2. if (isset($_POST['act'])){
  3. $act = $_POST['act'];
  4. foreach($act as $a => $b)
  5. {
  6. $query = mysql_query("UPDATE user SET status = '$b' WHERE id = '$a'");
  7. }
  8. }

No i zaznacza na 1 ale nie wiem jak zrobić kiedy jest zaznaczone żeby odznaczyć i zmienić w bazie na 0
tehaha
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
ł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
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
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
Jakiś przykład mogę prosić questionmark.gif

I jak poda mi ktoś jakieś dobre rozwiązanie...

Bardzo proszę o jakiś przykład jak mogę to fajnie rozwiązać ....
zend
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
Możesz napisać jak miałbym to zrobić ...kurcze od wczoraj się męczę i nie wiem , nie potrafię tego jakoś ogarnąć
zend
Jak tego nie zrozumiesz to już nic Ci nie pomoże hehe smile.gif
  1. $select = 'select którym pobierasz dane do checkboxów do formularza';
  2. $array = $db -> fetchAll($select);
  3.  
  4. foreach($array as $row)
  5. {
  6. if(!isset($_POST['checkbox'][$row['id']]))
  7. $db -> query('Delete where id = $row[id]');
  8. }
kielich
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 ... smile.gif
zend
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!) smile.gif

Daj nam jeszcze to i powiedz co jest nie tak
  1. echo '<pre>';
  2. print_r($_POST);
  3. echo '</pre>';
kielich
OK napisze raz jeszcze z kodem wiec tak mam checkboxa

  1. <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
  1. if (isset($_POST['a'])){
  2. $act = $_POST['a'];
  3.  
  4. foreach($act as $a => $b)
  5. {
  6. $query = "UPDATE user SET status = '$b' WHERE id = '$a'";
  7.  
  8. if($wykonaj=mysql_query($query)){
  9.  
  10. }
  11. }


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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.