Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dynamicznie dodawany input checbox
Forum PHP.pl > Forum > PHP
ufo1990
Mam dwie tablice inputów
  1. <input type="checkbox" name="name[]"><input type="checkbox" name="check[]">
, które są powielane dynamicznie za pomocą jquery.
Mam problem z walidacją inputa typu"checkbox" tzn. jeśli np. zaznaczę 2 checkboxy i wpiszę dwie wartości w inputa text to jest ok, natomiast w sytuacji kiedy zaznaczę tylko jednego checboxa wyższego niż 1 to zawsze zwracana jest wartość pierwszego inputa typu name. Poniżej przesyłam skrócony kody aby zobrazować co dokładnie mi chodzi.


  1. $name_value = array_values($_POST['name']);
  2. $check_value = array_values($_POST['check']);
  3.  
  4. foreach($name_value as $index => $value)
  5. {
  6. if(isset($check_value[$index]))
  7. {
  8. echo $name_value [$index].'-'.$check_value [$index];
  9. }
  10. }
nospor
Musisz dodawac indexy do tych tablic

<input type="checkbox" name="name[0]"><input type="checkbox" name="check[0]">
<input type="checkbox" name="name[1]"><input type="checkbox" name="check[1]">
itd
wtedy dokladnie dostaniesz info ktory zostal wyslany i jak bedziesz mial okienka to sobie w php obrobisz jak trzeba
ufo1990
źle napisałem w pierwszej wiadomości tzn. pierwszy input to input type="text" a drugi to input="checkbox".
nospor
Moj poprzedni post jest nadal wazny. Bez okreslonych indeksow bedziesz mial zawsze dziury spowodu checkboxow. Indexy pozwalaja ci sie zorientowac czy checkbox byl zaznaczony czy nie
Twoja glowna tablica bedzize tablica inputow i jej indeksy beda wskazywaly na checkbox. Jak index checkbow istnieje to wiez ze byl zaznaczony. Banalne rozwiazanie banalnego problemu wink.gif
ufo1990
Zrobiłem coś takiego ale nie do końca to działa.

  1. $name_value = array_keys($_POST['name']);
  2. $check_value = array_keys($_POST['check']);
  3.  
  4. foreach($name_value as $index => $value)
  5. {
  6. if($name_value[$index] == $check_value[$index])
  7. {
  8. echo $check_value[$index].'='.$name_value[$index].'<br>';
  9. }
  10. }
nospor
Naprawde nie musisz robic zadnych array_keys.

Zobacz co zwraca
print_r($_POST);
ufo1990
ok, print_r wyżuca mi wszystkie zmienne tablicy tylko nadal nie mam pomysłu jak zrobić działające porównanie sad.gif

Przy zaznaczeniu dwóch checkboxów mam na zwrtocie
  1. array(2) { [0]=> string(4) "Logo" [1]=> string(4) "Logo" }
  2. array(2) { [0]=> string(2) "on" [1]=> string(2) "on" }


Więc pytanie jak teraz zrobić walidacje względem klucza?
nospor
Mowilem ze names to twoja glowna tablica, no troche samodzielnosci.

  1.  
  2. $names = $_POST['name'];
  3. $checks = $_POST['check'];
  4.  
  5. foreach ($names as $key => $name) {
  6. if (isset($checks[$key])) {
  7. blabla
  8. } else {
  9. inne blabla
  10. }
  11. }

Takie skomplikowane? wink.gif
ufo1990
Faktycznie mój błąd, ponieważ skupiłem na drugiej tablicy. Czasem najsprośniejsze rozwiązanie jest najlepsze. Dzięki za pomoc smile.gif
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-2024 Invision Power Services, Inc.