Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Dodawanie wartości checkbox do bazy
Wojciechovsky
post 12.05.2015, 22:17:30
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 23.03.2015

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


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?
Go to the top of the page
+Quote Post
salfunglandyare
post 12.05.2015, 22:21:08
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


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. }
Go to the top of the page
+Quote Post
Comandeer
post 12.05.2015, 22:51:25
Post #3





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


A nie wygodniej
Kod
<input type="checkbox" name="row[]" value="<?=$idZBazy;?>">

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

?


--------------------
Go to the top of the page
+Quote Post
salfunglandyare
post 12.05.2015, 22:56:53
Post #4





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


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

Ten post edytował salfunglandyare 12.05.2015, 23:00:11
Go to the top of the page
+Quote Post
Comandeer
post 12.05.2015, 23:00:14
Post #5





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


@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ć


--------------------
Go to the top of the page
+Quote Post
salfunglandyare
post 12.05.2015, 23:02:24
Post #6





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


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
Go to the top of the page
+Quote Post
robertpiaty
post 12.05.2015, 23:18:48
Post #7





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

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


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


--------------------
Go to the top of the page
+Quote Post
Wojciechovsky
post 12.05.2015, 23:58:36
Post #8





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 23.03.2015

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


Dzięki za pomoc - już działa smile.gif

robertpiaty - i co potem sprawdzasz po przypisaniu wartości?
Go to the top of the page
+Quote Post
robertpiaty
post 15.05.2015, 11:48:29
Post #9





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

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


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.

Ten post edytował robertpiaty 15.05.2015, 11:50:24


--------------------
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: 7.06.2025 - 18:28