Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie wartości checkbox do bazy
Forum PHP.pl > Forum > Przedszkole
Wojciechovsky
Cześć, mam następujący problem:
Posiadam podstronę, na której znajduje się lista rozwijana, której wartości są pobierane z bazy danych - wszystko jest ok.
Natomiast dalej chcę stworzyć checkboxy - które wartości są pobierane również z bazy danych:
  1. while($row=mysqli_fetch_array($result))
  2. {
  3. echo '<p align=left><input type="checkbox" name="'.$row['id'].'" value="'.$row['id'].'" />'.$row['nazwa'].'</p>';
  4. }

A po wypełnieniu zaznaczonych checkboxów, wartości zostaną dodane do bazy.
W jaki sposób dodać wartości wszystkich checkboxów do bazy danych?
salfunglandyare
Zaznaczone checkboxy ida do $_POST, te nie zaznaczone nie są wysyłane, więc sprawdzaj:
  1. if(isset($_POST[$row['id']])){
  2. //dodaj do bazy
  3. }
Comandeer
A nie wygodniej
Kod
<input type="checkbox" name="row[]" value="<?=$idZBazy;?>">

i później w PHP po prostu
  1. foreach($_POST['row'] as $value)

?
salfunglandyare
Wygodniej, zwłaszcza jeśli $key=>$value i dla input name="row[<?=$row['id']; ?>]" w innym przypadku może dać zupełnie inny wynik od przewidywanego. W odpowiedziach staram się utrzymać kontekst pytającego biggrin.gif
Comandeer
@salfunglandyare zauważ, że w przykładowym kodzie [name] === [value], więc wychodziłoby na to, że indeks row[] nie jest w ogóle istotny wink.gif Ale fakt - jeśli chce coś przekazać, to lepiej się zabezpieczyć
salfunglandyare
Szczerze, to nie wiem, jak on chce się dostać do przekazywanych danych i moja optymistyczna natura wierzy w to, że on wie tongue.gif także ja tylko tak... wiesz... profilaktycznie biggrin.gif
robertpiaty
Cytat(salfunglandyare @ 12.05.2015, 23:21:08 ) *
Zaznaczone checkboxy ida do $_POST, te nie zaznaczone nie są wysyłane, więc sprawdzaj:
  1. if(isset($_POST[$row['id']])){
  2. //dodaj do bazy
  3. }


Ja żeby nie robić sobie dodatkowego sprawdzania co się nie wysłało robię taki znany trik:
  1. <input type="hidden" name="a" value="0" />
  2. <input type="checkbox" name="a" value="1" />


To tak też profilaktycznie smile.gif
Wojciechovsky
Dzięki za pomoc - już działa smile.gif

robertpiaty - i co potem sprawdzasz po przypisaniu wartości?
robertpiaty
Jeśli checkbox nie jest zaznaczony to w PHP $_POST['a'] będzie równe 0, a jeśli jest zaznaczony to $_POST['a'] będzie równe 1. Dzięki temu nie muszę sprawdzać która wartość nie jest wysłana żeby stwoerdzić że checkbox przy niej nie był zaznaczony.

Na pewno taki trik stosują frameworki Zend i Yii.
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.