Я недавно использовал facebox, и все в порядке. Но когда я использую его с codeigniter, это так сложно для меня. В этом коде, который я положил в codeigniter:
<a rel="facebox" href="<?php echo site_url('logincon/vieworders/');?>">View Orders</a>
Я намерен передать его с определенным идентификатором, как этот код ниже, который не работает в CI:
<a rel="facebox" href="echo site_url('logincon/vieworders'))" id='.$row['reservation_id'].' title="Click To View Orders">View Orders</a>
Что есть что?
Вот мои коды:
В моем контроллере:
public function vieworders()
{
// $this->data['date'] = $this->loginmod->getdate();
$data['date'] = $this->loginmod->getdate();
$data['name'] = $this->loginmod->getimage();
$data['order'] = $this->loginmod->getorderdetail();
$data['reservation'] = $this->loginmod->getdesign();
$this->load->view('vieworders', $data);
}
В моей модели:
public function getdate(){
$q=$this->db->get('orders_date');
if($q->num_rows()>0){
return $q->result_array();
}
}
public function getimage() {
$query = $this->db->get("image");
if($query->num_rows()>0){
return $query->result_array();
}
}
public function getorderdetail() {
$query = $this->db->get("order_detail");
if($query->num_rows()>0){
return $query->result_array();
}
}
public function getdesign()
{
$query = $this->db->get('reservation');
if($query->num_rows()>0){
return $query->result_array();
}
}
И на мой взгляд:
<table cellpadding="1" cellspacing="1" id="resultTable">
<thead>
<tr>
<th style="border-left: 1px solid #C1DAD7">Order Date </th>
<th>Photo size </th>
<th> Quantity </th>
</tr>
</thead>
<tbody>
<tr class="record">
<?php foreach ($date as $da) { ?>
<td><div align="left"><?php echo $da['date']; ?></div></td>
<?php } ?>
<?php foreach ($name as $images) { ?>
<td style="border-left: 1px solid #C1DAD7;"><?php echo $images['name']; ?> </td>
<?php } ?>
<?php foreach ($order as $detail) { ?>
<td><?php
echo $detail['quantity'];?></td>
<?php } ?>
</tr>
</tbody>
Вывод этих, он показывает всю дату, имя и количество, которые находятся в базе данных. Это моя проблема, я хочу только одну строку или только один вывод на каждый запрос.
Насколько я вижу, метод, который вы используете, трудно поддерживать, когда вы углубляетесь в свой проект, потому что создание функции для каждой таблицы в файле модели не очень хорошая идея, это займет много времени, что если вы напишите обобщенную функцию, которая Лучше работать и легко запомнить.
Теперь доходит до того, что вы создали четыре функции, и я собираюсь создать две универсальные функции вместо четырех, и это будет ценно в вашем проекте и также решит вашу проблему.
Функция для возврата данных одной строки
function get_record($table, $where=NULL)
{
if(!empty($where))
{
$this->db->where($where);
}
$query=$this->db->get($table);
if($query->num_rows>0)
{
return $query->row();
}
else
{
return 0;
}
}
Функция для возврата данных нескольких строк
function get_records($table, $where=NULL)
{
if(!empty($where))
{
$this->db->where($where);
}
$query=$this->db->get($table);
if($query->num_rows>0)
{
return $query->result();
}
else
{
return array();
}
}
Теперь зависит от вашей погоды, чтобы получить набор результатов (полные записи) или выбрать только одну строку, чтобы увидеть, насколько это просто.
Для единичных результатов
$data['date'] = $this->loginmod->get_record('orders_date');
$data['name'] = $this->loginmod->get_record('image');
$data['order'] = $this->loginmod->get_record('order_detail');
$data['reservation'] = $this->loginmod->get_record('reservation');
Теперь для нескольких записей
$data['date'] = $this->loginmod->get_records('orders_date');
$data['name'] = $this->loginmod->get_records('image');
$data['order'] = $this->loginmod->get_records('order_detail');
$data['reservation'] = $this->loginmod->get_records('reservation');
Посмотреть
Это для нескольких записей, если вы используете функцию get_records, поэтому вы должны использовать foreach для циклического просмотра каждого результата и отображения его здесь.
<tr class="record">
<?php foreach ($date as $da) { ?>
<td><div align="left"><?php echo $da->date; ?></div></td>
<?php } ?>
<?php foreach ($name as $images) { ?>
<td style="border-left: 1px solid #C1DAD7;"><?php echo $images->name; ?> </td>
<?php } ?>
<?php foreach ($order as $detail) { ?>
<td><?php
echo $detail->quantity;?></td>
<?php } ?>
<?php foreach ($reservation as $row) { ?>
<td>
<a rel="facebox" href="<?=site_url('logincon/vieworders')?>" id='<?=$row['reservation_id']?>' title="Click To View Orders">View Orders</a>
</td>
<?php } ?>
</tr>
Но если вы использовали функцию get_record, вам больше не нужен цикл foreach, просто проверьте if (isset ()) и выведите столбец.
<?php if(isset($name)) { ?>
<td style="border-left: 1px solid #C1DAD7;"><?php echo $name['name']; ?> </td>
<?php } ?>
<?php if(isset($order)) { ?>
<td><?php
echo $order['quantity'];?></td>
<?php } ?><?php if(isset($reservation)) { ?>
<td>
<a rel="facebox" href="<?=site_url('logincon/vieworders')?>" id='<?=$row['reservation_id']?>' title="Click To View Orders">View Orders</a>
</td>
<?php } ?>
Я надеюсь, что это поможет вам в вашем проекте, а также прояснит вашу концепцию создания универсальных функций вместо создания функций для каждой отдельной таблицы.
Ваши таблицы базы данных должны быть связаны.
пример:
1) резервирование (rervation_id, name, …)
2) orders_date (date_id, booking_id, …)
3) изображение (image_id, booking_id, …)
4) order_detail (detail_id, booking_id, …)
<table cellpadding="1" cellspacing="1" id="resultTable">
<thead>
<tr>
<th style="border-left: 1px solid #C1DAD7">Order Date </th>
<th>Photo size </th>
<th> Quantity </th>
</tr>
</thead>
<tbody>
<tr class="record">
<?php
if ( @$reservations )
{
foreach ( $reservations as $reservation )
{
$reservation_date = $reservation_image = $reservation_detail = "";
if ( @$dates )
{
foreach ( $dates as $date )
{
if ( $date->reservation_id == $reservation->reservation_id )
{
$reservation_date = $date->name...(or anything)
}
}
}
if ( @$images )
{
foreach ( $images as $image )
{
if ( $image->reservation_id == $reservation->reservation_id )
{
$reservation_image = $images->name...(or anything)
}
}
}
if ( @$details )
{
foreach ( $details as $detail )
{
if ( $detail->reservation_id == $reservation->reservation_id )
{
$reservation_detail = $detail->name...(or anything)
}
}
}echo '<tr class="record">'
. '<td><div align="left">'.$reservation_date.'</div></td>'
. '<td style="border-left: 1px solid #C1DAD7;">'.$reservation_image.'</td>'
. '<td>'.$reservation_detail.'</td>'
.'</tr>';
}
}
?>
</tr>
</tbody>
и сделал это
<a rel="facebox" href="echo site_url('logincon/vieworders'))" id='.$row['reservation_id'].' title="Click To View Orders">View Orders</a>
использование
<?= anchor(site_url('logincon/vieworders'), 'View Orders', 'id='.$row["reservation_id"].' title="Click To View Orders"') ?>
редактировать:
модель
<?php
public function getdate()
{
$q=$this->db->get('orders_date');
$q = $this->db->query("SELECT field1, field2, date AS field3");
if ( $q->num_rows() > 0 )
{
return $q->result_array();
}
}
?>
Посмотреть
<tbody>
<tr class="record">
<?php foreach ($date as $da) { ?>
<td><div align="left"><?php echo $da['field3']; ?></div></td>
<?php } ?>
...
</tr>
</tbody>