使用表格

时间:2019-07-02 05:29:28

标签: javascript php arrays forms foreach

我正在使用表单向PHP页面发送3个带有复选框的数组(已选中和未选中),试图在MySQL数据库中进行插入。当我发送一个长度为1的数组时,它可以很好地插入,但是当选中2或3个复选框时,长度大于1的数组会显示(并插入),结果是数组的索引为0,因为它位于索引处首先是1。

我正在使用WAMP 3.1.7 64位,PHP 7.2.14和Brackets。这些阵列称为“ electricidad”,“ proyector”和“ wifi”。我使用nuevaSala函数(元素)创建带有按钮的复选框,函数checkboxElegido()用于更改已选中复选框的值(默认为no)。

<script>
        var instancia = 0;

        function nuevaSala(element){
            instancia++;

            var newDiv = document.createElement("DIV");
            newDiv.name = "nuevasSalasDiv[]";
            newDiv.id = "nuevasSalas"+instancia;

            var newLabel = document.createElement("LABEL");
            newLabel.id = "Sala"+instancia;
            newLabel.innerHTML = "Sala "+instancia;

            var newInput = document.createElement("INPUT");
            newInput.id = "sala"+instancia;
            newInput.name = "nombreSala[]";
            newInput.type = "text";

            var newLabel1 = document.createElement("LABEL");
            newLabel1.id = "Capacidad"+instancia;
            newLabel1.innerHTML = "Capacidad";

            var newInput1 = document.createElement("INPUT");
            newInput1.id = "capacidad"+instancia;
            newInput1.name = "capacidad[]";
            newInput1.type = "number";

            var newCheckbox = document.createElement("input");
            newCheckbox.type = "checkbox";
            newCheckbox.name = "electricidad[]";
            newCheckbox.id = "electricidad"+instancia;
            newCheckbox.value = "no";
            newCheckbox.setAttribute("onclick", "checkboxElegido()");            
            newCheckbox.setAttribute("style", "float: right");

            var newCheckbox1 = document.createElement("input");
            newCheckbox1.type = "checkbox";
            newCheckbox1.name = "wifi[]";
            newCheckbox1.id = "wifi"+instancia;
            newCheckbox1.value = "no";
            newCheckbox1.setAttribute("onclick", "checkboxElegido()");
            newCheckbox1.setAttribute("style", "float: right");

            var newCheckbox2 = document.createElement("input");
            newCheckbox2.type = "checkbox";
            newCheckbox2.name = "proyector[]";
            newCheckbox2.id = "proyector"+instancia;
            newCheckbox2.value = "no";
            newCheckbox2.setAttribute("onclick", "checkboxElegido()");
            newCheckbox2.setAttribute("style", "float: right");

            var newLabelElec = document.createElement("LABEL");
            newLabelElec.innerHTML = "Electricidad";
            newLabelElec.setAttribute("style", "float: right");
            var newLabelProy = document.createElement("LABEL");
            newLabelProy.innerHTML = "Proyector";
            newLabelProy.setAttribute("style", "float: right");
            var newLabelWifi = document.createElement("LABEL");
            newLabelWifi.innerHTML = "Wifi";
            newLabelWifi.setAttribute("style", "float: right");

            document.getElementById("salaId").appendChild(newDiv);
            document.getElementById("nuevasSalas"+instancia).appendChild(newLabel);
            document.getElementById("nuevasSalas"+instancia).appendChild(newInput);
            document.getElementById("nuevasSalas"+instancia).appendChild(newLabel1);
            document.getElementById("nuevasSalas"+instancia).appendChild(newInput1);
            document.getElementById("nuevasSalas"+instancia).appendChild(newLabelElec);
            document.getElementById("nuevasSalas"+instancia).appendChild(newCheckbox);
            document.getElementById("nuevasSalas"+instancia).appendChild(newLabelProy);
            document.getElementById("nuevasSalas"+instancia).appendChild(newCheckbox2);
            document.getElementById("nuevasSalas"+instancia).appendChild(newLabelWifi);
            document.getElementById("nuevasSalas"+instancia).appendChild(newCheckbox1);
            document.getElementById("nuevasSalas"+instancia).appendChild(document.createElement("BR"));

        }

    </script>
<script>

        function checkboxElegido(){
            var proy = document.getElementsByName("proyector[]");

            var wifi = document.getElementsByName("wifi[]");

            var elec = document.getElementsByName("electricidad[]");


            function valores(item){
                if(item.checked){
                    item.setAttribute("value", "si");    
                } else if(!item.checked){
                    item.setAttribute("value", "no");
                }

            }

            proy.forEach(valores);
            wifi.forEach(valores);
            elec.forEach(valores);

        }

    </script>

如果阵列的长度为2,并且在索引0中选中的复选框为“ electricidad”,在索引1中选中的复选框为“ wifi”,“ electricidad”和“ proyector”,则我希望这样:

[0] =“ electricidad” => si,“ wifi” =>否,“ proyector” =>否

[1] =“ electricidad” => si,“ wifi” => si,“ proyector” => si

但是我明白了:

[0] =“ electricidad” => si,“ wifi” => si,“ proyector” => si

[1] =“ electricidad” => si

事先,谢谢!

0 个答案:

没有答案