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

[PHP] odbieranie danych z formularza - checkbox (tablica)
NewUser2k13
  • Rejestracja:ponad 11 lat
  • Ostatnio:17 dni
  • Postów:210
0

HTML:

Kopiuj
<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:

Kopiuj
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.

edytowany 1x, ostatnio: NewUser2k13
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Lokalizacja:700m n.p.m.
  • Postów:677
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.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 3x, ostatnio: TomRZ
NewUser2k13
  • Rejestracja:ponad 11 lat
  • Ostatnio:17 dni
  • Postów:210
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.

Miang
  • Rejestracja:około 7 lat
  • Ostatnio:4 minuty
  • Postów:1677
0

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


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
NewUser2k13
Tak, tak jak opisałem w pierwszym poście.
Miang
  • Rejestracja:około 7 lat
  • Ostatnio:4 minuty
  • Postów:1677
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?


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
Tasmanian Devil
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.9954624)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.