Массив переворачивается при отправке с использованием формы - PullRequest
0 голосов
/ 02 июля 2019

Я отправляю 3 массива с флажками (проверено и нет) с помощью формы на страницу PHP, пытаясь выполнить вставку в базу данных MySQL.Когда я отправляю массив с длиной = 1, он вставляется просто отлично, но массивы с длиной, превышающей 1, отображаются (и вставляются) в обратном порядке, когда установлены 2 или 3 флажка, занимающих индекс 0 массива, поскольку он был в индексеСначала 1.

Я использую 64-битный WAMP 3.1.7, PHP 7.2.14 и скобки.Массивы называются «Electricidad», «Proyector» и «Wi-Fi».Я создаю флажки с помощью кнопки, используя функцию 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, и установленный флажок «electricidad» в индексе 0, а установленный в индексе 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

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...