Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML][CSS][JavaScript]Dużo checkbox
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Mam coś takiego:
Kod
<script type="text/javascript">
    function set(obj) {
        if (obj.value == '0') {
            obj.value = 1;
        }else{
            obj.value = 0;
        }
    }
</script>


  1. <?php
  2.    
  3.    echo '<form method="post">';
  4.    
  5.    for ($x=0; $x < 13; $x++) {
  6.        for ($i=0; $i < 13; $i++) {
  7.            echo "<input type=\"checkbox\" name=\"area[$x][$i]\" onclick='set(this);' value='0'>\nr";
  8.        }
  9.        echo '<br>';
  10.    }
  11.    
  12.    echo '<input type="submit" name="submit" value="Zatwierdz">';
  13.    echo '</form>';
  14.    
  15.    if ($_POST['submit']) {
  16.        echo '<pre>';
  17.            print_r($_POST);
  18.        echo '</pre>';
  19.    }
  20.    
  21. ?>


To tak dla przykładu co chcę zrobić. Lecz nie podoba mi się wysyłanie tylu inputów do użytkownika (transfer?), poza tym ze strony użytkownika jest trudno się w tym połapać.

Wielkość musi być dokładnie taka jak tu, użytkownik może zaznaczyć więcej niż jedno pole - na tej podstawie po przesłaniu będę generował tablicę w LUA.

Problem pojawia się też, że js ładnie zmienia value po kliknięciu ale chciałbym też dostać w post te niezaznaczone box'y... (te o value równym 0)

Ma ktoś pomysły? biggrin.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
golaod
post
Post #2





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


No skoro Ci się nie podoba ilość checkboxów i chcesz przy okazji mieć tyle checkboxów to wybacz ale nie rozumiem.

Co do tablicy z {0,1}

  1. <input type="hidden" name="tablica[0][1]" value="0" /> <input type="checkbox=" name="0,1" value="0" />


I dla onclick w checkbox sprawdzasz wartosc checkboxa i podmieniasz ja z polem hidden, a jeśli chcesz mieć mniejszy plikt html to po prostu onsubmit i zmień przed wysłaniem wszystkie checkboxy na hidden i już.

Ten post edytował golaod 18.06.2009, 10:23:09
Go to the top of the page
+Quote Post
erix
post
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Ma ktoś pomysły?

Zrób sobie najpierw "czystą" tablicę w PHP z samymi zerami, potem "zrównuj" odpowiednio z tym, co przychodzi w POST.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
osl
post
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


nie wiem po co i dlaczego, ale tak na szybko przychodzi mi do głowy tylko onsubmit + sprawdzanie checkboxów + dodawanie x razy input[type="hidden"] symulującego checkboxa... smile.gif
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Da się to jakoś np. graficznie za pomocą javascript, css, ajax? Naprowadźcie mnie - resztę wymyślę sam.

Erix - dobry pomysł, thx. Jakoś z wielowymiarowością sobie poradzę. ;p


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Erix - dobry pomysł, thx. Jakoś z wielowymiarowością sobie poradzę. ;p

Ta, jedną funkcją z API. ;p

Cytat
Da się to jakoś np. graficznie za pomocą javascript, css, ajax? Naprowadźcie mnie - resztę wymyślę sam.

To znaczy?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
golaod
post
Post #7





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Nie wiem czy korzystasz z jquery czy nie w każdym razie:
Kod
$( "input:checkbox" ).click( function() {
  $( this ).value( $( this ).value() == 1 ? 0 : 1 );
}
$( "form" ).submit( function() {
  $( this ).find( "input:checkbox" ).attr( "type", "hidden" );
}


I dzięki temu w php dostaniesz tablicę area ze wszystkimi checkboxami.

Ten post edytował golaod 18.06.2009, 10:36:06
Go to the top of the page
+Quote Post
Fifi209
post
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(golaod @ 18.06.2009, 11:35:56 ) *
Nie wiem czy korzystasz z jquery czy nie w każdym razie:
Kod
$( "input:checkbox" ).click( function() {
  $( this ).value( $( this ).value() == 1 ? 0 : 1 );
}
$( "form" ).submit( function() {
  $( this ).find( "input:checkbox" ).attr( "type", "hidden" );
}


I dzięki temu w php dostaniesz tablicę area ze wszystkimi checkboxami.


Tak korzystam. Zaraz przetestuję i dam edita.

Cytat(erix @ 18.06.2009, 11:29:40 ) *
Ta, jedną funkcją z API. ;p

Ja w planach miałem przelecieć pętlami przez te wielowymiarowe tablice, ale skoro jest funkcja. ;p
Niestety nie znalazłem niczego co by mnie zadowoliło, więc chętnie usłyszę dalsze podpowiedzi.

Cytat(erix @ 18.06.2009, 11:29:40 ) *
To znaczy?


np.

Zrobiłbym graficzne pole - jeden checkbox to byłby np. kwadrat 25X25px, tylko że po kliknięciu musiałbym albo podmienić ten obrazek albo nałożyć na niego (na to tło) kolejną warstwę.

@edit

Co do jQuery - nie działa tak jak powinno
Zrobiłem to tak:
Kod
$(document).ready(
    function() {
        $("input:checkbox" ).click(
            function() {
                $(this).val(
                    $(this).val() == 1 ? 0 : 1
                );
            }
        );
        
        
        $("form").submit(
            function() {
                $(this).find("input:checkbox").attr("type", "hidden");
            }
        );
    });


I php
  1. <?php
  2.    
  3.    echo '<form method="post">';
  4.    
  5.    for ($x=0; $x < 13; $x++) {
  6.        for ($i=0; $i < 13; $i++) {
  7.            echo "<input type=\"checkbox\" name=\"area[$x][$i]\" value='0'>\nr";
  8.        }
  9.        echo '<br>';
  10.    }
  11.    
  12.    echo '<input type="submit" name="submit" value="Zatwierdz">';
  13.    echo '</form>';
  14.    
  15.    if ($_POST['submit']) {
  16.        echo '<pre>';
  17.            print_r($_POST);
  18.        echo '</pre>';
  19.    }
  20.    
  21. ?>


Ten post edytował fifi209 18.06.2009, 11:07:15


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Niestety nie znalazłem niczego co by mnie zadowoliło, więc chętnie usłyszę dalsze podpowiedzi.

array_merge" title="Zobacz w manualu PHP" target="_manual? tongue.gif

Cytat
Zrobiłbym graficzne pole - jeden checkbox to byłby np. kwadrat 25X25px, tylko że po kliknięciu musiałbym albo podmienić ten obrazek albo nałożyć na niego (na to tło) kolejną warstwę.

Ale po co? Uzależniać podstronę od JS?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 18.06.2009, 12:08:00 ) *
Ale po co? Uzależniać podstronę od JS?


Z tego będę korzystał tylko ja i kumpel, także z js nie ma problemów.

Cytat(erix @ 18.06.2009, 12:08:00 ) *


Tak, widziałem ją w manualu - tylko czy dobrze sklei te tablice... (klucze i wartości)

Ten post edytował fifi209 18.06.2009, 11:12:01


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To wtedy generuj tabelkę przez JS, po co PHP wtedy? ;]

PHP do zapisu, masz createElement, to korzystaj. [;


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post
Post #12





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 18.06.2009, 12:11:50 ) *
To wtedy generuj tabelkę przez JS, po co PHP wtedy? ;]

PHP do zapisu, masz createElement, to korzystaj. [;


Moja wiedza z zakresu javascript jest ... dobra jest mała bardzo. ;d
Chyba będzie się trzeba podszkolić.

Tak na boku, co do generowania przez js da się w jQuery? (Tylko mnie nie odsyłajcie do ich durnej dokumentacji)

Ten post edytował fifi209 18.06.2009, 11:21:16


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tylko mnie nie odsyłajcie do ich durnej dokumentacji

Ale w czym jest durna...? Naprawdę nie rozumiem tego stwierdzenia w stosunku do tego wiki, które się często przydaje... Dokumentację akurat mają dobrą.

Cytat
Tak na boku, co do generowania przez js da się w jQuery?

Pamiętasz Ani Mru-Mru? snitch.gif

Cytat
Chyba będzie się trzeba podszkolić.

Wystarczy Ci tamta fraza, co podałem w poprzednim poście.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post
Post #14





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 18.06.2009, 12:30:39 ) *
Ale w czym jest durna...? Naprawdę nie rozumiem tego stwierdzenia w stosunku do tego wiki, które się często przydaje... Dokumentację akurat mają dobrą.

Szukałem kiedyś o $.ajax znalazłem dużo, nie umiałem nic sklecić sam. Poczytałem jakiś kurs/poradnik i od razu mi wyszło. I tak z masą innych funkcji. Może piszą niezrozumiałym dla mnie językiem.

Cytat(erix @ 18.06.2009, 12:30:39 ) *
Pamiętasz Ani Mru-Mru? snitch.gif

Zależy które skecze. ;p

Cytat(erix @ 18.06.2009, 12:30:39 ) *
Wystarczy Ci tamta fraza, co podałem w poprzednim poście.


A no właściwie wystarczy.

Skleciłem póki co taki kodzik:
  1. <head>
  2. <script type="text/javascript" src="jQuery.js"></script>
  3. <script type="text/javascript">
  4. function CreateCheckBox(name) {
  5. var tag = document.createElement('input');
  6. tag.setAttribute('type', 'checkbox');
  7. tag.setAttribute('value', 0);
  8. tag.setAttribute('name', name);
  9.  
  10. var area = document.getElementById('area');
  11. area.appendChild(tag);
  12. }
  13.  
  14. function generuj() {
  15. for (x=0; x < 13; x++) {
  16. for (i=0; i < 13; i++) {
  17. CreateCheckBox('area['+x+']['+i+']');
  18. }
  19. }
  20. }
  21.  
  22. </script>
  23. </head>
  24. <body onload="generuj();">
  25. <form method="POST">
  26. <div id="area"></div>
  27. <input type="submit" name="submit" value="Generuj">
  28. </form>
  29. </body>
  30. </html>


Ale bardziej satysfakcjonowałoby mnie generowanie przez jQuery i od razu dodawanie click.

Aha próbowałem jeszcze document.write('<br>'); co jedno wykonanie pierwszej pętli - wynik - zawieszanie przeglądarki.

Ten post edytował fifi209 18.06.2009, 11:40:30


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Zależy które skecze. ;p

da śśśśśśśśśśę... [;

A po co do czegoś takiego jQuery?
Kod
function CreateCheckBox(name) {
var tag = document.createElement('input');
tag.setAttribute('type', 'checkbox');
tag.setAttribute('value', 0);
tag.setAttribute('name', name);
tag.onclick = function(e){
      alert(this.value);
}

var area = document.getElementById('area');
area.appendChild(tag);
}


Poza tym, polecam lekturę jakichś kursów jQuery, bo przydałoby się wiedzieć, co może, a co nie. Bez tego sobie nie porozmawiamy...


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post
Post #16





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 18.06.2009, 12:41:54 ) *
A po co do czegoś takiego jQuery?

A jakoś głupio mi to na myśl przyszło. (Kolega tak sugerował haha.gif)

Cytat(erix @ 18.06.2009, 12:41:54 ) *
Poza tym, polecam lekturę jakichś kursów jQuery, bo przydałoby się wiedzieć, co może, a co nie. Bez tego sobie nie porozmawiamy...


Czytałem troszkę, ale polskich jest mało.

Co do <br> co wykonanie pętli wykonuję po prostu:
Kod
var nl = document.createElement('br');
                    var area = document.getElementById('area');
                    area.appendChild(nl);



A teraz jak to wszystko przedstawić jakoś ładniej - graficznie?

Aaa właśnie, te pola hidden się nie wysyłają (oczywiście dokleiłem jQuery i kod ;p)

Z moich testów wyszło, że przy onsubmit jquery bierze tylko pod uwagę te zaznaczone. Dowodzi tego:
Kod
            $(document).ready(
                function() {
                    $('form').submit(
                        function() {
                            $(this).find('input:checkbox').val('test');
                        }
                    );
                }
            );


Ten post edytował fifi209 18.06.2009, 11:59:05


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czytałem troszkę, ale polskich jest mało.

Chyba wiesz, że 90% dokumentacji jest tylko po angielsku i po polsku nie będzie?

Cytat
A jakoś głupio mi to na myśl przyszło. (Kolega tak sugerował )

Jeśli generujesz tylko checkboxy, to całe jQ jest bez sensu (no jeśli w grę wchodzi AJAX, to wtedy nie ma się co cykać; jQ się przyda).

Cytat
A teraz jak to wszystko przedstawić jakoś ładniej - graficznie?

Pozbyć się <br />. tongue.gif


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Fifi209
post
Post #18





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(erix @ 18.06.2009, 12:58:26 ) *
Chyba wiesz, że 90% dokumentacji jest tylko po angielsku i po polsku nie będzie?

Z czasem pewnie i w języku się podszkolę.

Cytat(erix @ 18.06.2009, 12:58:26 ) *
Jeśli generujesz tylko checkboxy, to całe jQ jest bez sensu (no jeśli w grę wchodzi AJAX, to wtedy nie ma się co cykać; jQ się przyda).

Nie będzie ajax'a.

Cytat(erix @ 18.06.2009, 12:58:26 ) *
Pozbyć się <br />. tongue.gif


Mam na myśli, chcę zamiast tego obrazki ;p


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
golaod
post
Post #19





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


  1. <html>
  2. <head>
  3.    <script src="jquery-1.3.2.js"></script>
  4.    <script>
  5.        $().ready(function() {
  6.            
  7.            $('form').submit(function(){
  8.                jQuery.each($(this).find('input:checkbox'), function(){
  9.                    $(this).attr( 'checked', 'true' ).hide();
  10.                });
  11.            });
  12.            $('input:checkbox').click(function(){
  13.                $(this).val( $(this).val() == 1 ? 0 : 1 );
  14.            });
  15.        });
  16.    </script>
  17. </head>
  18. <body>
  19. <form action="a.php?do=something" method="POST" >
  20. <?php
  21. for( $i = 0 ; $i < 10 ; $i++ )
  22.    for( $x = 0 ; $x < 10 ; $x++ ) {
  23.        
  24.        ?>
  25.        <input type="checkbox" name="area[<?php echo $i; ?>][<?php echo $x; ?>]" value="0" />
  26.        <?php
  27.        echo $x == 9 ? '<br />' : '';
  28.    }
  29. ?>
  30. <input type="submit" value="?" />
  31. </form>
  32. <?php
  33. if( isset( $_GET['do'] ) ) {
  34.    
  35.    print_r( $_POST );
  36.    
  37. }
  38. ?>
  39. </body>
  40. </html>
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 Aktualny czas: 21.08.2025 - 02:44