2011年(264)
分类: 系统运维
2011-05-03 22:58:53
时间:2010-10-6
1、 如何将URL地址栏里面的index.php给去掉呢?
http://localhost:8080/ciblog/index.php/blog/index/5 默认的话都有这么一个东西的
步骤一、如何在windows下面创建.htaccess 文件
使用记事本编写规则然后另存的时候选择保存类型(所有文件)然后就直接命名就OK了。
步骤二、开启apache的url_rewrite功能
LoadModule rewrite_module modules/mod_rewrite.so #打开rewrite功能 Options Indexes FollowSymLinks AllowOverride All #将此项设置为All Order allow,deny Allow from all
|
第三步:在根目录创建这个文件命名为: .htaccess
配置的内容:
RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) #对于样式、JS、静态元素是不能rewrite的所以加这一句 RewriteRule ^(.*)$ /nbjproj/index.php/$1 [L] #注意这里面的nbjproj 表示的是我的项目名称的 #另外要注意这个文件的目录是在nbjproj/目录下面的 |
第四步:把CI的配置文件修改一下
$config['index_page'] = ""; #将ci里面的配置文件修改这一项为空即可 |
2、 如何使用自带的类库
控制器里面:
function __construct() { parent::Controller(); $this->load->helper('url'); #将此帮助类库加载进来后面就直接调用 $this->load->helper('text'); } Echo $this->uri->segment(3); #直接引入这个对象url然后再去调用类里面的方法 |
3、 如何使用分页类
步骤一、配置数据库驱动信息
$db['default']['hostname'] = "127.0.0.1"; #使用IP不要用域名。localhost $db['default']['username'] = "hkebao"; $db['default']['password'] = "hkebao"; $db['default']['database'] = "hnebony"; #我是直接使用MSSQL驱动不走ODBC $db['default']['dbdriver'] = "mssql"; $db['default']['dbprefix'] = ""; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ""; $db['default']['char_set'] = "utf8"; $db['default']['dbcollat'] = "utf8_general_ci"; |
步骤二、控制器分页代码
function index() { $this->load->database(); #加载数据库对象db进来 $this->load->library('pagination'); #加载分页的对象 $config['base_url'] = base_url().'/welcome/index'; #前后页链接 $config['total_rows'] = $this->db->count_all('Radmin'); #辅助函数的一个方法 $config['per_page'] = '3'; $this->pagination->initialize($config); $data['pages'] = $this->pagination->create_links(); #丢到数组里面呆会渲染用 $this->load->view('index',$data); } |
步骤三、视图
|
4、 如何保证视图页面全部的静态元素都能够保证路径正常
HTML的
笔记:用了这个之后就能够改变页面中这些标签的URL了。注意这个标签必须要head里面的。
示例:
|
5、 数据库查询相关(仅列举MSSQL的操作相关)
5.1 检查用户名与密码是否合法
步骤一、编写用户登录的窗体见下面内容
步骤二、编写数据库校验方法
$username = $_POST["username"]; #接收客户端的参数 $password = $_POST["password"]; $result = $this->Mhome->get_user_num($username,$password); #利用模型进行调用其参数 |
步骤三、编写数据库模型层代码
function get_user_num($username,$password) { $query = $this->db->query("SELECT * FROM radmin where username = '$username' and password='$password'"); return $query->num_rows(); } |
5.2 列出指定一个ID的记录出来。一般应用于编辑窗体里面
步骤一、控制器
function index() { $this->load->helper(array('form', 'url')); #一次加载多个帮助方法 $id=$this->uri->segment(3); $this->load->model('Mhome'); $data['query']=$this->Mhome->getOneNews($id); if (isset($_POST["id"])) { //代表的是保存修改操作了 $data=array( 'a'=>$_POST['a'], 'b'=>$_POST['b'], ); $this->Mhome->updateNews($_POST['id'],$data); echo "ok"; } $this->load->view('index',$data); } 说明:我是为了简单化一点所以将其放在一块了。 |
步骤二、编写视图
#还是用它吧!为了方便移植 result() as
$row) : ?>
#好像这个遍历方法有点怪怪的。仔细看一下 步骤三、编写模型层 function getOneNews($id) { $this->db->where('id',$id); $data=$this->db->get('a'); return
$data; } function updateNews($id,$data){ $this->db->where('id',$id); $this->db->update('a',$data); } 说明:能够直接将一个数组的数据更新过来的。传入一个数组进来然后就直接更新了! 删除操作: function deleteNews($newsid){ $this->db->where('id',$newsid); $data=$this->db->delete(“a”); #传入一个ID将其记录删除掉 return
$data; } -----------------------分页显示数据的整理-------------------------------------------------------------------- 遍历的方法 对象形式表现 $query = $this->db->query('SELECT name, title, email FROM
my_table'); 数组形式表现 $query = $this->db->query('SELECT name, title, email FROM
my_table'); 标准的做法: $query = $this->db->query("YOUR QUERY"); 测试案例 步骤一、修改MSSQL内置函数 function _limit($sql, $limit, $offset) { $cursorName
= 'mi_cursor_'.md5(strtolower($sql)); $sql
= "DECLARE ".$cursorName." CURSOR DYNAMIC READ_ONLY FOR ".$sql." OPEN ".$cursorName." DECLARE @CURSOR AS INT SELECT @CURSOR = CURSOR_HANDLE FROM MASTER.DBO.SYSCURSORS WHERE CURSOR_NAME =
'".$cursorName."' EXEC SP_CURSORFETCH @CURSOR, 32,
".($offset+1).", ".$limit." EXEC SP_CURSORCLOSE @CURSOR"; return $sql; } 原创:
算是CI的一个补丁吧 步骤二、编写控制器 function index() { $this->load->helper('url'); $this->load->database(); $this->load->library('pagination'); $config['base_url']
= base_url().'/form/index'; #分页的时候它自动会有 $config['total_rows']
= $this->db->count_all('Radmin'); $config['per_page']
= '3'; $this->pagination->initialize($config);
$data['pages']
= $this->pagination->create_links();
#丢到数组里面呆会渲染用 $this->load->model('Mhome'); $data['get_comment']
= $this->Mhome->get_comment($this->uri->segment(3),
$config['per_page']); $this->load->view('index',$data); } $this->uri->segment(3) 这个是分页的时候自动就会有了 步骤三、编写模型层代码 function get_comment($offset,$num) { $query
= $this->db->get('Radmin',$num,$offset); #如果有条件就用另外一个 return
$query->result(); } 步骤四、编写视图 foreach ($get_comment as
$row):?> =$row->xingming?> #也可以用括号的! 6、
表单相关操作 步骤一、编写表单提交视图页面
是会把全部当前表单的错误信息打印的。我想单独一个表单项打印一条怎么解决呢?
value=""/> 这个表示如果有验证错误的话就打印出来。如果没有就为空字符串!
使用辅助函数的好处是它为你生成了基于你配置文件中的URL的 action URL。这是的你的应用在更改URL时更具移植性。当然你也可以手工填写这个action进来的。我发现框架的作用就是为了解决这些个东西。
步骤二、编写验证成功后的页面
步骤三、编写控制器
class Form extends Controller { function index() { $this->load->helper(array('form',
'url')); #一次加载多个帮助方法
$this->load->library('form_validation'); if ($this->form_validation->run() ==
FALSE) #验证失败 { $this->load->view('index'); } else { $this->load->view('formsuccess'); } } } ?> 由于你还没有告诉表单验证类验证什么东西。它只是默认的返回了 FALSE (boolean false) 。 run() 方法只在全部成功匹配了你的规则才会返回 TRUE 。 步骤四、添加验证规则 function index() {
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username',
'Username', 'required');
$this->form_validation->set_rules('password', 'Password',
'required');
$this->form_validation->set_rules('passconf', 'Password
Confirmation', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('index');
}
else
{
$this->load->view('formsuccess');
} } 函数set_rules三个参数: 笔记:有点类似于一个JS验证框架。 更进一步能够对规则设定的更加灵活一些的 $this->form_validation->set_rules('username',
'Username', 'required|min_length[5]|max_length[12]'); 更加好的一步:可以使用自定义的验证函数 function
index() {
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'callback_username_check'); if ($this->form_validation->run() ==
FALSE) { $this->load->view('index'); }
else { $this->load->view('formsuccess'); } } //编写的自定义验证函数 function username_check($str) {
if ($str == 'test') {
$this->form_validation->set_message('username_check',
'The %s field can not be the word "test"');
return FALSE; }
else {
return TRUE; } } 笔记:要学会编写自己定义的校验函数。有一些像序列号之类的可能需要引入数据库校验的。像密码之类就可以先用CI自己提供的方法吧。 7、
其它相关 =anchor('blog/content/'.$row->id,$row->title,array('title'
=> $row->title))?> 这个函数不错的。 表单相关 echo form_open('email/send'); 上面的例子会创建一个form提交至你的基础URL加上"email/send" URI片段,像这样:
另外就是数据库操作的相关内容是比较多的。有许多好的快速的操作方法可以充分地利用起来 |
=$pages?>