Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wysyłanie POSTEM "niezaznaczonego" checkboxa
Forum PHP.pl > Forum > Przedszkole
mistrzuniu1
Jest jakiś sposób na wysłanie POSTEM niezaznaczego checkboxa?

Tzn mam kilka tych checkboxów, których name="tablica[]" i chciałbym, aby wysyłane były POSTEM te niezaznaczone/
Kshyhoo
To?

A tak w ogóle, to możesz robić tak:
  1. <input type="hidden" name="pole" value="0" />
  2. <input type="checkbox" name="pole" value="1" />
mistrzuniu1
Cytat(Kshyhoo @ 3.01.2017, 21:12:39 ) *
To?

A tak w ogóle, to możesz robić tak:
  1. <input type="hidden" name="pole" value="0" />
  2. <input type="checkbox" name="pole" value="1" />


Tylko, że ja pod value mam id z bazy danych do którego się odwołuje.
I chciałbym sie odwołać właśnie do nich

  1. <input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label>
  2. <input type="checkbox" name="check_list[]" value="Java"><label>Java</label>
  3. <input type="checkbox" name="check_list[]" value="PHP"><label>PHP</label>
  4. <input type="checkbox" name="check_list[]" value="HTML/CSS"><label>HTML/CSS</label>
  5. <input type="checkbox" name="check_list[]" value="UNIX/LINUX"><label>UNIX/LINUX</label>


Mam coś podobnego do tego i chciałbym, żeby value niezaznaczone wyslalo sie w POST, gdzie dalej w php robie w zmiennej sesyjnej tablice zlozona z niezaznaczonych elementów.
Pyton_000
Pokrętna logika. Skoro masz to wyciągane z BD to po wysłaniu wybierz z BD wszystko co NIE jest ID przesłanym.
Przypisanie danych pobranych od usera to nie jest dobry pomysł. Musisz zweryfikować te dane.
mistrzuniu1
Cytat(Pyton_000 @ 3.01.2017, 21:40:13 ) *
Pokrętna logika. Skoro masz to wyciągane z BD to po wysłaniu wybierz z BD wszystko co NIE jest ID przesłanym.
Przypisanie danych pobranych od usera to nie jest dobry pomysł. Musisz zweryfikować te dane.


Hmm, tak tez nie da rady.
To jest jakby na zasadzie "ulubionych"
User wybiera swoje ulubione np. zdjecia, wysyła je postem. Ja tworze mu galerie jego ulubionych zdjęć. Teraz z tych ulubionych on wybiera kilka i klika "usun" i na tej podstawie tworze znów galerie ulubionych.
Pyton_000
No to przekazuj sobie dodatkowo do pola hidden aktualną tablicę z danymi w formacie json, potem przy wysyłaniu bierzesz tą tablicę i już. Wywalasz z niej zaznaczone i koniec.
mistrzuniu1
Cytat(Pyton_000 @ 3.01.2017, 21:53:13 ) *
No to przekazuj sobie dodatkowo do pola hidden aktualną tablicę z danymi w formacie json, potem przy wysyłaniu bierzesz tą tablicę i już. Wywalasz z niej zaznaczone i koniec.


Nigdy nie używałem JSON.
Jest jakas funkcja, która przekonwertuje mi moją aktualna tablice na format json?
arturpiotrowski
http://php.net/manual/en/function.json-encode.php ?
mistrzuniu1
<input type="hidden" name="tablica[]" value="<?=json_encode($_SESSION['animals'])?>">

Chodzi co cos takiego?
Jak mogę wykorzystać teraz ta tablice?

Czy tablica w formacie JSON mogę posługiwać się tak samo jak zwykła tablica?
Tzn czyścić pamieć unset, i przepisywac poprostu znakiem"="?
Tomplus
Po przesłaniu przez formularz stosujesz odwrotność do json_encode czyli:
  1. $myAnimals = json_decode($_POST[$klucz_tablicy_json], true);
  2. echo "Mój kotek ma na imię: ".$myAnimals['cat'];
mistrzuniu1
Tak wysyłam:
  1. <input type="hidden" name="tablica[]" value=<?=json_encode($_SESSION['animals'])?>>


Tak probuje robocze odczytać wartości

  1. var_dump(json_decode($_POST['tablica']));


I dostaje taki komunikat, jakoby wysłana tablica nie istniała ;/
Warning: json_decode() expects parameter 1 to be string, array given in /var/www/dev/web/galeriawphpulubione.php on line 28
NULL


Podszedłem troche inaczej do tego problemu

  1. if(isset($_POST['check_list_out']))
  2. {
  3. $ile=count($_SESSION['animals']);
  4. $ile1=count($_POST['check_list_out']);
  5. for($i=0; $i<$ile1; $i++)
  6. {
  7. for($x=0; $x<$ile; $x++)
  8.  
  9. {
  10. if($_SESSION['animals'][$x]==$_POST['check_list_out'][$i]);
  11. unset($_SESSION['animals'][$x]);
  12. }
  13. }
  14. }


Tylko, że teraz usuwa nie zaznaczone, ale wszystkie elementy.
Jak mogę temu zaradzic?
Niree
tablica
pętla
sprawdzasz czy jest zaznaczony
reszta kodu

Przykład:

<input name="test[]" type="checkbox" value="Blabla">
<input name="test[]" type="checkbox" value="Blabla2">
<input name="test[]" type="checkbox" value="Blabla3">
<input name="test[]" type="checkbox" value="Blabla4">
<input name="test[]" type="checkbox" value="Blabla5">

  1. if(isset($_POST['test']))
  2. {
  3. for($x=0; $x < count($_POST['test']);$x++)
  4. {
  5. if(isset($_POST['test'][$x])) echo 'zaznaczony'; else echo 'niezaznaczony';
  6. }
  7. }


Zaznaczone odejmujesz od niezaznaczonych i masz liste niezaznaczonych.
Tomplus
Cytat(mistrzuniu1 @ 4.01.2017, 16:53:11 ) *
I dostaje taki komunikat, jakoby wysłana tablica nie istniała ;/
Warning: json_decode() expects parameter 1 to be string, array given in /var/www/dev/web/galeriawphpulubione.php on line 28
NULL


Bo wprowadzasz json_decode() tablicę, a nie string.

Gdybyś zamiast name='tablica[]' użył name='tablica' to miałbyś zgłowy.
inaczej twój POST wygląda tak:

$_POST['tablica'][0] = '{"json":"jakis string JSON"}';
więc sam rozumiesz $_POST['tablica'] to jest ARRAY, a to $_POST['tablica'][0] STRING.
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.