Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dynamicznie dodawany input checbox
ufo1990
post 27.01.2022, 16:08:53
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

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


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


Ten post edytował ufo1990 27.01.2022, 16:11:14
Go to the top of the page
+Quote Post
nospor
post 27.01.2022, 16:42:45
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 27.01.2022, 16:55:55
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

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


źle napisałem w pierwszej wiadomości tzn. pierwszy input to input type="text" a drugi to input="checkbox".
Go to the top of the page
+Quote Post
nospor
post 27.01.2022, 17:03:02
Post #4





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 27.01.2022, 17:53:26
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

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


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. }
Go to the top of the page
+Quote Post
nospor
post 27.01.2022, 18:00:01
Post #6





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




Naprawde nie musisz robic zadnych array_keys.

Zobacz co zwraca
print_r($_POST);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 27.01.2022, 18:39:46
Post #7





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

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


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?

Ten post edytował ufo1990 27.01.2022, 18:59:04
Go to the top of the page
+Quote Post
nospor
post 27.01.2022, 19:09:34
Post #8





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 27.01.2022, 19:18:47
Post #9





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

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


Faktycznie mój błąd, ponieważ skupiłem na drugiej tablicy. Czasem najsprośniejsze rozwiązanie jest najlepsze. Dzięki za pomoc smile.gif

Ten post edytował ufo1990 27.01.2022, 19:19:34
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: 29.03.2024 - 09:04