<?php
class User extends CI_Controller {
	// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user
	public function index() {
		// echo "user ---- index";
		
		// 分配变量
		// $this->assign('key','value');//smarty中 分配变量 .
		
		// CI分配单个变量
		// $this->load->vars('title','这是标题');
		$list = array (
				array (
						'id' => 1,
						"name" => 'jack',
						'email' => 'jack@gmail.com' 
				),
				array (
						'id' => 2,
						"name" => 'mary',
						'email' => 'mary@gmail.com' 
				),
				array (
						'id' => 3,
						"name" => 'lili',
						'email' => 'lili@gmail.com' 
				) 
		);
		
		$data ['title'] = '这是标题';
		$data ['list'] = $list;
		// 分配多个变量
		$this->load->vars ( $data );
		
		// $this->load->view('user_index');//加载views根目录中的视图
		$this->load->view ( 'header' ); // 可以引入多个视图文件
		$this->load->view ( 'user/index' ); // 加载子目录中的视图
	}
	
	// 不能被浏览器范围
	protected function test() {
		echo 'test';
	}
	
	// 以下划线开头的方法,不能被浏览器请求
	public function _test1() {
		echo 'test1';
	}
	public function test2() {
		$this->_test1 ();
	}
	
	// TODO $this->load $this->uri
	// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/testURI
	public function testURI() {
		// 打印控制器CI_Controller,超级对象
		var_dump ( $this );
		
		var_dump ( "<hr>" );
		
		// 打印类装载器属性 --> CI_Loader
		var_dump ( $this->load );
		
		// CI会自动实例华一个CI_Loader的对象,放到超级对象的属性中
		// $this->load其实就是
		// $obj = new CI_Loader();//
		// $this->load=$obj;
		// $this->load->view();
		
		var_dump ( "<hr>" );
		
		var_dump ( $this->uri );
		
		// 获取Get的参数id但这不是CI的pathinfo
		// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/testURI?id=4
		
		// echo $_GET['id'];
		
		// 使用CI的pathinfo
		// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/testURI/4
		echo $this->uri->segment ( 3 ); // 获取URI第几段的参数 可取得4 , 从user开始计算1,2,3
	}
	
	// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/testURI2/1/jack
	public function testURI2($id = 0, $name = '张三') {
		echo $id;
		echo $name;
	}
	
	// TODO $this->input
	public function testInput() {
		
		// echo '--0->'.$_POST['username'];
		var_dump ( '<hr>' );
		
		echo '--1->' . $this->input->post ( 'username' ); // $_POST['username']
		var_dump ( '<hr>' );
		
		var_dump ( $_SERVER ); // $_SERVER['DOCUMENT_ROOT']
		
		var_dump ( '<hr>' );
		
		echo '--3->' . $_SERVER ['DOCUMENT_ROOT'];
		
		var_dump ( '<hr>' );
		
		echo '--4->' . $this->input->server ( 'DOCUMENT_ROOT' );
		
		var_dump ( '<hr>' );
		
		echo '--5->' . $this->input->server ( 'REMOTE_ADDR' );
	}
	
	// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/showUsers
	// TODO 查询数据库信息
	public function showUsers() {
		echo "<pre>";
		// 装载一个数据库操作类
		$this->load->database ();
		// 装载成功后,会放入超级对象的属性中, 默认属性名是db
		echo '--返回CI_DB_mysql_driver对象-->';
		var_dump ( $this->db ); // CI_DB_mysql_driver对象 继承自CI_DB
		echo '<hr>';
		
		$sql = 'select * from blog_user';
		// 返回的是CI_DB_mysql_result 对象 - mysql_query()
		$res = $this->db->query ( $sql );
		echo '--返回CI_DB_mysql_result对象-->';
		var_dump ( $res ); // $res返回的是一个CI_DB_mysql_result对象
		echo "<hr>";
		
		// mysql_fetch_assoc()//关联数组
		// mysql_fetch_object()//返回对象
		$users = $res->result (); // 返回数组,数组中是一个一个的对象
		echo '--返回数组,数组中是一个一个的对象-->';
		var_dump ( $users );
		echo "<hr>";
		
		$arr = $res->result_array (); // 返回二维数组,里面是关联数组
		echo '--返回二维数组-->';
		var_dump ( $arr );
		echo '<hr>';
		
		$r = $res->row (); // 返回第一条数据,直接是一个对象
		echo '--返回第一条数据-->';
		var_dump ( $r );
		echo '<hr>';
		
		// 帮助文档中--> 数据库类-->查询-->query
		// 帮助文档中--> 数据库类-->生成查询结果集--> result_array() 等等的一些方法. 调用方法就如上所试
		
		$data ['user_list'] = $users;
		$data ['user_arr'] = $arr;
		$data ['user_r'] = $r;
		
		$this->load->view ( 'user/showusers', $data ); // 加载子目录中的视图,并分配数据过去.
		echo "<hr>";
	}
	
	// TODO 数据库增加数据
	public function add() {
		$this->load->database ();
		$sql = "INSERT INTO blog_user (name,password) VALUES ('mary',md5('mary'))";
		
		$bool = $this->db->query ( $sql );
		
		if ($bool) {
			// mysql_affected_rows
			echo "受影响的行数据:" . $this->db->affected_rows (); // 受影响的行数据
			echo "<br />";
			echo "自增id:" . $this->db->insert_id (); // 自增id
		}
	}
	
	
	// http://127.0.0.1:8000/CodeIgniter-3.0.0/index.php/user/myQuery
	//TODO  $this->db->query 数据库增删改操作
	public function myQuery() {
		// 配置文件\application\config\autoload.php中配置
		// $autoload['libraries'] = array('database');//配置自动加载db
		// $this->load->database ();//配置完上面的内容后就可以不再编写些句.
		
		// 一般会用AR操作进行增删改数据操作,这里只是做为演示使用db来操作数据库
		
		// 插入数据
		// $name=$this->input->post('name');//假如获取用户post过来的数据.
		// $name = 'lili';
		// $pass = 'lili';
		
		// $data [0] = $name;
		// $data [1] = $pass;
		//
		// $sql = "insert into blog_user (name,password) values (?,me5(?))";
		// $bool = $this->db->query ( $sql, $data );
		
		// 删除数据
		// $sql = "delete from blog_user where id=?";
		// $bool = $this->db->query ( $sql, 2 );
		
		// 修改数据
		$data [0] = 'mary@gmail.com';
		$data [1] = 3;
		$sql = "update blog_user set email = ? where id=? ";
		$bool = $this->db->query ( $sql, $data );
		
		if ($bool) {
			// mysql_affected_rows
			echo '受影响行数:' . $this->db->affected_rows ();
			echo '自增ID:' . $this->db->insert_id ();
		}
	}
}