mysql+php select 下拉列表树的简单实现
数据库设计:
--
-- 数据库: `test`
--
-- --------------------------------------------------------
--
-- 表的结构 `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PID` int(11) NOT NULL,
`TITLE` varchar(200) NOT NULL,
`REMARK` varchar(200) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
--
-- 导出表中的数据 `menu`
--
INSERT INTO `menu` (`ID`, `PID`, `TITLE`, `REMARK`) VALUES
(1, 0, '公司', '根'),
(2, 1, '财务部', '部门'),
(3, 1, '销售部', '部门'),
(4, 1, '人事部', ''),
(5, 2, '会计', ''),
(6, 3, '业务员', ''),
(7, 4, '人事总管', '');
--------------------------------------------------------
PHP代码:
--------------------------------------------------------
<?php
include "config.php";
include "mysql.php";
$db = new Mysql('test'); //几个简单的类,不用列出来大家也看得懂。就是实例化一个数据库连接而已。
function RootMenu ($PID,$n){
global $arr,$db;
$sql = "select * from menu where `PID` =$PID";
$result = $db->query($sql);
while ($i=$db->fetch_array($result)){
$i["TITLE"] =str_repeat('--',$n).$i["TITLE"];
$arr[] =$i;
RootMenu($i["ID"],($n+4));
}
return $arr;
}
$arr = RootMenu(0,0);
?>
<select id="">
<option value="0" selected="selected">请选择部门</option>
<?php
for ($i=0;$i<count($arr);$i++) {
?>
<option value="<?php echo $arr[$i]["ID"] ?>"><?php echo $arr[$i]["TITLE"] ?></option>
<?php }?>
</select>
--------------------------------------------------------
相关文档:
1. 如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;
2. echo的效率高于print,因为echo没有返回值,print返回一个整型;
3. 在循环之前设置循环的最大次数,而非在在循环中;
4. 销毁变量去释放内存,特别是大的数组;
5. 避免使用像__get, __set, __autoload等魔术方法;
6. requiere_once()比较耗资源;
7. 在 ......
复制记录,采用自查询方式
sql
INSERT INTO `table` ('id','aa','bb','cc') SELECT 'id','aa','bb','cc' from `table` (WHERE .....)
Tips:
/**
* 复制新纪录的时候,可能要更新id或者是部分数据(假设id自增加的情况)
*
* text_aa 为固定值 ,可在脚本调用中赋变量值 如($aa)
* 注意'text_aa' 与 `cc` 的区别 ......
mysql 导数据库命令
mysql命令导数据库脚本。
mysql>create database databaseName
mysql>use yourDatabase
mysql>source d:yourSql.sql
=========================
1.mysql -u root -p Javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" href="http://www.xland.com.cn/article/74/76/0704/Javascript:;" ......
这几天,项目中有个需求,到数据库这步的结果就是需要批量update的数据,总不能循环使用update....set...吧,这样显示效率是很低,为了解决这个问题,大家也是想了很多的办法。
先说这几个解决方案:
1:循环update操作:什么都不说了,显然淘汰了;
2: ......