2015-06-04 5 views
0

Я новичок в CakePHP. Сейчас у меня задача, которая самообучения, где я хочу, чтобы отобразить все данные из PhpMyAdmin между 2 выбранными датами когда пользователь нажмите «Показать» и дисплей на же странице что "index.ctp".CakePHP показать все данные между 2 датами

Однако я застрял там, где сейчас знаю, где я должен помещать коды, которые могут отображать всю информацию. Ниже приведены коды я сделал до сих пор:


Модель (room.php):

<?php 
class Room extends AppModel{ 
    public $validate = array( 
     'sdate' => array(
      'date' => array(
       //Add 'ymd' to the rule. 
       'rule' => array('date', 'ymd'), 
       'message' => 'Please select a valid start date.', 
      ), 
     ), 
    ); 
     'edate' => array(
      'date' => array(
       //Add 'ymd' to the rule. 
       'rule' => array('date', 'ymd'), 
       'message' => 'Please select a valid end date.', 
      ), 
     ), 
    ); 
} 

Controller (RoomController.php):

<?php 
    class RoomsController extends AppController{ 
     public $helpers = array('Html', 'Form'); 
     public $components = array('Session'); 

     public function index() { 

     } 

    } 
?> 

index.ctp

<h1>Room Reservation<h1> 

<table> 
    <?php 
     echo $this->Form->create('rooms', 
      array(
       'type' => 'get' 
      ) 
     ); 
     echo $this->Form->input('Start Date:', 
      array(
       'label' => 'Start Date', 
       'id' => 'sdate' 
      ) 
     ); 
     echo $this->Form->input('End Date:', 
      array(
       'label' => 'End Date', 
       'id' => 'edate' 
      ) 
     ); 
     echo $this->Form->end('Show'); 
    ?> 
</table> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#sdate').Zebra_DatePicker(); 
     $('#edate').Zebra_DatePicker(); 
    }); 
</script> 

room_type (база данных):

CREATE TABLE `room_type` (
`room_id` int(11) NOT NULL AUTO_INCREMENT, 
`room_type` varchar(10) NOT NULL, 
`no_of_room` int(10) NOT NULL, 
PRIMARY KEY (`room_id`) 
); 

room_id | room_type | no_of_room 
    1 |  A  | 10 
    2 |  B  | 10 
    3 |  C  | 10 
    4 |  D  | 10 

room_type_availability (база данных):

CREATE TABLE `room_type_availability` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`room_id` int(11) NOT NULL, 
`trx_date` date NOT NULL, 
`no_of_room` int(2) NOT NULL, 
PRIMARY KEY (`id`), ADD KEY `room_id` (`room_id`), 
CONSTRAINT `room_type_availability_ibfk_1` FOREIGN KEY (`room_id`) REFERENCES `room_type` (`room_id`) ON DELETE CASCADE ON UPDATE CASCADE 
); 

    id | room_id | trx_date | no_of_room 
    1 |  1 |2015-05-05 | 10 
    2 |  1 |2015-05-06 | 10 
    3 |  1 |2015-05-07 | 9 
    4 |  1 |2015-05-08 | 7 
    5 |  1 |2015-05-09 | 6 
    6 |  2 |2015-05-05 | 8 
    7 |  2 |2015-05-06 | 3 
    8 |  2 |2015-05-07 | 6 
    9 |  2 |2015-05-08 | 4 
    10 |  2 |2015-05-09 | 5 

Если дата выбрана: в База данных , она отображает room_type_availability database.

Else если дата выбрана являются не в базы данных, он будет отображать базу данных room_type.

Надеюсь, вы, ребята, можете дать совет.

Спасибо за помощь и оценку.

:)

ответ

0
//in controller 

public function index() { 

    if($this->request->isPost()) { 
     $obj = $this->loadModel('RoomTypeAvailability'); 
     $start_date = $this->request->data['sdate']; 
     $end_date = $this->request->data['edate']; 
     // use this "between" range 
     $conditions = array('RoomTypeAvailability.trx_date BETWEEN ? and ?' => array($start_date, $end_date)); 
     $data = $this->RoomTypeAvailability->find('all',array('conditions'=>$conditions)); 
     $this->set('data', $data); 
    } 
} 

в номере модели

class Room extends AppModel{ 

public $useTable = false; 

public $validate = array( 
    'sdate' => array(
     'date' => array(
      //Add 'ymd' to the rule. 
      'rule' => array('date', 'ymd'), 
      'message' => 'Please select a valid start date.', 
     ), 
    ), 
); 
    'edate' => array(
     'date' => array(
      //Add 'ymd' to the rule. 
      'rule' => array('date', 'ymd'), 
      'message' => 'Please select a valid end date.', 
     ), 
    ), 
); 
} 

в RoomType модели

class RoomTypeAvailability extends AppModel { 

    public $useTable = 'room_type_availability'; 

    public $validate = array(); 
} 

// индекс.CTP

<h1>Room Reservation<h1> 

<table> 
    <?php 
     echo $this->Form->create('rooms', 
      array(
       'type' => 'post' 
      ) 
     ); 
     echo $this->Form->input('Start Date:', 
      array(
       'label' => 'Start Date', 
       'id' => 'sdate', 
       'name' => 'sdate' 
      ) 
     ); 
     echo $this->Form->input('End Date:', 
      array(
       'label' => 'End Date', 
       'id' => 'edate', 
       'name' => 'edate' 
      ) 
     ); 
     echo $this->Form->end('Show'); 
    ?> 
</table> 
<?php if(isset($data) && count($data)>0) { ?> 
<table> 
    <tr> 
     <th>id</th> 
     <th>room_type</th> 
     <th>trx_date</th> 
     <th>no_of_date</th> 
    </tr> 

    <?php foreach($data as $row) { ?> 
     <tr> 
      <td><?php echo $row['RoomTypeAvailability']['id']?></td> 
      <td><?php echo $row['RoomTypeAvailability']['room_type']?></td> 
      <td><?php echo $row['RoomTypeAvailability']['trx_date']?></td> 
      <td><?php echo $row['RoomTypeAvailability']['no_of_date']?></td> 
     </tr> 
    <?php } ?> 

</table> 
<?php } ?> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#sdate').Zebra_DatePicker(); 
     $('#edate').Zebra_DatePicker(); 
    }); 
</script> 
+0

я получил эту проблему Ошибки: Вызов неопределенной метод RoomsController :: найти() Кстати, спасибо за помощь :) –

+0

обновления моего ответа. – Supravat

+0

спасибо за помощь, но он не отображает таблицу , где sdate и edate на контроллере отображаются Undefined index :( –

Смежные вопросы