所以我有这个现有的代码片段自定义php..我试图检查是否有现有的绘画细节在db..如果发现了绘画细节,我需要获得最新添加的细节,直到计数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 }
} ?>
现在我是CI的新手。,我对如何正确分离数据检索感到困惑。因为else块中也有一个查询。我很困惑如何不包括它在视图
您应该只在模型中处理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循环之前声明array才能获得所有6个$pId
, $ptitle
和$pimg
。
看起来你在视图中做数据库查询,是吗?
应用程序流程应该是这样的:controller -> model -> controller -> view
控制器是用户访问您的网站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
}
}