Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] wielokrotny checkbox
webspy
post 8.11.2012, 21:17:24
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


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?

Ten post edytował webspy 8.11.2012, 21:17:45
Go to the top of the page
+Quote Post
Piogola
post 8.11.2012, 21:20:03
Post #2





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

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


  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


--------------------
Google Manual
Go to the top of the page
+Quote Post
d3ut3r
post 8.11.2012, 21:20:51
Post #3





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Nic nie jest źle smile.gif, tak właśnie działa checkbox, nie przesyła informacji o nie zaznaczonych elementach.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
webspy
post 8.11.2012, 21:30:51
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


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.
Go to the top of the page
+Quote Post
d3ut3r
post 8.11.2012, 21:43:04
Post #5





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


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.  


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
webspy
post 8.11.2012, 21:58:08
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


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>


Ten post edytował webspy 8.11.2012, 22:11:18
Go to the top of the page
+Quote Post
d3ut3r
post 8.11.2012, 22:09:48
Post #7





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


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 ?


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
webspy
post 8.11.2012, 22:16:49
Post #8





Grupa: Zarejestrowani
Postów: 186
Pomógł: 9
Dołączył: 3.03.2008

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


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

Ten post edytował webspy 8.11.2012, 22:34:57
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: 7.07.2025 - 17:22