当前位置: 编程技术>php
本页文章导读:
▪用PHP实现多级树型菜单
<? //树型目录结构模板程序 //菜单目录库字段说明: //menu_id 菜单项目 id //menu 菜单名称 //menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........ //menu_su.........
▪PHP4在Windows2000下的安装
这篇文章的目的是告诉你在Win2000 Professional下如何将PHP4配置到你的IIS5中。我用的是Windows2000 Professional英文版、IIS5英文版和PHP4.0.4-Win32 Binaries,可以从PHP的官方站点www.php.net下载。注意别下载.........
▪模仿OSO的论坛(五)
在前面的post.php及reply.php中,在发言提交成功后都跳转到一个叫post_end.php的页面,这个页面主要是提示发言提交成功,并给出了一个到faq.php的链接,程序非常简单,我就一并写在下面了: &l.........
[1]用PHP实现多级树型菜单
来源: 互联网 发布时间: 2013-11-30
<?
//树型目录结构模板程序
//菜单目录库字段说明:
//menu_id 菜单项目 id
//menu 菜单名称
//menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........
//menu_superior 上一级菜单 id 号
function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp)
{
global $PHP_SELF;
$temp1=$menu_grade_temp+1;
$menu_superior_temp_array=split("/",$menu_superior_temp);
for ($t=0;$t<$i;$t++)
{
$menu_array=split("/",$menu_content[$t]);
If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1]))
{
for($p=1;$p<=$menu_grade_temp;$p++){echo " ";}
$temp3=$menu_superior_temp_array;
$temp3[$menu_grade_temp]=$menu_array[0];
$temp2=implode("/",$temp3);
if ($menu_array[0]==$menu_superior_temp_array[$temp1-1])
{
$temp5=$temp1-1;
$temp3[$menu_grade_temp]="";
$temp6=implode("/",$temp3);
echo "<a href="/blog_article/$PHP_SELF/menu_grade_temp/.html".$temp5."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";
my_menu($menu_content,$i,$temp1,$temp2);
}
else
{
$temp3[$menu_grade_temp+1]="";
$temp6=implode("/",$temp3);
echo "<a href="/blog_article/$PHP_SELF/menu_grade_temp/.html".$temp1."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";
}
}
}
}
// 连接 MySql 数据库
$db_host="localhost";
$db_user="dkj";
$db_password="123";
$db_name="test";
mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
//从数据库中取得数据
$query_string="select * from menu order by menu_grade";
$db_data=mysql_query($query_string);
//第一次执行初始化
if ($menu_grade_temp=="")
{
$menu_superior_temp=0;
}
//将所有的信息读入数组,并统计数组个数
$i=0;
while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data))
{
$menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;
$i++;
}
my_menu($menu_content,$i,1,$menu_superior_temp);
/* 附数据库结构及模拟数据
# phpMyAdmin MySQL-Dump
#
# 主机: localhost 数据库 : test
# --------------------------------------------------------
#
# 数据表的结构 'menu'
#
CREATE TABLE menu (
menu_id int(11) NOT NULL auto_increment,
menu varchar(20) NOT NULL,
menu_grade int(11) NOT NULL,
menu_superior int(11) NOT NULL,
UNIQUE menu_id (menu_id)
);
#
# 导出下面的数据库内容 'menu'
#
INSERT INTO menu VALUES( '1', '计算机', '1', '0');
INSERT INTO menu VALUES( '2', '编程', '2', '1');
INSERT INTO menu VALUES( '3', '网络', '2', '1');
INSERT INTO menu VALUES( '4', 'PHP与MySql', '3', '2');
INSERT INTO menu VALUES( '5', 'C语言', '3', '2');
INSERT INTO menu VALUES( '6', '网页制作', '3', '3');
INSERT INTO menu VALUES( '7', 'TCP、IP协议', '3', '3');
INSERT INTO menu VALUES( '8', '数学', '1', '0');
INSERT INTO menu VALUES( '9', '高等数学', '2', '8');
INSERT INTO menu VALUES( '10', '线性代数', '3', '9');
INSERT INTO menu VALUES( '11', '离散数学', '3', '9');
INSERT INTO menu VALUES( '12', '初等数学', '2', '8');
INSERT INTO menu VALUES( '13', '文学', '1', '0');
INSERT INTO menu VALUES( '14', '中国文学', '2', '13');
INSERT INTO menu VALUES( '15', 'php', '4', '4');
INSERT INTO menu VALUES( '16', 'mysql', '4', '4');
*/
?>
//树型目录结构模板程序
//菜单目录库字段说明:
//menu_id 菜单项目 id
//menu 菜单名称
//menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........
//menu_superior 上一级菜单 id 号
function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp)
{
global $PHP_SELF;
$temp1=$menu_grade_temp+1;
$menu_superior_temp_array=split("/",$menu_superior_temp);
for ($t=0;$t<$i;$t++)
{
$menu_array=split("/",$menu_content[$t]);
If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1]))
{
for($p=1;$p<=$menu_grade_temp;$p++){echo " ";}
$temp3=$menu_superior_temp_array;
$temp3[$menu_grade_temp]=$menu_array[0];
$temp2=implode("/",$temp3);
if ($menu_array[0]==$menu_superior_temp_array[$temp1-1])
{
$temp5=$temp1-1;
$temp3[$menu_grade_temp]="";
$temp6=implode("/",$temp3);
echo "<a href="/blog_article/$PHP_SELF/menu_grade_temp/.html".$temp5."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";
my_menu($menu_content,$i,$temp1,$temp2);
}
else
{
$temp3[$menu_grade_temp+1]="";
$temp6=implode("/",$temp3);
echo "<a href="/blog_article/$PHP_SELF/menu_grade_temp/.html".$temp1."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";
}
}
}
}
// 连接 MySql 数据库
$db_host="localhost";
$db_user="dkj";
$db_password="123";
$db_name="test";
mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
//从数据库中取得数据
$query_string="select * from menu order by menu_grade";
$db_data=mysql_query($query_string);
//第一次执行初始化
if ($menu_grade_temp=="")
{
$menu_superior_temp=0;
}
//将所有的信息读入数组,并统计数组个数
$i=0;
while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data))
{
$menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;
$i++;
}
my_menu($menu_content,$i,1,$menu_superior_temp);
/* 附数据库结构及模拟数据
# phpMyAdmin MySQL-Dump
#
# 主机: localhost 数据库 : test
# --------------------------------------------------------
#
# 数据表的结构 'menu'
#
CREATE TABLE menu (
menu_id int(11) NOT NULL auto_increment,
menu varchar(20) NOT NULL,
menu_grade int(11) NOT NULL,
menu_superior int(11) NOT NULL,
UNIQUE menu_id (menu_id)
);
#
# 导出下面的数据库内容 'menu'
#
INSERT INTO menu VALUES( '1', '计算机', '1', '0');
INSERT INTO menu VALUES( '2', '编程', '2', '1');
INSERT INTO menu VALUES( '3', '网络', '2', '1');
INSERT INTO menu VALUES( '4', 'PHP与MySql', '3', '2');
INSERT INTO menu VALUES( '5', 'C语言', '3', '2');
INSERT INTO menu VALUES( '6', '网页制作', '3', '3');
INSERT INTO menu VALUES( '7', 'TCP、IP协议', '3', '3');
INSERT INTO menu VALUES( '8', '数学', '1', '0');
INSERT INTO menu VALUES( '9', '高等数学', '2', '8');
INSERT INTO menu VALUES( '10', '线性代数', '3', '9');
INSERT INTO menu VALUES( '11', '离散数学', '3', '9');
INSERT INTO menu VALUES( '12', '初等数学', '2', '8');
INSERT INTO menu VALUES( '13', '文学', '1', '0');
INSERT INTO menu VALUES( '14', '中国文学', '2', '13');
INSERT INTO menu VALUES( '15', 'php', '4', '4');
INSERT INTO menu VALUES( '16', 'mysql', '4', '4');
*/
?>
[2]PHP4在Windows2000下的安装
来源: 互联网 发布时间: 2013-11-30
这篇文章的目的是告诉你在Win2000 Professional下如何将PHP4配置到你的IIS5中。我用的是Windows2000 Professional英文版、IIS5英文版和PHP4.0.4-Win32 Binaries,可以从PHP的官方站点www.php.net下载。注意别下载错了,那个PHP4.0.4 Release Candidate 1 Source是为Unix用户准备的,你需要的是PHP 4.0.4 Release Candidate1 Binaries for Win32。
注意,首先你要安装IIS5,因为Win2000 Professional默认安装时把它给忘了。IIS5的安装方法在这里就不用讨论了吧,如果有问题请参考别的资料。
OK!
第一步,解开PHP4.0.4-Win32.ZIP压缩包,你可以把它放在C:PHP4下面。
第二步,把C:PHP4下面的php.ini-dist文件复制到WINNT目录下,并改名成php.ini。你不需要修改任何参数就可以运行,当然根据不同情况你可以自行修改某些参数。
第三步,把C:PHP4php4ts.dll复制到C:WINNTsystem32目录下。
第四步,点start->programs->adminstrative tools->internet service manager
第五步,在计算机管理窗口上展开“服务和应用程序”/“Internet信息服务”,在“默认Web站点”上点鼠标右键,选属性,这时系统弹出“默认Web站点属性”窗口
第六步,在“默认Web站点属性”窗口上点取“ISAPI筛选器”标签,点击“添加”按钮,在弹出的“筛选器属性”窗口的“筛选器名称”中输入“PHP”,“可执行文件”中输入“C:PHP4sapiphp4isapi.dll”,确定。
第七步,在“默认Web站点属性”窗口上点取“主目录”标签,点“配置”按钮,在弹出的“应用程序配置”窗口中点取“添加”按钮,在弹出的“添加/编辑应用程序扩展名映像”对话框中的“可执行文件”文本框中输入“C:PHP4sapiphp4isapi.dll”,“扩展名”文本框中输入“.php”(注意一定要有那个点),确定。
第八步,回到命令行窗口,输入“net stop iisadmin”命令,终止IIS服务。系统会问你是否要将相关的服务也停止,答是。
重新启动IIS服务。
OK,你的配置到此已经结束了,下面让我们写一个PHP程序,试验一下配置是否成功!编辑一个文件,名字为hello.php,内容为:
<?php
echo "Hello,World!";
?>
把这个文件保存在默认Web节点的默认文文件目录下(C:Inetpubwwwroot),然后打开浏览器,在地址栏中输入localhost/hello.php,如果顺利,经典的“Hello,World!”应该出现在你的浏览器中。如果找不到页面,而你也能确认上述几步都没问题,那么在浏览器的地址栏中输入地址127.0.0.1/hello.php试试看,如果能成功,则说明你的hosts文件有问题,请编辑C:WINNTsystem32driversetc下面的hosts文件,加入“127.0.0.1 localhost”一行。
好啦,开始你的PHP之旅吧!
注意,首先你要安装IIS5,因为Win2000 Professional默认安装时把它给忘了。IIS5的安装方法在这里就不用讨论了吧,如果有问题请参考别的资料。
OK!
第一步,解开PHP4.0.4-Win32.ZIP压缩包,你可以把它放在C:PHP4下面。
第二步,把C:PHP4下面的php.ini-dist文件复制到WINNT目录下,并改名成php.ini。你不需要修改任何参数就可以运行,当然根据不同情况你可以自行修改某些参数。
第三步,把C:PHP4php4ts.dll复制到C:WINNTsystem32目录下。
第四步,点start->programs->adminstrative tools->internet service manager
第五步,在计算机管理窗口上展开“服务和应用程序”/“Internet信息服务”,在“默认Web站点”上点鼠标右键,选属性,这时系统弹出“默认Web站点属性”窗口
第六步,在“默认Web站点属性”窗口上点取“ISAPI筛选器”标签,点击“添加”按钮,在弹出的“筛选器属性”窗口的“筛选器名称”中输入“PHP”,“可执行文件”中输入“C:PHP4sapiphp4isapi.dll”,确定。
第七步,在“默认Web站点属性”窗口上点取“主目录”标签,点“配置”按钮,在弹出的“应用程序配置”窗口中点取“添加”按钮,在弹出的“添加/编辑应用程序扩展名映像”对话框中的“可执行文件”文本框中输入“C:PHP4sapiphp4isapi.dll”,“扩展名”文本框中输入“.php”(注意一定要有那个点),确定。
第八步,回到命令行窗口,输入“net stop iisadmin”命令,终止IIS服务。系统会问你是否要将相关的服务也停止,答是。
重新启动IIS服务。
OK,你的配置到此已经结束了,下面让我们写一个PHP程序,试验一下配置是否成功!编辑一个文件,名字为hello.php,内容为:
<?php
echo "Hello,World!";
?>
把这个文件保存在默认Web节点的默认文文件目录下(C:Inetpubwwwroot),然后打开浏览器,在地址栏中输入localhost/hello.php,如果顺利,经典的“Hello,World!”应该出现在你的浏览器中。如果找不到页面,而你也能确认上述几步都没问题,那么在浏览器的地址栏中输入地址127.0.0.1/hello.php试试看,如果能成功,则说明你的hosts文件有问题,请编辑C:WINNTsystem32driversetc下面的hosts文件,加入“127.0.0.1 localhost”一行。
好啦,开始你的PHP之旅吧!
[3]模仿OSO的论坛(五)
来源: 互联网 发布时间: 2013-11-30
在前面的post.php及reply.php中,在发言提交成功后都跳转到一个叫post_end.php的页面,这个页面主要是提示发言提交成功,并给出了一个到faq.php的链接,程序非常简单,我就一并写在下面了:
<html>
你的发言已提交<br>
<a href="/blog_article/faq.html">返回疑难问题首页</a>
</html>
在这一节中,我们将着力讨论如果实现我们在开头所列出的本论坛所缺少的八项功能:
1、在我的论坛中只有在用户登录后才能发言,用户的ID是存在一个叫“cookie_user”的cookie变量中的。
我想这应该不是论坛程序的主要内容,关于用户登录,有很多很完善的程序可供参考,如果你想让你的论坛程序更完善的话,你可以考虑在post.php及reply.php中添加一个用户登录的模块。你还可以在考虑在用户第一次登录时,自动帮他做用户注册。
2、我的论坛没有子论坛。
事实上,这必须在数据表guestbook中添加一个字段id_style,以注明所属子论坛的id,另外你最好设计一个数据表,名字叫bm_style,该表包含两个字段:style_code(子论坛编码),style_name(子论坛名称),而在guestbook中的字段id_style应该存放的是子论坛编码。
3、我没有统计一个主题的点击数。
在数据表guestbook中添加一个字段count_read,在post.php将其初始值设为1,在read.php中将其累加。
4、在OSO论坛中每一个主题前面的表示有没有新贴子的图标我也没设计。
在用户的cookie中记录用户最后一次阅读贴子的时间,然后用这个时间与time_close进行比较,如果time_close大于这个值,就将该主题标识为有新贴子。
5、对于OSO论坛所提供的可选择的主题排列方式以及显示时间段我也没考虑。
给用户一个选择的下拉列表框,并根据用户选择的排列方式改变read.php中select语句order子句的内容,根据用户选择的显示时间段增加where子句。
6、没有会员发贴积分的统计。
在my_user表中增加point字段,注册时置一个初始值,在post.php及reply.php中增加相应积分。
7、没有版主管理论坛的功能。
在my_user表中增加type字段,注明用户类型,对于类型为版主的用户可以进入一个管理界面,可以对guestbook数据表执行delete操作。
8、没有贴子编辑的功能。
对于用户自己的贴子(即guestbook中的name和cookie中的name相同),可以让用户对其执行相应update操作。
至此,这篇习作全部结束,有不到之处,还请各位高手批评指正,其中涉及有抄袭OSO嫌疑的(界面部分),在此一并向各位OSO的同志致谢。
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】
<html>
你的发言已提交<br>
<a href="/blog_article/faq.html">返回疑难问题首页</a>
</html>
在这一节中,我们将着力讨论如果实现我们在开头所列出的本论坛所缺少的八项功能:
1、在我的论坛中只有在用户登录后才能发言,用户的ID是存在一个叫“cookie_user”的cookie变量中的。
我想这应该不是论坛程序的主要内容,关于用户登录,有很多很完善的程序可供参考,如果你想让你的论坛程序更完善的话,你可以考虑在post.php及reply.php中添加一个用户登录的模块。你还可以在考虑在用户第一次登录时,自动帮他做用户注册。
2、我的论坛没有子论坛。
事实上,这必须在数据表guestbook中添加一个字段id_style,以注明所属子论坛的id,另外你最好设计一个数据表,名字叫bm_style,该表包含两个字段:style_code(子论坛编码),style_name(子论坛名称),而在guestbook中的字段id_style应该存放的是子论坛编码。
3、我没有统计一个主题的点击数。
在数据表guestbook中添加一个字段count_read,在post.php将其初始值设为1,在read.php中将其累加。
4、在OSO论坛中每一个主题前面的表示有没有新贴子的图标我也没设计。
在用户的cookie中记录用户最后一次阅读贴子的时间,然后用这个时间与time_close进行比较,如果time_close大于这个值,就将该主题标识为有新贴子。
5、对于OSO论坛所提供的可选择的主题排列方式以及显示时间段我也没考虑。
给用户一个选择的下拉列表框,并根据用户选择的排列方式改变read.php中select语句order子句的内容,根据用户选择的显示时间段增加where子句。
6、没有会员发贴积分的统计。
在my_user表中增加point字段,注册时置一个初始值,在post.php及reply.php中增加相应积分。
7、没有版主管理论坛的功能。
在my_user表中增加type字段,注明用户类型,对于类型为版主的用户可以进入一个管理界面,可以对guestbook数据表执行delete操作。
8、没有贴子编辑的功能。
对于用户自己的贴子(即guestbook中的name和cookie中的name相同),可以让用户对其执行相应update操作。
至此,这篇习作全部结束,有不到之处,还请各位高手批评指正,其中涉及有抄袭OSO嫌疑的(界面部分),在此一并向各位OSO的同志致谢。
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】
最新技术文章: