Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wielokrotny checkbox
Forum PHP.pl > Forum > Przedszkole
webspy
Witam,
posiadam takie coś
  1. <input type="checkbox" name="tag[]" value="1">
  2. <input type="checkbox" name="tag[]" value="1">
  3. <input type="checkbox" name="tag[]" value="1">
  4. <input type="checkbox" name="tag[]" value="1">


Mam pole wyboru w liczbie n... jak zrobić aby każdy wybór był zczytywany, czyli np jak zaznaczę pole 2 i 4 to wynik: $tag[1]=puste; $tag[2]=1; $tag[3]=puste; $tag[4]=1;
Wyświetla mi tylko pola zaznaczone lecz tych niezaznaczonych jakby nie ma. Co tu jest źle?

Po zaznaczeniu 2 i 4 wychodzi coś takiego.
  1. Array ( [0] => 1 [1] => 1 )


Dodawałem tag[][] coś takiego ale też nie działa.
W czym jest problem?
Piogola
  1. <input type="checkbox" name="tag[0]" value="1">
  2. <input type="checkbox" name="tag[1]" value="1">
  3. <input type="checkbox" name="tag[2]" value="1">
  4. <input type="checkbox" name="tag[3]" value="1">


Jak wysyłasz formularz to wiesz, które zostały zaznaczone
d3ut3r
Nic nie jest źle smile.gif, tak właśnie działa checkbox, nie przesyła informacji o nie zaznaczonych elementach.
webspy
Cytat(Piogola @ 8.11.2012, 22:20:03 ) *
  1. <input type="checkbox" name="tag[0]" value="1">
  2. <input type="checkbox" name="tag[1]" value="1">
  3. <input type="checkbox" name="tag[2]" value="1">
  4. <input type="checkbox" name="tag[3]" value="1">


Jak wysyłasz formularz to wiesz, które zostały zaznaczone


Aby tak zaznaczyć muszę kombinować z jquery bo właśne w tym te pola są dodawane i nie wiem jak zrobić aby liczyło każde pole i dodawało +1.
Szkoda że tych pustych też nie pokazuje by był problem z głowy.
d3ut3r
skoro wszędzie przesyłasz 1 to rozumiem że konkretna wartość nie ma dla Ciebie znaczenia ? wówczas możesz zrobić:

  1. <input type="checkbox" name="tag[]" value="1">
  2. <input type="checkbox" name="tag[]" value="2">
  3. <input type="checkbox" name="tag[]" value="3">
  4. <input type="checkbox" name="tag[]" value="4">


a w PHP możesz dać:

  1.  
  2. $tags=array();
  3. $max=4;
  4.  
  5. if (is_array($_POST['tags'])){
  6.  
  7. for($i=1;$i<=$max;$i++){
  8.  
  9. if (in_array($i,$_POST['tags'])){
  10. $tags[$i]=1;
  11. } else{
  12. $tags[$i]=0;
  13. }
  14. }
  15.  
  16. }
  17.  
  18. var_dump($tags);
  19.  
webspy
Nigdy nie wiem ile będzie tego $max.

Zasada polega na dodawaniu pola przez jquery i wyglada to mniejwięcej tak:
  1. <label for=\'txt3" + id + "\'><input type=\'checkbox\' name=\'tag[]\' value=\'1\' id=\'txt" + id + "\'>pole</label>


Może zastosować inne pole niż checkbox z podobną funkcją? chodzi mi tylko o to że jak się zaznaczy to daje jakąś wartość i żebym wiedział które pole to jest.

Opis <input name="nazwa[]"> Zaznaczenie checkbox
Opis2 <input name="nazwa[]"> Zaznaczenie checkbox

wynik:
opis tresc - zaznaczone
opis2 tresc - nie zaznaczone

potem to zapisuje do bazy mysql w formie że do opis jest wynik 1 a do opis2 jest 0


To może ktoś by dał radę podpowiedzieć jak w java zrobić aby każde z dodanych pól miało o jedną wartość więcej:
Kod:
Kod
<script type="text/javascript">
function addFormField() {
    var id = document.getElementById("id").value;
    $("#divTxt").append("<p class=\'formularz_nazwa_tag\' id=\'row" + id + "\'><label for=\'txt" + id + "\'>Nazwa <input class=\'tagi2\' type=\'text\' name=\'tag_nazwa[]\' value=\'\' id=\'txt" + id + "\'> </label><label for=\'txt2" + id + "\'>Kod <input class=\'tagi2\' type=\'text\' name=\'tag_kod[]\' value=\'\' id=\'txt" + id + "\'> </label><label for=\'txt3" + id + "\'>Opis <input class=\'tagi_opis\' type=\'text\' name=\'tag_opis[]\' value=\'\' id=\'txt" + id + "\'> </label> <label for=\'txt3" + id + "\'><input type=\'checkbox\' name=\'tag_textarea[TUTAJ za każdym nowym +1]\' value=\'1\' id=\'txt" + id + "\'> Textarea**</label> &nbsp<a href=\'#\' onClick=\'removeFormField(\"#row" + id + "\"); return false;\'><img src=\"img/delete.gif\" alt=\"\"></a> <p>");


    $(\'#row\' + id).highlightFade({
        speed:1000
    });

    id = (id - 1) + 2;
    document.getElementById("id").value = id;
}

function removeFormField(id) {
    $(id).remove();
}
</script>
d3ut3r
Możesz przerobić i zamiast $max=4 wpisać:

  1. $max=max($_POST['tags']);


trochę dużo kombinowania ... podejrzewam że ktoś wpadnie na lepszy pomysł sam chętnie się dowiem bo nigdy z taką sytuacją nie miałem do czynienia, ale skoro pola dodajesz dynamicznie w jquery to dlaczego nie dodasz ich od razu z nazwą tag[1], tag[2] itd ?
webspy
Bo w jquery nie mam pojęcia jak się to robi i java też kuleje. Przykład wziąłem z neta i przerobiłem go pod własne potrzeby a jak się robi aby dodawało tag[1] i tag[2]... to czarna magia smile.gif tak to jest jak java nie była mi do niczego potrzebna przy tworzeniu www.



No i trochę pokombinowałem i działa, tak to jest jak się nie zna głupich podstaw javy.

Wystarczyło dać takie coś: tag[" + id + "] i to cała filozofia. Teraz gdy się doda pole to uzyskuję to co chciałem czyli tag[1], tag[2] itd...

Dzięki za pomoc. Temat do zamknięcia
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.