Есть форма, которая через AJAX выводит предварительные результаты выбора чекбоксов, в виде таблицы. Затем среди результатов пользователь чекбоксит то, что ему нужно и опять AJAX'ом это должно выводиться под формой. Проблема в том, что уже проверенная в бою конструкция Код (Text): if( count($_POST['var1']) > 0 ) { $varq1 = implode(',',$_POST['var1']); $str.= ' AND type IN('.$varq1.')'; } совершенно не хочет складывать "в одну копилку" значения отмеченных чекбоксов. Прошу помощи советом. Подробности: пример начальной формы Код (Text): <input type="checkbox" class="place" name="place[]" id="place" value="42" onclick="Hotels();">Имеретинка <input type="checkbox" class="place" name="place[]" id="place" value="8" onclick="Hotels();">Красная Поляна <input type="checkbox" class="place" name="place[]" id="place" value="10" onclick="Hotels();">Дагомыс <input type="checkbox" class="place" name="place[]" id="place" value="9" onclick="Hotels();">Лазаревское ее функция ajax: Код (Text): function Hotels() { var query; var s = $('input:checked, #place','form').serialize(); query = s; Request2(query); } функция Request2 Код (Text): function Request2(query) { req.open('post', 'hotelsearchajax.php' , true ); req.onreadystatechange = Refresh; req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); req.send(query); } php-обработчик конкретной части формы (значения отмеченных чекбоксов уходят в запрос, перечисленные через запятую): Код (Text): if( count($_POST['type']) > 0 ) { $type = implode(',',$_POST['type']); $str.= ' AND type IN('.$type.')'; } После того, как выводятся предварительные результаты, та же самая схема - не работает. POST уходит с верными данными, echo $_POST['var1']; показывает что все верно. Но формироваться implode не хочет ((
implode раскладывает массив, а не строку. Если вы говорите, что echo все норм показывает, то каким боком тут implode? echo бы не показал вам норм, если бы вы в него массив зафигачили бы. Ко всему этому я не разу не увидел, где у вас $_POST['place'].
Прошу прощения. пример собирал из кусков. обработчик, конечно, такой: Код (Text): if( count($_POST['place']) > 0 ) { $place= implode(',',$_POST['place']); $str.= ' AND place IN('.$place.')'; } ну так секундами ранее это же срабатывает... я в обработчик предыдущего запроса отправляю данные в точно таком же формате: place%5B%5D=42, принимаю через Код (Text): if( count($_POST['place']) > 0 ) { $place= implode(',',$_POST['place']); $str.= ' AND place IN('.$place.')'; } на выходе получаю запрос: Код (Text): $sql = "SELECT * FROM таблица WHERE town=4 AND place IN(42)"; Добавлено спустя 28 минут 54 секунды: сейчас обработчик такой: Код (Text): if( count($_POST['var1']) > 0 ) { $varq1 = implode(',',$_POST['var1']); $str.= ' AND `hotel_id` IN('.$varq1.')'; } echo '<pre>'; var_dump($varq1); echo '</pre>'; echo 'id:'.$varq1.'<br>'; echo 'str:'.$str.'<br>'; echo $_POST['var1']; . на выходе: Код (Text): NULL ID: STR: AND `HOTEL_ID` IN() HOTEL%5B%5D=9&HOTEL%5B%5D=10&HOTEL%5B%5D=34 кстати, вот обработчик ajax: Код (Text): function selecthotel() { $(function(){ var s = $('input:checked, #hotel','form2').serialize(); alert(s); $.ajax({ type: "POST", url: "hotelselectajax.php", data: {var1:s}, success: function(html) { $("#ajax2").html(html); } }); document.getElementById('ajax2').innerHTML = '<br>loading2'; }); } Добавлено спустя 10 минут 6 секунд: Разобрался. Обработчик ajax мне косячил. Ну или я, с его помощью )) Сделал по-другому: Код (Text): function selecthotel() { var query; var s = $('input:checked, #hotel','form').serialize(); query = s; Request3(query); } function Request3(query) { req.open('post', 'hotelselectajax.php' , true ); req.onreadystatechange = Refresh; req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); req.send(query); } Только ajax - полу-темный лесок для меня и не соображу пока как назначить отдельную функцию на вывод результата, но это уже дело наживное... Спасибо!
Сделал по-конски пока что. Последний AJAX включает в себя и предпоследний AJAX по второму разу, чтобы выводились результаты обоих, а не так, чтобы последний замещал собой предпоследний )))))))))))))