一、创建控制器
\application\controllers\BaseController.php
<?php
/**
* Created by PhpStorm.
* User: 52998
* Date: 2019/6/2
* Time: 14:03
*/
//做一个父类,专门供其他的controller的来继承
class BaseController extends Zend_Controller_Action
{
public function init()
{
//初始化我们的数据库适配器
$url=constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';
$dbconfig=new Zend_Config_Ini($url,'mysql');
$db = Zend_Db::factory($dbconfig->db);
$db->query('SET NAMES UTF8');
Zend_Db_Table::setDefaultAdapter($db);
}
}后台控制器
application/controllers/AdminConrtoller.php
<?php
require_once 'BaseController.php';
class AdminConrtoller extends BaseController
{
public function indexAction()
{
}
}视图文件
application/views/scripts/admin/index.phtml
<h1>投票的后台管理程序</h1>
访问后台:域名/admin/index
增加选项页面
application/controllers/AdminController.php
<?php
require_once 'BaseController.php';
class AdminController extends BaseController
{
public function indexAction()
{
// $this->render('index');
}
//进入增加选项的页面
public function additemuiAction()
{
}
}application/views/scripts/admin/additemui.phtml
<h1>增加投票选项</h1> <form action="" method="post"> <table> <tr> <td>name</td> <td><input type="text" name="name"></td> </tr> <tr> <td>描述</td> <td><textarea name="description" id="" cols="30" rows="10"></textarea></td> </tr> <tr> <td>初始化投票数</td> <td><input type="text" name="vote_count"></td> </tr> <tr> <td><input type="submit" value="增加"></td> <td><input type="reset" value="重置"></td> </tr> </table> </form>
设置模型application/models/Item.php
<?php
/**
* Created by PhpStorm.
* User: 52998
* Date: 2019/6/2
* Time: 15:11
*/
//这里必须继承Zend_Db_Table ,否则就不是表模型
class Item extends Zend_Db_Table
{
protected $_name='item'; //设置表名
protected $_primary = 'id';//设置主键id 默认为id
}创建global 视图
application/views/scripts/globals/ok.phtml
<script type="text/javascript">
alert('操作成功');
history.back();
</script>控制器代码
application/controllers/AdminController.php
<?php
require_once APPLICATION_PATH.'/models/Item.php';
require_once 'BaseController.php';
class AdminController extends BaseController
{
public function indexAction()
{
// $this->render('index');
}
//进入增加选项的页面
public function additemuiAction()
{
}
//完成一天假的任务
public function additemAction()
{
$name=$this->getRequest()->getParam('name');
$description=$this->getRequest()->getParam('description');
$vote_count=$this->getRequest()->getParam('vote_count');
$data=array(
'name'=>$name,
'description'=>$description,
'vote_count'=>$vote_count,
);
//创建一个表模型
$itemModel=new Item();
$inseId=$itemModel->insert($data);
$this->render('ok');
}
}二、首页显示列表
控制器代码
application/controllers/IndexController.php
<?php
require_once APPLICATION_PATH.'/models/Item.php';
require_once 'BaseController.php';
class IndexController extends BaseController
{
public function indexAction()
{
//创建一个item表模型
$itemModel=new Item();
$items = $itemModel->fetchAll()->toArray();
$this->view->item=$items;
}
}视图代码
application/views/scripts/index/index.phtml
<h1>请投票</h1>
<table width="500px">
<tr bgcolor="gray">
<td>名称</td>
<td>描述</td>
<td>投票数</td>
<td>投票数</td>
<td>操作</td>
</tr>
<?php foreach ($this->items as $vo) {?>
<tr>
<td><?php echo $vo['id'];?></td>
<td><?php echo $vo['name'];?></td>
<td><?php echo $vo['description'];?></td>
<td><?php echo $vo['vote_count'];?></td>
<td><a href="">投票</a></td>
</tr>
<?php }?>
</table>创建模型类
application/models/VoteLog.php
<?php
/**
* Created by PhpStorm.
* User: 52998
* Date: 2019/6/2
* Time: 15:55
*/
class VoteLog extends Zend_Db_Table
{
protected $_name = 'vote_log';
protected $_primary = 'id';
}创建错误页面
application/views/scripts/vote/error.phtml
<script type="text/javascript">
alert('你投过票了');
history.back();
</script>控制器
application/controllers/VoteController.php
<?php
require_once APPLICATION_PATH.'/models/Item.php';
require_once APPLICATION_PATH.'/models/VoteLog.php';
require_once 'BaseController.php';
class VoteController extends BaseController
{
public function voteAction()
{
//获取用户投票的id
$item_id=$this->getRequest()->getParam('itemid');
$ip = $this->getRequest()->getServer('REMOTE_ADDR');
$today = date('Ymd');
//先看vote_log这个表中今天是否有记录
$voteLogModel=new VoteLog();
//sql注入先不考虑
$where="ip='$ip' AND vote_date=$today";
$res=$voteLogModel->fetchAll($where)->toArray();
if (count($res)>5){
//提示一句话
$this->render('error');
return ;
}else{
//更新item的vote_count,添加投票日志
$data=array(
'ip'=>$ip,
'vote_date'=>$today,
'item_id'=>$item_id
);
if ($voteLogModel->insert($data)>0){
$newvote=0;
//更新
$itemModel=new Item();
$item = $itemModel->find($item_id)->toArray();
$newvote=$item[0]['vote_count']+=1;
$set=array(
'vote_count'=>$newvote
);
$where="id=$item_id";
$itemModel->update($set,$where);
}
$this->render('ok');
}
}
}