「new_payment」テーブルと「new_reservation」テーブルでは、各行 (支払い) に res_id (new_reservation の PK と予約者、new_payment の FK、CASCADE、CASCADE) があります。3 つの入力ボックスに入力する必要があります。
総請求額: [ ]
以前に支払った: [ ]
支払額: [ ]
ユーザーが部屋番号を入力して送信すると、コントローラーは「search_by_room_number」モデルを呼び出し、次にモデルを呼び出します。
- new_reservation テーブルから「合計」を返します
- new_reservation テーブルから $res_id という変数に「res_id」を返します
- その $res_id を使用して、new_payment テーブルで以前の 'paid_amount' を探します
- ...そして new_payment テーブルの「due_amount」
しかし、予期せず、次のエラーが発生します。
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: models/payments_model.php
Line Number: 16
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: models/payments_model.php
Line Number: 18
A PHP Error was encountered
Severity: Notice
Message: Array to string conversion
Filename: models/payments_model.php
Line Number: 16
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: models/payments_model.php
Line Number: 18
モデル:
function search_by_room_number($room_number) {
$query = $this->db->query("SELECT total FROM new_reservation WHERE room_number = '$room_number' AND payment_status = 'Pending' LIMIT 1"); // Line 16
$row = $query->row();
return $row->total; // Line 18
$res_id='';
$query = $this->db->query("SELECT res_id FROM new_reservation WHERE room_number = '$room_number' AND payment_status = 'Pending' LIMIT 1");
$row = $query->row();
$res_id = $row->res_id;
$query = $this->db->query("SELECT paid_amount FROM new_payment WHERE res_id = '$res_id' LIMIT 1");
$row = $query->row();
return $row->paid_amount;
$query = $this->db->query("SELECT due_amount FROM new_payment WHERE res_id = '$res_id' LIMIT 1");
$row = $query->row();
return $row->due_amount;
}
コントローラ:
function search_room_number() {
$popRoomNumbers = $this->input->post('room_number');
$totalBill['total'] = $this->payments_model->search_by_room_number($popRoomNumbers);
$previouslyPaid['paid_amount'] = $this->payments_model->search_by_room_number($popRoomNumbers);
$dueAmount['due_amount'] = $this->payments_model->search_by_room_number($popRoomNumbers);
$tmpFormData=array_merge($totalBill, $previouslyPaid, $dueAmount);
$this->load->view('/main/new_payment', $tmpFormData);
}
意見:
<?php $attr = array(
'name' => 'totalBill',
'id' => 'totalBill',
'class' => 'span2',
'readonly'=>'true',
'value' => $total
);
echo form_input($attr);
?>
<?php $attr = array(
'name' => 'previouslyPaid',
'id' => 'previouslyPaid',
'class' => 'span2',
'readonly'=>'true',
'value' => $paid_amount
);
echo form_input($attr);
?>
<?php $attr = array(
'name' => 'dueAmount',
'id' => 'dueAmount',
'class' => 'span2',
'readonly'=>'true',
'value' => $due_amount
);
echo form_input($attr);
?>