3

私はこれらのテーブルを持っています:(不要な列は質問で切り捨てられました)

部屋: room_id | room_type_id | 部屋番号

room_types: room_type_id | 部屋タイプ | room_type_default_price

予約: reservation_id room_type | チェックイン | チェックアウト

  1. ユーザーが目的の部屋タイプ、到着日、出発日を入力して利用可能な部屋を検索する場合、利用可能な部屋タイプをドロップダウンに入力する必要があります。ただし、2 つの問題があり、1 つは既知で、もう 1 つは不明です。以下のコードは、ページ (ビュー) の読み込み時に「配列から文字列への変換エラー」のみを返します。

  2. 既知の問題は、部屋タイプのドロップダウンに room_types テーブルのデータも含まれていることです。JS/jQuery の計算では、入力時に room_type 列と room_type_default_price 列を連結しました。したがって、生成された HTML は次のようになります。

ダブルルーム

したがって、ユーザー入力の $room_type は、たとえば "Double Room_20000" のようになりますが、元は列データが存在しません。ただし、部屋タイプの表では、room_type 列に「ダブルルーム」があります。これら 2 つの値を分離して、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;

}
4

1 に答える 1

0

関数 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;
}
于 2013-09-23T05:13:07.653 に答える