步骤:
一、新建数据库
二、连接数据库
三、定义AR类(创建model)
四、控制器(controller)
五、写增删改查(模糊查询)方法
实现功能:
1、展示出全部信息
2、增加信息
3、删除信息
4、修改信息
5、查找信息(通过id)
6、模糊查询
一、新建数据库
库名:db_person 表名:t_person
二、连接数据库
打开工作室的框架目录,找到config的文件下的main.php文件
具体目录如图:
修改本地数据库名字,将数据库名跟用户名、密码该为自己数据库对应的。
//本地的数据库
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=db_person', //mysql:host=125.222.222.73 本地数据库
'emulatePrepare' => true,
'username' => 'root',
'password' => 'mysql',
'charset' => 'utf8',
'tablePrefix' =>'t_',
),
三、定义AR类(创建model)
要访问一个数据表,我们首先需要通过集成 CActiveRecord 定义一个 AR 类。每个 AR 类代表一个单独的数据表,一个 AR 实例则代表那个表中的一行。
在此目录下。新建PHP文件,继承CActiveRecord。
主要写两个方法,只需将第二个方法(tableName())中的return 该为自己数据库中表的名字。
class person extends CActiveRecord
{
public static function model($className=__CLASS__)
{
return parent::model($className);
}
public function tableName()
{
return '{{person}}'; //return 't_person'
}
}
注:默认情况下,AR 类的名字和数据表的名字相同。如果不同,请覆盖 tableName() 方法。
引入的 表前缀功能 AR类的 tableName() 方法可以通过如下方式覆盖
public function tableName()
{
return '{{person}}'; //return 't_person'
}
即我们将返回通过双大括号括起来的没有前缀的表名,而不是完整的表的名字。
四、控制器(controller)
在controller文件夹下新建一个文件夹,命名为person。在person中新建一个名为 PersonController的controller,并继承Controller。
class PersonController extends Controller
{ ***********
}
五、写增删改查(模糊查询)方法
因为工作室项目的html文件都在这个目录下,因此我们在这个目录下,新建一个名为person的文件夹,我们的html文件就放在该文件夹下。
1、展示出全部信息
(1)person下新建html文件,名为list_person.html
(2)在controller中写查看全部person的方法。在controller中的方法名要加action,可以自动识别。
/**
* 全部person
*/
public function actionGetPerson(){
//将t_person表中全部信息存到 $list中
$list = person::model()->findAll();
$this->smarty->assign('list',$list);
//跳到对应的html页面,内容展示
$this->smarty->display('person/list_person.html');
}
对应list_person.html的代码
<form name="form" action="/dsjyw0725/person/Person/Select" method="post">
<input type="text"style="width: 300px;height: 40px;border-radius:5px;border:1px;" name="key"
placeholder="请输入您想查找的关键词"
autocomplete="off">
<input type="submit" value="搜索">
</form>
<table border="1" style="margin-top: 10px;font-size: x-large">
<thead> <tr> <th>姓名</th>
<th>年龄</th>
<th>操作</th> <th></th> </tr>
<tr>
</thead> <tbody> <{foreach from=$list item=person}>
<td><{$person.name}></td>
<td><{$person.age}></td> <td>
<a href="/dsjyw0725/person/Person/toAddPerson">添加</a>
<a href="/dsjyw0725/person/Person/getDeletePerson?id=<{$person.id}>">删除</a>
<a href="/dsjyw0725/person/Person/toUpdatePerson?id=<{$person.id}>">修改</a>
<a href="/dsjyw0725/person/Person/getPersonById?id=<{$person.id}>">查看详情</a>
</td> </tr> <{/foreach}> <tr> <td colspan="4" style="text-align: center" > </td> </tr> </tbody>
</table>
结果页面如下:
2、增加信息
<a href="/dsjyw0725/person/Person/toAddPerson">添加</a>
通过controller中的方法,跳转到增加信息页面。
/**
* 跳转到增加person
*/
public function actionToAddPerson(){
$this->smarty->display('person/add_person.html');
}
增加person的html
<form action="/dsjyw0725//person/Person/addPerson" method="post">
<table border="1">
<tr>
<td> 姓名 </td>
<td>
<input type="text" name="name"/>
</td>
</tr>
<tr>
<td> 年龄 </td>
<td>
<input type="text" name="age"/>
</td>
</tr>
<tr>
<th align="center">
<a href="/person/list"><input type="button" value="取消" ></a>
</th>
<th align="right">
<input type="submit" name="submit" value="添加"/>
</th>
</tr>
</table>
</form>
将添加的内容通过form表单,传给controller,增加person。
/**
* 增加person
*/
public function actionAddPerson(){
$person=new Person;
$name=$_POST['name'];
$age=$_POST['age'];
$person->name=$name;
$person->age=$age;
$person->save();
$this->redirect(array(getPerson));
}
结果页面如下:
3、删除信息
<a href="/dsjyw0725/person/Person/getDeletePerson?id=<{$person.id}>">删除</a>
将对应person的id传到controller,删除对应的person,调用查看全部person方法,返回到展示person页面。
/**
* 删除person
*/
public function actionGetDeletePerson()
{
$id=$_GET['id'];
$person=person::model()->findByPk($id);
$person->delete(); // 从数据表中删除此行
$this->redirect(array(getPerson));
}
4、修改信息
<a href="/dsjyw0725/person/Person/toUpdatePerson?id=<{$person.id}>">修改</a>
将要修改的person的id传给controller,将id对应的person在页面呈现出来,进行修改。
/**
* 跳转到更新person
*/
public function actionToUpdatePerson(){
$id=$_GET['id'];
$person=Person::model()->find('id=:id',array(':id'=>$id));
$this->smarty->assign('person',$person);
$this->smarty->display('person/update_person.html');
}
修改person的html:
<form action="/dsjyw0725/person/Person/getUpdatePerson" method="post">
<table border="1" style="margin-top: 100px;margin-left: 100px">
<tr >
<input type="text" name="id" value="<{$person.id}>" hidden/>
</tr>
<tr>
<td>姓名</td>
<td>
<textarea type="text" name="name" style="width: 100px"><{$person.name}></textarea>
</td>
</tr>
<tr>
<td>年龄</td>
<td>
<textarea type="text" name="age" style="width: 100px"><{$person.age}></textarea>
</td>
</tr>
<tr>
<input type="submit" name="submit" value="修改"/>
</tr>
</table>
</form>
将要修改的信息通过form表单,传给controller,修改person。
/**
* 修改person
*/
public function actionGetUpdatePerson(){
$id=$_POST['id'];
$person=Person::model()->find('id=:id',array(':id'=>$id));
$person->name=$_POST['name'];
$person->age=$_POST['age'];
$person->save(); // 将更改保存到数据库
$this->redirect(array(getPerson));
}
结果页面如下:
5、查找信息(通过id)
<a href="/dsjyw0725/person/Person/getPersonById?id=<{$person.id}>">查看详情</a>
对应controlle中的方法:
/**
* 通过id查找person
*/
public function actionGetPersonById(){
$id=$_GET['id'];
$person=person::model()->find('id=:id',array(':id'=>$id));
$this->smarty->assign('person',$person);
$this->smarty->display('person/concrete_content.html');
}
将person的详细信息,在concrete_content.html中进行展示:
<center>
<table border="1" style="width: 1000px;margin-top: 10px;font-size:x-large">
<tr>
<td>姓名</td>
<td><{$person.name}></td>
</tr>
<tr>
<td>年龄</td>
<td><{$person.age}></td>
</tr>
</table>
</center>
结果页面如下:
6、模糊查询
<form name="form" action="/dsjyw0725/person/Person/Select" method="post">
<input type="text"style="width: 300px;height: 40px;border-radius:5px;border:1px;" name="key"
placeholder="请输入您想查找的关键词"
autocomplete="off">
<input type="submit" value="搜索">
</form>
对应controller:
public function actionSelect(){
$key=$_POST['key'];
// var_dump($key);
$sql = "select *
from t_person
where t_person.name like '%" . $key . "%'
";
$selectList = Yii::app()->db->createCommand($sql)->queryAll();
// var_dump($selectList);
$this->smarty->assign('selectList',$selectList);
$this->smarty->display('person/select.html');
}
模糊查询的html:
<form name="form" action="/dsjyw0725/person/Person/Select" method="post">
<input type="text"style="width: 300px;height: 40px;border-radius:5px;border:1px;" name="key" placeholder="请输入您想查找的姓名" autocomplete="off">
<input type="submit" value="搜索">
</form>
<table border="1" style="margin-top: 10px;font-size: x-large">
<thead> <tr> <th>姓名</th>
<th>编号</th>
<th>性别</th> <th></th> </tr>
<tr>
</thead> <tbody> <{foreach from=$selectList item=person}>
<td><{$person.name}></td>
<td><{$person.age}></td> <td>
<a href="/dsjyw0725/person/Person/getDeletePerson?id=<{$person.id}>">删除</a>
<a href="/dsjyw0725/person/Person/getPersonById?id=<{$person.id}>">查看详情</a>
<a href="/dsjyw0725/person/Person/toUpdatePerson?id=<{$person.id}>">修改</a>
<a href="/dsjyw0725/person/Person/toAddPerson">添加</a>
</td> </tr> <{/foreach}> <tr> <td colspan="4" style="text-align: center" > </td> </tr> </tbody>
</table>
结果页面如下: