我有一个动态形成的多个div。在每个div中,我有一个复选框列表和一个下拉列表。复选框列表包含酒店名称和类别以及包含酒店评级的单个下拉列表。用户可以选中复选框或从下拉列表中选择一个选项。默认情况下是复选框。如果用户未选中该复选框,则应考虑特定城市的下拉列表值。
这是我在控制器中尝试的代码,但我没有得到所需的结果。有人可以帮我这个吗?
if (isset($_POST['city'])) {
$city = $_POST['city'];
if (is_array($city)) {
foreach ($this->input->post('city') as $city) {
$cityid[] = $city;
// $category.= $this->input->post('category_' . $city) . ",";
// $categorycity.= $city . ",";
// $prefsightseeing.= $this->input->post('prefsight_' . $city) . ",";
// $prefsightseeingcity.= $city . ",";
//$hotel = $_POST['hotel'];
if (isset($_POST['hotel'])) {
$hotel = $_POST['hotel'];
// if (is_array($hotel) && in_array($city, $hotel)) {
foreach ($this->input->post('hotel') as $city_id) {
$arr = explode('_', $city_id);
if (in_array($arr[1], $cityid)) {
$hotelcityid.= $arr[1] . ',';
$hotelid.= $arr[2] . ',';
}
// }
}
}
else{ if (isset($_POST['category'])) {
$category = $_POST['category'];
foreach ($this->input->post('category') as $category) {
$arr = explode('_', $category);
// echo $arr[1];
// print_r($cityid);
if (in_array($arr[1], $cityid)) {
$hotelcategory.= $arr[0] . ',';
$categorycity.= $city . ',';
}
}
}
}
// $hotelid.= $arr[2] . ',';
}
$categorycity = rtrim($categorycity, ',');
$category = rtrim($hotelcategory, ',');
$category= implode(',', array_keys(array_flip(explode(',', $category))));
$categorycity= implode(',', array_keys(array_flip(explode(',', $categorycity))));
// $prefsightseeing = rtrim($prefsightseeing, ',');
// $prefsightseeingcity = rtrim($prefsightseeingcity, ',');
}
}
if ($category != "") {
$arrData['HotelInfoByCategory'] = $this->previewpackage_model->get_hotel_info_by_category($category, $categorycity);
}
谢谢,
答案 0 :(得分:2)
在复选框输入标签中将名称保留为“city []”而不仅仅是“city”,然后在您的控制器中检索为$ this-> input-> post ['city []'],它将返回检查的值数组。否则你只使用“城市”,那么只有最后检查的值才会出现在这里。所以我会说尝试使用“city []”,希望它有所帮助
答案 1 :(得分:0)
基于你的问题'显示来自帖子php的数组'我只会说
echo '<pre>';
print_r($_POST);
echo '</pre>';
它可以帮助您检查发布的数据
答案 2 :(得分:0)
我认为你错过了空变量的条件。试试这样的事情
if (isset($_POST['city']) && !empty($_POST['city']))
就其他人做同样的事情:)