Я изменил свой код, я использовал firebug console.log для определения погоды, когда php получает массив, переданный или нет. и firebug отображает это – rescheck [] = 2 & rescheck = 1 & rescheck = 3
Я думаю, что php получает массив, если THATS, какой должен быть массив в php.
SO, если это правильно, как вставить этот массив в базу данных? или как его зацикливать? цикл foreach, сделанный ive, не работал.
КОД JQUERY:
$('#res-button').click(function (){ var room_id=$('[name=rescheck[]]:checked').serialize().replace(/%5B%5D/g,'[]'); alert(room_id); $.ajax({ type: "POST", url: "reservation-valid.php", data: {name_r:name_r, email_r:email_r,contact_r:contact_r,prop_id:p_id,cvalue:room_id}, success: function(data) { console.log(data); } }); }); <input type="checkbox" name="rescheck[]" value="<?php echo $roomid; ?>" />
PHP-код:
$c_array=$_POST['cvalue']; echo $c_array; //foreach($c_array as $ch) //{ //$sql=mysql_query("INSERT INTO reservation VALUES('','$prop_id','$ch','$name_r','$contact_r','$email_r','')"); //}
Я думаю, что мой код jquery был прав, но я не знаю, как получить это с помощью PHP.
room_id – это массив, поэтому, если вы хотите получить значение для каждого, сначала вам нужно собрать все значение.
var room_id_string = ''; for(i=0;i<room_id.length;i++){ room_id_string += room_id.eq(i).val() + ','; }
ваш ниже код будет передавать только объект Array jquery из [name=rescheck[]]:checked
to room_id
Вместо этого вам нужно будет создать массив и нажать на него значения, как это
var room_id = Array(); $('[name=rescheck[]]:checked').each(function(){ room_id.push($(this).val()); });
В jQuery вам может быть проще использовать функцию serialize для получения всех данных формы. jQuery передает форму серверу, поэтому вам не нужно беспокоиться о получении всех значений. Если вы используете его вместе с плагином проверки, вы можете найти его немного проще!
http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Это то, что я делаю на моем сайте для сохранения в db списка флажков с jquery и ajax-вызовом. Он создает массив и передает его на вызов ajax, а скрипт php обрабатывает массив. Если вы получаете какую-либо ошибку здесь, вы должны отлаживать массив js с помощью firebug, чтобы убедиться, что он сформирован правильно.
js script:
var $checkBox = $('[name=rescheck[]]:checked'); $checkBox.each(function() { if ($(this).is(":checked")){ valuesCheck[this.value] = 1; }else{ valuesCheck[this.value] = 0; }
и скрипт PHP:
$checkTab = $_POST['cvalue']; foreach ($checkTab as $idChkTab => $checkedOrNot){ if ($checkedOrNot== "0"){ //do something if isn't checked }