我有这些表:(问题中不需要的列被截断了)
房间:
房间编号
房间类型:
房间类型_id房间类型房间类型默认价格
预订:
预订房间类型入住结帐
当用户通过输入所需的房间类型、到达日期、离开日期来搜索可用的房间时,必须在下拉列表中填充可用的房间类型。但是有两个问题,一个是已知的,一个是未知的。下面的代码只返回页面(视图)加载时的“数组到字符串转换错误”。
已知的问题是,房间类型的下拉列表中也充满了房间类型表中的数据。对于js/jquery计算,我在填充时连接了room_type列和room_type_default_price列。因此生成的html如下:
双人房
因此,用户输入$room_type作为例如“double room_20000”的形式出现,其中原来不存在这样的列数据。在“房间类型”表中,“房间类型”列有“双人房间”。如何将这两个值分开并将room_type_id设置为$room_type_id?
型号:
function searchRoomType($room_type) {
$query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
return $query->result();
//return $room_type_id;
//print_r ($room_type_id);
}
function searchRooms($room_type, $start_date, $end_date, $tmpRoomNumber = array()) {
$room_type_id = $this->searchRoomType($room_type);
$query = $this->db->query(
"SELECT a.room_number
FROM rooms a LEFT OUTER JOIN ( SELECT room_number
FROM reservations
WHERE checkin >= '$start_date'
AND checkout <= '$end_date'
) b
ON a.room_number = b.room_number
WHERE a.room_type_id = '$room_type_id'
AND a.housekeeping_status = 'Clean'
AND b.room_number is NULL
GROUP BY a.room_type_id
ORDER BY a.room_number ASC");
if($query->num_rows()>0) {
foreach($query->result_array() as $row) {
$tmpRoomNumber[$row['room_number']] = $row['room_number'];
}
}
return $tmpRoomNumber;
}
最佳答案
我认为你应该像这样改变函数searchroomtype
function searchRoomType($room_type) {
$query = $this->db->query(" SELECT room_type_id FROM room_types WHERE room_type = '$room_type' LIMIT 1");
foreach ($query->result() as $row)
{
$room_type_i=$row->room_type_id;
}
return $room_type_id;
}