Генерировать список флажков и перебирать их массив в php / js

#php #javascript #arrays #post #checkbox

#php #javascript #массивы #Публикация #флажок

Вопрос:

Хорошо, я довольно озадачен, просматривая этот код более 3 часов.

Я генерирую массив флажков, например:

 <?php

while($row=mysql_fetch_array($result)){
// here generate some more html...   
    echo '<table><tr><td><input type="checkbox" name ="ordered" onchange="checked()"/></td></tr>'
echo "</table>";
?>
 

У меня есть две функции js, подобные этой:

 <head>
<script>
function removeDuplicateElement(arrayName){
  var newArray=new Array();
  label:for(var i=0; i<arrayName.length;i   ){  
    for(var j=0; j<newArray.length;j   ){
        if(newArray[j]==arrayName[i]) 
            continue label;
    }
    newArray[newArray.length] = arrayName[i];
  }
  return newArray;
}

var array = new Array();
function checked(){
var chkOrd = document.myForm.ordered;

    for (i=0; i < chkOrd.length; i  ){
        if(chkOrd.checked){
            array.push(chkOrd[i]);
            //document.myForm.hid.value =chkOrd[i].value;
            document.myForm.hid.value  = removeDuplicateElement(array);
            //alert("kliknuto je na "   array[1]);
        }
    }
}

</script>
</head>
 

и когда я отправляю информацию на php с этим:

 $hid = $_POST['hid'];
echo $hid;
 

Я всегда получаю пустой массив, как будто никакие флажки не передаются в php. Я знаю, что php отправляет только проверенные флажки, но мой массив пуст, даже если есть флажки… Я думаю, что есть некоторые проблемы с сгенерированными флажками, потому что я не могу получить даже один элемент массива флажков.

Заранее благодарю…

Комментарии:

1. аааа … если вы хотите отправить список флажков, добавьте [] в name атрибут. Посмотрите, что произойдет потом.

2. Я уже пробовал этот способ, но не сработал. Но в любом случае я предпочитаю делать эту часть в js и просто отправлять результат в php через скрытое поле, потому что таким образом я получаю в порядке нажатия флажков.

3. Ну, я не вижу, где вы создаете эти скрытые элементы ввода. выполнение просто ...myForm.hid.value =... не сделает этого. Вам нужно использовать один из методов createElement, зависит от вашей библиотеки или от того, используете ли вы core JS.

4. @ItayMoav могу ли я просто использовать временную переменную и объединить значение с предыдущими значениями, вставляя ‘ между элементами? А затем разделите строку, чтобы превратить ее в массив…

5. Вы определенно можете отправить все это как одно значение (объединенное( и затем обработать его на стороне сервера.