Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: multi checkbox w tablicach array - a wpis do mysql
Forum PHP.pl > Forum > PHP
jaco1410
Znalazłem błąd w swoim kodzie przy zapisie wartości pola "checkbox" formularza, a mianowicie:

mam dwa kolejne pola checkbox o takiej samej nazwie pola "name", wynika to z zastosowanej pętli w formularzu i musi tak pozostać
  1. 1linia: <input type=checkbox name=poprawna_1[] value="1" >
  2. 2linia: <input type=checkbox name=poprawna_1[] value="1" >

przyjmijmy założenie że zaznaczam tylko pole "checkbox" w 2 linii

zapisuję poniższym kodem do tabeli mysql (jest tak samo dla pól mysql - text i ENUM)
  1. $ile1 = $_POST["ilePytan"]; //w powyższym przykładzie będzie to wartość 2
  2. $a=0;
  3. while($a <= $ile1-1) {
  4. $zapytanie = "INSERT INTO pytania SET pytanie='$pytanie[$a]', odp_1='$odp_1[$a]', poprawna_1='$poprawna_1[$a]'";
  5. mysql_query($zapytanie);
  6. $a++;
  7. };

niestety wartość value="1" otrzymała 1 linia zamiast 2, tak jakby brak zaznaczenia w tablicy array w 1 linii nie był brany pod uwagę,
myślałem o jakiejś funkcji sprawdzania w formularzu i wstawianiu odpowiedniej wartości(0,1) ale nie bardzo wiem z której strony to ugryźć..

pozdrawiam
tehaha
1. użyj pętli foreach
2. co to za składnia INSERT INTO? --> manual mysql
3. można to dodać jednym zapytaniem a nie wieloma
4. jak masz te checkboxy jako tablica, to ustawienie dla każdego wartości jeden jest bez sensu, muszą być różne wartości, bo do jednej nazwy przypisujesz wiele wartości
jaco1410
poproszę o jakiś przykład gdzie miałbym użyć tej pętli foreach,
co do 4 punktu jakby było tak łatwo to bym się o to nie pytał, zresztą to i tak by nic nie dało bo jak nie zaznaczę to nie mam tej wartości...
CuteOne
  1. $ile1 = $_POST["ilePytan"]; //w powyższym przykładzie będzie to wartość 2
  2. $a=0;
  3.  
  4. while($a <= $ile1-1) {
  5.  
  6. foreach($_POST['poprawna_1'] as $list) {
  7.  
  8. mysql_query("INSERT INTO pytania (pytanie, odpowiedz, poprawna) VALUES ('{$pytanie[$a]}', '{$odp_1[$a]}', '{$list}')");
  9. }
  10.  
  11. $a++;
  12. }


  1. <input type="checkbox" name="poprawna_1[]" value="1">
  2. <input type="checkbox" name="poprawna_1[]" value="2">
  3. <input type="checkbox" name="poprawna_1[]" value="3">

jaco1410
Hej,

niestety nie działa to, po zastąpieniu tymczasowo zapytania do mysql na
  1. echo "$list";

otrzymam odpowiedz ale powtórzoną $a razy (gdzie $a to jest ilość pytań),
czyli jak mam 3 tak jak w Twoim przykładzie formularza otrzymam wynik:

przy 3 zaznaczonych checkboxach:
123123123

przy 2 zaznaczonych checkboxach:
121212

itd..

może jest jakieś inne rozwiązanie?
pozdrawiam
CuteOne
  1. foreach($_POST['poprawna_1'] as $list) {


podmien na to

  1. foreach($_POST['poprawna_'.$a] as $list) {
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.