社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 5138阅读
  • 9回复

[讨论](转)十天学会PHP

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
第一天 1 0zM8<bl  
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 gtH^'vFZ  
U $#^ e  
至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。 WY|~E%k  
*1v3x:pQ'  
下面简单介绍一下PHP的语法。 s@~3L  
`Zuo`GP*1  
1、嵌入方法: [cDDZ+6  
(zsmJe  
类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 f ] *w1  
@{qcu\sZ  
2、引用文件: e6'0g=Y#   
e;=R8i  
引用文件的方法有两种:require 及 include。 EUt2 S_2P  
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 z}J~X%}e  
!Yo2P"  
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 ^) s6`:  
vrmMEWPV  
3、注释方法: @;9KP6d  
NUiv"tAY  
<?php < k(n%  
echo "这是第一种例子。 " ; // 本例是 C++ 语法的注释 8ZV!ld  
/* 本例采用多行的 K @&c  
注释方式 */ Q-h< av9  
echo "这是第二种例子。 " ; ~uY5~Qs9G  
R{brf6,  
echo "这是第三种例子。 " ; # 本例使用 UNIX Shell 语法注释 ]z7pa^  
?> 0o7o;eN  
>1Iw!SO+  
4、变量类型: [i~@X2:Al  
nZj&Ma7R  
$mystring = "我是字符串" ; pDP* 3  
$NewLine = "换行了 " ; rk=w~IZJ3  
$int1 = 38 ; OkQ< Sc   
$float1 = 1.732 ; ?_{{iil  
$float2 = 1.4E+2 ; _@\-`>J  
$MyArray1 = array( "子" , "丑" , "寅" , "卯" ); 9r\p4_V  
Se??E+aX  
这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 zfUj%N  
|C./gdq  
5、运算符号: W{JR%Sq$  
|LIcq0Z  
数学运算: 符号 意义 q) 5s'(  
+ 加法运算 i|H^&$|  
- 减法运算 qtVgjT2#H  
* 乘法运算 2|!jst  
/ 除法运算 -;Mh|!yg  
% 取余数 W"/,<xHuh  
++ 累加 #lFsgb  
-- 递减 }:?_/$};  
D'g@B.fXd  
字符串运算: ?jO<<@*2S  
/3 L4K  
运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的& 4UL"f<7 T  
<? f 4K)Z e  
MYJDfI  
$a = "PHP 4" ; j5hQ;~Fa|  
$b = "功能强大" ; JvT#Fxjk  
echo $a.$b; 1N]-WCxQ  
?> V:D?i#%,z  
这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量? >。 ak}k e  
Nsy>qa7  
逻辑运算: bneP>Bd  
Ki :98a$  
符号 意义 4. %/u@rAi  
< 小于 g$=']A?W_  
> 大于 hsws7sH  
<= 小于或等于 ywjD.od"v  
>= 大于或等于 *~#`LO  
== 等于 'Um\m  
!= 不等于 U&+lw=  
&& 而且 (And) FGMYpapc~  
and 而且 (And) QSYKYgxC  
|| 或者 (Or) `+(JwQC4  
or 或者 (Or) p|>/Hz1v  
xor 异或 (Xor) }z-)!8vF  
! 不 (Not) (:# 4{C  
W}^>lM\8  
今天就说到这里,明天说一下流程控制。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2006-09-03
学习目的:掌握php的流程控制 q>a/',m  
y9GaxW* &  
1、if..else 循环有三种结构 L#T`h}1Z  
vdulrnGqL  
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: [+dTd2uZ<\  
~:4Mf/Ca  
if (expr) { statement } iaaD1 <m  
FefS]G  
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 F>q%~  
B&lF! ]  
范例:本例省略大括号。 }PzYt~Z`@  
m,]h7xx  
<?php J {#C<C  
if ($state==1)echo "哈哈" ; W-"FRTI4  
?> `ucr;P  
`{@?O%UB  
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 >\ym{@+*  
03y5$kQ  
范例:本例的执行部分有三行,不可省略大括号。 %lK]m`(  
 7w|4BRL  
<?php CY8=prC  
if ($state==1) { HuL9' M  
echo "哈哈 ; L5>.ku=T  
echo "<br>" ;  gY@$g  
} ,OO0*%  
?> r`=!4vY2  
z9*7fT  
 N5GQ2V  
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下 -}<W|r  
Xn8r3Nb$A  
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 y$pT5X G  
<?php Ll6|WhX  
if ($state==1) { gcs8Gl2  
echo "哈哈" ; D\G P+Ota  
echo "<br>"; FBK6{rLMc  
} ^,Y#_$oR  
else{ @GR|co  
echo "呵呵"; $zV[- d  
echo "<br>"; & AlX).  
} yu62$ d  
?> c_bIadE{  
d\aU rsPn  
uYwJ[1 C  
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 1=%\4\  
mH} 1Zy  
直接看下面的例子 A ptzBs/  
6tmn1:  
<?php z+B"RV  
if ( $a > $b ) { <P1sK/IZb  
echo "a 比 b 大" ; CVBy&o"6A  
} elseif ( $a == $b ) { +-OqO3R  
echo "a 等于 b" ; . B9rG~  
} else { sHulaX{  
echo "a 比 b 小" ; b]U%|bp  
} My!<_Hp-W  
?> Z:}d\~`x$%  
"#mr?h_  
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 j_*#"}Lcp  
e|ngnkf(G  
2、 for 循环就单纯只有一种,没有变化,它的语法如下 s|Acv4| V  
m48m5>  
for (expr1; expr2; expr3) { statement } 5*pCb,z>q  
,.<l^sj5  
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 ;M"JN:J8  
J Covk1  
下例是用 for 循环写的的例子。 5rpTR  
QGnBNsAh  
<?php q.>{d%?  
for ( $i = 1 ; $i <= 10 ; $i ++) { &iDX+*(  
echo "这是第".$i."次循环<br>" ; 9n"D/NZB  
} H-o>| C  
?> bR!*z  
( XoL,lJ  
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。  Ju#t^P  
N&t+*kF_  
语法如下 A/EW57v"  
rOu7r4  
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; } k%)QrRnB  
SXA_P{j&a  
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ;'r} D!8w/  
Jtxwt[  
<?php t)O$W   
switch ( date ( "D" )) { _"B5S?  
case "Mon" : U_HOfix  
echo "今天星期一" ; bm_'giQ:  
break; zviEk/:zm  
case "Tue" : iIoeG_^*Y  
echo "今天星期二" ; C&m[/PJ~l  
break; EI*B(  
case "Wed" : +Q3i&"QB.  
echo "今天星期三" ; W])<0R52  
break; L}1|R*b  
case "Thu" : >>voLDDd  
echo "今天星期四" ; @exeHcW61  
break; gZe(aGh  
case "Fri" : K uz /  
echo "今天星期五" ; :!\?yj{{  
break; 4jl UyAD  
default: d tw4cG  
echo "今天放假" ;  ((}T^  
break; tN=B9bm3j  
} Wi Mi0?$.  
?> p#UrZKR  
_>8ZL)NQQ  
这里需要注意的是break;别遗漏了,default,省略是可以的。 ~e5hfZv|w  
ew# t4~hh  
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 WCc,RI0   
25RFi24>D  
今天就说到这里,明天开始说数据库的使用。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 2 发表于: 2006-09-03
学习目的:学会构建数据库 bZ0mK$B  
@-9I<)Z/2  
在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL SERVER数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。 JgJ4RmH-  
'a`cK;X9F  
下面说一下它的使用。 YQWGv,47\  
进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。 )A}u)PH4O  
v"VpE`z1#  
然后在左边下拉菜单中选择那个已经创建的数据库。在下面的 ~.?,*q7  
pPSmSWD?  
在数据库 shop 中创建一个新表 : Lj"@JF;c  
名字 : t%$>  
字段数 : X\:;A{  
r5kKNyJ  
中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。  x w8 e  
然后就可以开始建立表了。 qU(,q/l  
第一栏是字段的名字;第二栏选择字段类型: |kPjjVGF{  
我们常用的是以下几个: '% .:97  
1)VARCHAR,文本类型 N^\<y7x  
2)INT,整数类型 ,Q8[Ur? G  
3)FLOAT,浮点数类型 |'B-^?;  
4)DATE,日期型 hSQuML   
5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。 #)&kF+  
x{ _:B DY  
建立了表以后,可以在左边看到你建立的表,点击以后,你可以: Ib(q9!L  
1)按右边的结构:查看修改表结构 +>b~nK>M  
2)按右边的浏览:查看表中的数据 DlHt#Ob7  
3)按右边的SQL:运行SQL语句 [ZC{eg+D  
4)按右边的插入:插入一行记录 v803@9@  
5)按右边的清空:删除表中所有记录 WZ\bm$  
6)按右边的删除:删除表 A dNQS  
^=f<WKn  
还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。 WC6yQSnY&  
I d6H~;  
今天就说到这里,明天继续说数据库操作。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 3 发表于: 2006-09-03
学习目的:学会连接数据库 v?Z30?_&h  
#aX+?z\4  
PHP简直就是一个函数库,丰富的函数使PHP的某些地方相当简单。建议大家down一本PHP的函数手册,总用的到。 )k)HQcfjD  
r%`g` It  
我这里就简单说一下连接MYSQL数据库。 1>I4=mj  
]_!5g3VQh  
1、mysql_connect >|{n";n&  
U($bR|%D  
打开 MySQL 服务器连接。 LH7m >/LJr  
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数 F|+Qi BO  
=lB +GS%  
本函数建立与 MySQL 服务器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 则为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关掉可以节省资源。 '3BBTr%aZ  
7Gwn,&)  
2、 mysql_select_db HSXv_  
S$~T8_m^U  
选择一个数据库。 #0HZ"n  
语法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数 S T#9auw  
,X+LJe$  
本函数选择 MySQL 服务器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败则返回 false。 _yH{LUIj  
=E6ND8l@2  
最简单的例子就是: ]Sj<1tx7f  
$conn=mysql_connect ("127.0.0.1", "", ""); M]c"4 b;  
mysql_select_db("shop"); c`S`.WID  
连接机MY SQL数据库,打开SHOP数据库。在实际应用中应当加强点错误判断。 X:N`x  
WP*xu-(:  
今天就说到这里,明天再说一下数据库的读取。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 4 发表于: 2006-09-03
学习目的:学会读取数据 2IfcdYG  
@c;XwU]2t  
先看两个函数: 0m2%ucKw  
1、mysql_query m*bTELb  
送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 / thFs4  
O`?qnNmc;  
本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 @:,B /B;  
f.yvKi.Cm  
2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 k^VL{z:EWB  
Q$Q>pV;uH  
本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 `$PdI4~J  
]rNM3@bVy  
看一个简单的例子: 2:5Go  
<? ]|m?pt  
$exec="select * from user"; nXU`^<nA  
$result=mysql_query($exec); u[:-^H  
while($rs=mysql_fetch_object($result)) 4{PN9i E  
{ O)N$nBnp  
echo "username:".$rs->username."<br>"; ,xSNTOJ  
} e1<9:h+  
?> =EJ8J;y_f  
当然,表user中有一个username的字段,这就类似asp中的 \wjT|z1+Y  
<% scc+r  
exec="select * from user" 84f(BE  
set rs=server.createobject("adodb.recordset") d/"%fpp^0G  
rs.open exec,conn,1,1 XE#a#  
do while not rs.eof plNoI1st  
response.write "username:"&rs("username")&"<br>" 8}M-b6R V  
rs.movenext MnL o{G]  
loop *x!j:/S`n  
%> L`2(u!i J  
当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 t.rlC5 k  
2v$\mL  
小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 5 发表于: 2006-09-03
学习目的:学会添加删除修改数据  2S  
gB_gjn\  
mysql_query($exec); w,T-vf  
单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 g+j\wvx0  
7_9^nDU  
添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")"; sB@9L L]&|  
Nf5zQ@o_y  
删除:$exec="delete from tablename where..."; i}L*PCP  
Vg^yjP{sv  
修改:$exec="update tablename set item1='".$_POST['item1']."' where ..."; A3Xfu$[u  
<B Vx%  
说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> :R'={0Jg  
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] 2^X<n{0N)  
t5aX9WIW  
是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。 pP-L{bT  
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 (VM.]B<  
G_QV'zQ  
今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 6 发表于: 2006-09-03
学习目的:学会SESSION的使用 7](aPm8  
5oe{i/#di  
SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; F2>W{-H+  
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 g [u*`]-;v  
:bq$ {  
下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 *L&|4|BF2  
登陆表单是这样:login.php lqcPV) n  
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> n v ?u  
<tr> =TGa\iclpB  
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> );/p[Fd2]  
<tr class="tdbg"> `l'Ine 11  
<td colspan="2"><div align="center">Administrators Login</div></td> *x/H   
</tr> +ovT?CM o  
<tr class="tdbg"> R('\i/fy  
<td><div align="center">Username</div></td> e>UU/Ks  
<td><div align="center"> ~}_S]^br  
<input name="username" type="text" id="username"> ctoh&5%!n+  
</div></td> Ub{7Xk n  
</tr> |fB/hs \  
<tr class="tdbg"> l h?[wc  
<td><div align="center">Password</div></td> D4T42L  
<td><div align="center"> mhMTn*9  
<input name="password" type="password" id="password"> q:1n=i Ei  
</div></td> pK"iTc#\X  
</tr> @x^/X8c(p  
<tr class="tdbg"> g;7W%v5wqk  
<td colspan="2"><div align="center"> {t*CSI  
<input type="submit" name="Submit" value="Submit">  6o1[fr  
<input type="reset" name="Submit2" value="Clear"> 9T\\hM)k  
</div></td> !S'!oinV  
</tr> 8{ +KNqz  
</table></td></form> z:8ieJ)C  
</tr> o?d`o$  
</table> x9o(q`N  
*^iSP(dg  
处理文件是这样 "H9q%S,FH  
<? k*r G^imX  
require_once('conn.php'); j|>^wB  
session_start(); #bS}?fj  
$username=$_POST['username']; !y862oKD  
$password=$_POST['password']; t9.| i H  
$exec="select * from admin where username='".$username."'"; (+nnX7V?I  
if($result=mysql_query($exec)) vW0U~(XlN  
{ ck$>   
if($rs=mysql_fetch_object($result)) :7*9W|e  
{ H~?7 : K  
if($rs->password==$password) BxiR0snf0q  
{ DFb hy  
$_SESSION['adminname']=$username; sVH w\_F$  
header("location:index.php"); \.?' y71  
} .IsOU  
else U1D;O}z~  
{ hT% >)71  
echo "<script>alert('Password Check Error!');location.href='login.php';</script>"; QJ%N80  
} xJin %:O  
} <r)5jf  
else Zul@aS !  
{ ~i]4~bkH2  
echo "<script>alert('Username Check Error!');location.href='login.php';</script>"; / <+F/R'=O  
} }&]T0U`@  
} `[h&Q0Du6  
else {Q)sR*d  
{ W!|l_/L'   
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>"; sT,*<^  
} ";upu  
K."W/A!  
?> |9[)-C~N7  
4j(*%da  
conn.php是这样: 5^{I}Q  
<? D|2lBU  
$conn=mysql_connect ("127.0.0.1", "", ""); hP_{$c{4:g  
mysql_select_db("shop"); i&-g  
?> Lie= DD  
`,Fc271`  
由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp /Ri-iC >  
<? 59(kk;  
session_start(); QS@eqN  
if($_SESSION['adminname']==') )"g @"LJ=  
{ lI3d _cU  
echo "<script>alert('Please Login First');location.href='login.php';</script>"; p::`1  
} @vO~'Xxq!  
?> 6ZQ$5PY  
)h,}v()qc#  
呵呵,今天说到这里,明天说一下怎么弄一个分页。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 7 发表于: 2006-09-03
学习目的:做一个分页显示 uFG ;AY|  
{~V_6wY g  
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num X=VaBy4#  
4rypT-%^;  
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 u"(2Xer  
zX8{(  
$execc="select count(*) from tablename "; zomg$@j  
$resultc=mysql_query($execc); ;(s.G-9S  
$rsc=mysql_fetch_array($resultc); ~g *`E!2  
$num=$rsc[0]; /+m7J"Km  
@9g!5dcT  
这样可以得到记录总数 BQ {'r^u  
ceil($num/10))如果一页10记录的话,这个就是总的页数 R4XcWx*pQ  
5 HN,y  
所以可以这么写 T'7x,8&2|  
if(empty($_GET['page'])) ^mZTki4  
{ ! H4uc  
$page=0; S/6I9zOP  
} XRn+6fn|  
else R/&C}6G n  
{ %sS7o3RW\  
$page=$_GET['page']; zU# OjvNk  
if($page<0)$page=0; o2^?D`Jr  
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 wQU-r|  
} _p| KaT``  
'~76Y9mv  
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; TZ:dY x  
//一页是10记录的 EU()Nnm2  
?D]T| =EZY  
最后我们需要做的就是几个连接: u &{|f  
<a href="xxx.php?page=0">FirstPage</a> %/wfYRp*  
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> 9z(h8H  
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a> |bmc6G[  
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> leEzfbb{'.  
tUs{/Je  
这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 8 发表于: 2006-09-03
学习目的:注意事项 wq3V&@.  
Alb5#tm:m  
因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。 WR>2t&;E  
,DbT4Ul c  
1、注意不要漏了分号 Vt U  
2、注意不要漏了变量前的$ 'p(I!]"uo  
3、使用SESSION的时候注意不要遗漏session_start(); /J'dG%  
A\<WnG>xjP  
如果发生错误的时候,可以采用以下方法: *!+?%e{;b  
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句 0}aw9g  
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name +luW=j0V  
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句 "O{:jfq  
4、注意缩进,排除括号不区配的错误 w5}2$r  
_:9-x;0H2  
在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。 "zN]gz=OV>  
 ?ik6kWI  
好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 9 发表于: 2006-09-03
学习目的:学会用PHP上传文件和发邮件 g,cl|]/\d  
(#k2S-5  
上传文件表单必须加上 enctype="multipart/form-data" [KjL`  
和 <input type="file" name="file"> }[I|oV5*+&  
下面看一下代码: ^<O:`c6_  
`=f1rXhI+1  
$f=&$HTTP_POST_FILES['file']; b."1p7'  
$dest_dir='uploads';//设定上传目录 We,~P\g  
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 kP}91kja  
$r=move_uploaded_file($f['tmp_name'],$dest); a=3{UEi'o  
chmod($dest, 0755);//设定上传的文件的属性 +']S  
)|@UY(VZ^  
上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 @VcSK`  
!ZlNPPrq}  
至于发邮件就更加简单,可以使用mail()函数 &za~=+  
ssC5YtF7X  
mail("收件人地址","主题","正文","From:发件人 Reply-to:发件人的地址"); L`{EXn[  
(Dx]!FFz  
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 y|@=j~}Zq  
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 U0W- X9>y  
*QpKeI  
十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。
描述
快速回复

您目前还是游客,请 登录 或 注册
欢迎提供真实交流,考虑发帖者的感受
认证码:
验证问题:
10+5=?,请输入中文答案:十五