因此,我在自定义php上有了这个现有的代码段。我正在检查数据库中是否有现有的绘画细节。如果绘画细节r发现,我需要获得最新增加的细节,直到计数6&打印的细节相应。这是我的代码->
<?php
$pData=mysql_query("select * from painting_data");
if($pData === FALSE) {
echo "<div class='well'>No painting available.</div>";
}
else{
$pDet=mysql_query("Select * from painting_data order by padd desc limit 6");
while($pD=mysql_fetch_assoc($pDet)){
$pId=$pD['pid'];
$pTitle=$pD['ptitle'];
$pImg=$pD['pimg'];
?>
<div class="col-lg-2 col-md-4 col-sm-6 img-recent-container">
<img role="button" class="img-thumbnail img-responsive img-recent" onclick="location.href='?p=<?php echo $pId; ?>'" src="..<?php echo $pImg;?>" alt="<?php echo $pTitle;?>"/>
</div>
<?php }
} ?>现在我是新来的..。&我对如何正确地分离数据检索感到困惑。因为else块中也有一个查询。我很困惑如何不把它包括在视图中。
发布于 2015-10-09 17:28:43
您应该只使用模型中的DB数据,并将返回的结果传递给控制器。这是MVC模式。
P_m.php (模型)
P_m extends CI_Model
{
public $return = [];
public function __construct()
{
parent::__construct();
$this->load->database();//or load it in APPPATH . 'config/autoload.php'
}
public function p()
{
$q = $this->db->query("select * from painting_data");
$return['error'] = $q->num_rows() > 0 ? FALSE : TRUE;
$q->free_result();
if ($return['error'] === FALSE)
{
$q = $this->db->query("Select * from painting_data order by padd desc limit 6");
$this->return = $q->result();
}
return $return;
}
}P_c.php (控制器):
P_c extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->model('p_m');//if used more often, load it in APPPATH . 'config/config.php'
}
public function index()
{
$output_data['data_from_p_m'] = $this->p_m->p();
$this->load->view('p_v', $output_data);
}
}p_v.php (视图):
if ( $data_from_p_m['error'] === FALSE )
{
var_dump($data_from_p_m);
}
else
{
echo "<div class='well'>No painting available.</div>";
}您必须在while循环之前声明数组,才能得到所有的6 $pId、$ptitle和$pimg。
发布于 2015-10-09 17:10:06
看起来您正在视图中执行db查询,是吗?
应用程序流程应该如下所示:控制器->模型->控制器->视图
当用户访问您的网站url时,控制器是用户登陆的地方。控制器调用模型,模型处理数据库,并将结果返回给控制器(我更喜欢从db获取数据并填充数组,然后将数组返回给控制器),控制器然后加载视图并与其一起提供数组。视图简单地遍历数组,最好在循环中创建html。如果数据库中没有记录,或者如果有错误,还需要一些系统。
示例代码:
Controller :
class Mypage extends CI_Controller {
public function index ( )
{
$this->load->model ( 'Mypage _model' );
$data['dbdata'] = $this->mypage_model->get ();
/** Check Errors */
if ( $data['dbdata'] === FALSE ) { //show 404 or something else }
$data[ 'title' ] = 'my Page';
$this->load->view ( 'mypage', $data);
}
}
Model :
class Login_model extends CI_Model {
public function __construct()
{
$this->error ['error'] = TRUE;
}
public function get ( )
{
$data = array ();
/** Get your database records here.*/
if ( $some_error_condition ) return FALSE;
if ( $no_records_found ) return $this->error;
return $data;
}
}
View :
if ( isSet( $error ) ) // no records found.
{
//do something
}
else {
foreach ( $dbdata as $key => $value )
{
//do something
}
}https://stackoverflow.com/questions/33043189
复制相似问题