我有一个图书网站,我希望用户在选择购买某个图书时重定向到感谢页面,感谢页面将包含对图书的推荐(就像所选书籍的相同类别一样)
简要说明我想在这里传递来自flash会话中数据库的数据
但是我收到以下错误
致命错误:main()[function.main]:脚本尝试执行方法或访问不完整对象的属性。请确保在 unserialize()被调用之前加载了您正在尝试操作的对象的类定义“CI_DB_mysql_result”,或者提供__autoload()函数来加载/ home / content中的类定义/27/10962827/html/beta/application/views/thanks.php在线
我有一个像以下
的控制器// get the same category books
$this->db->select('*');
$this->db->from('category');
$this->db->where('category.id', $page_details->row()->category_id);
$this->db->join('books', 'books.category_id = category.id');
$this->db->limit(4, random_string('numeric', 1));
$categories = $this->db->get();
$this->session->set_flashdata('categories', $categories);
redirect('order/thanks', 'refresh');
public function thanks()
{
$categories = $this->session->flashdata('categories');
$this->load->view('control_front', array('page' => 'thanks', 'categories ' => $categories ));
}
这是视图
<div class="recommended">
<?php if($categories->num_rows() > 1): ?>
<h3>كتب مقترحة :</h3>
<?php foreach($categories->result() as $cat): ?>
<div class="single-recomm">
<a href="<?php echo site_url( 'book/'.$cat->id ) ?>">
<img src="<?php echo site_url() . 'uploads/' . $cat->uploaded_image ?>">
<p><?php echo $cat->name .' '. $cat->sname ?></p>
</a>
</div> <!-- end single-recomm -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- end recommended -->
答案 0 :(得分:1)
一旦你调用了$this->db->get();
,那么就没有理由使用或者再次获取数据,因为你在foreach loop
中做错了没有意义使用$categories->result()
你已经使用get
获取了数据,并且在$categories
中你有信息所以只循环它,因此你得到这个错误,因为你没有{{1}中的必需对象调用$categories
函数
在控制器中运行查询也是一种不好的做法,所有业务逻辑和数据库处理都应该在result()
models
您已将数据传递到感谢视图,只需遍历<div class="recommended">
<?php if(!empty($categories)): ?>
<h3>كتب مقترحة :</h3>
<?php foreach($categories as $cat): ?>
<div class="single-recomm">
<a href="<?php echo site_url( 'book/'.$cat->id ) ?>">
<img src="<?php echo site_url() . 'uploads/' . $cat->uploaded_image ?>">
<p><?php echo $cat->name .' '. $cat->sname ?></p>
</a>
</div> <!-- end single-recomm -->
<?php endforeach; ?>
<?php endif; ?>
</div> <!-- end recommended -->
$categories
答案 1 :(得分:1)
由于安全性和加载,这不是通过会话传递数据的好方法 您可以使用这样的重定向传递类别:
//$this->db->select('t1.id');
// $this->db->from('category AS t1');
// $this->db->where('t1.id', $page_details->row()->category_id);
// $this->db->join('books', 'books.category_id = t1.id');
// $this->db->limit(4, random_string('numeric', 1));
// $categories = $this->db->get();
//$this->session->set_flashdata('categories', $categories);
redirect('order/thanks/'.$page_details->row()->category_id.'', 'refresh');
并在感谢函数内部根据此category_id获取记录并将其传递给视图
答案 2 :(得分:0)
我的解决方案。 建立控制器tanks.php
然后在index()函数中加载数据。
并且
在buy proccesing
的提交功能中您可以重定向到tanks.php控制器。
我希望清楚。