[PHP] odbieranie danych z formularza - checkbox (tablica)

0

HTML:

<div>
<label for="x_property_3">Check It:</label>
<input name="x_property_3[]" type="hidden" value="">
<input name="x_property_3[]" type="checkbox" value="Tak">Tak<br>
<input checked="" name="x_property_3[]" type="checkbox" value="Nie">Nie<br>
</div>

$_POST:
title

PHP:

foreach($_POST as $key=>$val){					
	// UPDATE WHERE
}

Myślę, myślę i nic z tego nie wychodzi.
Jak w pętli iterując po zmienny w $_POST "połączyć" pola z tym samym atrybutem 'name' (pola typu checkbox)
Dodam, że nie mogę odwołać się bezpośrednio po nazwie x_property_3 ponieważ jest ona generowana losowo.
W tym momencie nieważne ile checkboxów bym nie zaznaczył, to finalnie w bazie ląduje ten, który jest "niżej" w drzewie DOM (tak - wiem, że się nadpisują, bo update robi się 3 razy xD )

Pytanie jak to ogarnąć z poziomu tej pętli iterującej po przesyłanych elementach.

0

Zamiast checkbox powinieneś zastosować radio jeżeli pola mają mieć tą samą nazwę, a jeżeli już musi to być checkbox to zrób pola o różnych nazwach, np.: true_x_property_3 dla opcji TAK, oraz false_x_property_3 dla opcji NIE.

Poza tym, po co dodajesz [] do nazwy - to tworzy tablicę, i po co Ci pole hidden?

Jeżeli nie wiesz jaki dokładnie będzie numer, iterując po POST możesz zastosować wyrażenia regularne do rozpoznawania (regexp) lub nawet prościej przez funkcję substr.

0

@TomRZ:
Pola dodatkowe dodawana są do formularza w sposób dynamiczny i to użytkownik decyduje o typie, nazwie oraz opcjach dostępnych dla wstawianego elementu.
Może akurat przytoczony przykład nie jest najtrafniejszy (bo zaznaczenie opcji Tak oraz Nie wzajemnie się wyklucza), ale chodzi mi tutaj o przechwycenie tych wartości i ich połączenie (implode), tak aby całość poleciała do bazy oddzielona jakimś tam znakiem.
np
Tak;Nie

Pole typu hidden potrzebuję po to, że w momencie gdy żaden checkbox nie został zaznaczony "coś" musi lecieć do bazy - nawet jeśli to "coś" jest pustym stringiem.

0

w $_POST w php masz kilka różnych wartości dla tego samego klucza???????

1

mi dla Twojego przykładu wychodzi array(1) { ["x_property_3"]=> array(3) { [0]=> string(0) "" [1]=> string(3) "Tak" [2]=> string(3) "Nie" } }
a o użyciu implode sam wspominasz więc w czym problem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1