当前位置:  编程技术>php
本页文章导读:
    ▪Yii CActiveForm::dropdownList 无限层分类树形程序设计      昨天晚上在做项目是又遇到了多层产品分类的下拉菜单设计。估计大家也是经常遇到的需要做的功能,暂时我用最简单的数据结构来讲解我用yii的最新设计吧。category 如下图:之前我们一般的.........
    ▪Codeigniter+PHPExcel导出Excel文件      1. 准备工作下载PHPExcel:http://phpexcel.codeplex.com这是个强大的Excel库,这里只演示导出Excel文件的功能,其中的大部分功能可能都用不着。2. 安装PHPExcel到Codeigniter1) 解压压缩包里的Classes文件夹.........
    ▪从一个低级错误说起:PHP资源类型Resource      作为一个php开发者,竟然犯了一个很低级的错误,昨天帮朋友配置php+mysql,连接数据库的时候犯了如下低级错误:$dbhost='localhost';$dbusername='root';$dbpass='';$connect=mysql_connect($dbhost,$dbusername,$dbpass);.........

[1]Yii CActiveForm::dropdownList 无限层分类树形程序设计
    来源:    发布时间: 2013-11-07

昨天晚上在做项目是又遇到了多层产品分类的下拉菜单设计。估计大家也是经常遇到的需要做的功能,暂时我用最简单的数据结构来讲解我用yii的最新设计吧。

category 如下图:

之前我们一般的做法都是先把数据查询出来,然后根据数据结构先把分类的层级结构处理了,如下

$data = array();foreach($models as $model){    $data[$model->id] = str_repeat(' &nbsp', $this->level).$model->name; 
}

然后再把$data放进dropDownList或自己循环显示select的option

下面是我最新的设计代码:

model代码:

 * @property integer $id * @property string $name * @property integer $parent_id * @property string $path * @property string $level ...class Category extends CActiveRecord{    ...    public function getOptionName(){        return str_repeat(' &nbsp', $this->level).$this->name;    }    ...}

view代码

/*@var $form CActiveForm*/...$form->dropDownList($model,'parent_id',            CHtml::listData(Category::model()->findAll(), 'id', 'optionName'),array('class'=>'span4', 'encode'=>false));...

我把只要的代码加粗显示。对了,熟悉yii的朋友都知道这里我们使用CComponent的getter,通过getter,我们把Category的属性字段增加了一个optionName(根据分类的level对name进行缩进处理),增强了model的功能来实现我们这个经常遇到的关于下拉选择的树形数据显示问题。比之前一般用的先循环一次处理数据更加优雅的解决了这个问题。使用oop设计的封装,代码减少了,语义也清晰了,代码也更加好维护了^_^

顺便说一句,本文是我的第一篇博文,以后项目中有新的设计和技巧,我都会尽量抽时间写出来与大家分享~,也希望各位多多指点

本文链接


    
[2]Codeigniter+PHPExcel导出Excel文件
    来源:    发布时间: 2013-11-07
1. 准备工作

下载PHPExcel:http://phpexcel.codeplex.com

这是个强大的Excel库,这里只演示导出Excel文件的功能,其中的大部分功能可能都用不着。

2. 安装PHPExcel到Codeigniter

1) 解压压缩包里的Classes文件夹中的内容到application\libraries\目录下,目录结构如下:

  -- application\libraries\PHPExcel.php

  -- application\libraries\PHPExcel (文件夹)

2)修改application\libraries\PHPExcel\IOFactory.php 文件

  -- 将其类名从PHPExcel_IOFactory改为IOFactory,遵从CI类命名规则。

  -- 将其构造函数改为public

3. 安装完毕,写一个导出excel的控制器(Controller)

代码如下:

 1 <?php  2   3  class Table_export extends CI_Controller { 4    5      function __construct() 6      { 7          parent::__construct(); 8    9          // Here you should add some sort of user validation10          // to prevent strangers from pulling your table data11      }12   13      function index($table_name)14      {15          $query = $this->db->get($table_name);16   17          if(!$query)18              return false;19   20          // Starting the PHPExcel library21          $this->load->library('PHPExcel');22          $this->load->library('PHPExcel/IOFactory');23   24          $objPHPExcel = new PHPExcel();25          $objPHPExcel->getProperties()->setTitle("export")->setDescription("none");26   27          $objPHPExcel->setActiveSheetIndex(0);28   29          // Field names in the first row30          $fields = $query->list_fields();31          $col = 0;32          foreach ($fields as $field)33          {34              $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $field);35              $col++;36          }37   38          // Fetching the table data39                
    
[3]从一个低级错误说起:PHP资源类型Resource
    来源:    发布时间: 2013-11-07

作为一个php开发者,竟然犯了一个很低级的错误,昨天帮朋友配置php+mysql,连接数据库的时候犯了如下低级错误:

$dbhost='localhost';$dbusername='root';$dbpass='';$connect=mysql_connect($dbhost,$dbusername,$dbpass);print_r($connect);

我想测试数据库能否连接成功,打印一下连接返回的结果,却显示Resource id #42(其实看到这个就表明数据库连接已经成功了),以为哪里配置错了。

于是继续犯低级错误,这样继续写:

 

//接上面mysql_select_db('meican');$sql='select * from table';$result=mysql_query($sql);print_r($result);

我是想执行一条sql语句并打印结果集。
结果显示空白一片。

现在用框架用多了,用数据库连接类用多了,这种原始的连接数据库的基本操作都生疏了,看来还是要夯实基础啊。

分析了一下原因。原来PHP还存在一个资源类型。

资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄。

因此正确的写法是:

$dbhost='localhost';$dbusername='root';$dbpass='';$connect=mysql_connect($dbhost,$dbusername,$dbpass);mysql_select_db('101ban');$sql='select * from tt_liuyan';mysql_query("set names utf8");$result=mysql_query($sql);while($row=mysql_fetch_array($result)){    echo $row['author'].'<br/>'.$row['content'];}

这样就OK了,可以看见从数据库表获取的数据。

其实连接数据库成功没,一条语句就ok了,直接:

$link=mysql_connect($host,$username,$pwd);if($link){  echo 'ok';}else{  echo mysql_error();

本文链接


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪PHP函数microtime()时间戳的定义与用法 iis7站长之家
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3