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

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

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
第一天 fW1CFRHH  
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 Ee%%d  
`MN4uC  
至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。 ,77d(bR<  
_FU_Ubkr  
下面简单介绍一下PHP的语法。 WUXx;9>  
o&)8o5  
1、嵌入方法: k1Y?  
}I6veagK  
类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 sW'AjI  
dhf!o0'1M  
2、引用文件: u5b|#&-mX  
`w7v*h|P  
引用文件的方法有两种:require 及 include。 Ma']?Rb`  
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 S3*`jF>q  
h-K_Lr]  
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 ub#a`  
Ru!iR#s)!  
3、注释方法: H0gbSd+  
eFTpnG  
<?php IT7wT+  
echo "这是第一种例子。 " ; // 本例是 C++ 语法的注释 J~ zUp(>K  
/* 本例采用多行的 o!Ieb  
注释方式 */ ;dtA4:IRZ4  
echo "这是第二种例子。 " ; %XoiVlT@:  
{{D)YldtA  
echo "这是第三种例子。 " ; # 本例使用 UNIX Shell 语法注释 *-=(Q`3  
?> mt+Oi70  
7yH"l9Z  
4、变量类型: U} e!Wjrc  
PI:4m%[  
$mystring = "我是字符串" ; K6/Q}W   
$NewLine = "换行了 " ; CR`Q#Yi  
$int1 = 38 ; RYQR(v  
$float1 = 1.732 ; t?-n*9,#S  
$float2 = 1.4E+2 ; rv^@,8vq  
$MyArray1 = array( "子" , "丑" , "寅" , "卯" ); n&;85IF1  
TA`1U;c{n  
这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 =_ ./~  
{JO  
5、运算符号: n,V[eW#m'L  
p{ Yv3dNl  
数学运算: 符号 意义 F^t DL:  
+ 加法运算 r?lf($ D*  
- 减法运算 "fCu=@i  
* 乘法运算 p;59?  
/ 除法运算 y^,1a[U.  
% 取余数 R'bTN|Cq  
++ 累加 +\c5]`  
-- 递减 ^T;*M_  
3G)#5 Lf<  
字符串运算: 7u S~MW  
0w \zLU  
运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的& 7Oa#c<2]  
<? Jr ,;>   
`iAF3:  
$a = "PHP 4" ; "$Z= %.3Q  
$b = "功能强大" ; Vod\a 5c  
echo $a.$b; qo90t{|c  
?> Ustv{:7v  
这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量? >。 <ro7vPKNa  
uk< 4+x,2)  
逻辑运算: 8 S:w7Hr  
<EB+1GFuI  
符号 意义 B:;pvW]  
< 小于 i&Tbz!  
> 大于 |mdVdD~go  
<= 小于或等于 ( iBl   
>= 大于或等于 G C),N\@Q  
== 等于 .779pT!,M  
!= 不等于 ?cBwPetp  
&& 而且 (And) DnMwUykF>0  
and 而且 (And) av}k)ZT_  
|| 或者 (Or) eueH)Xkf  
or 或者 (Or) 0_95|3kc  
xor 异或 (Xor) =)H.c uc  
! 不 (Not) w(*vj  
+qtJaYf/0  
今天就说到这里,明天说一下流程控制。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2006-09-03
学习目的:掌握php的流程控制 | C;=-|  
25nt14Y 0u  
1、if..else 循环有三种结构 <y2U3; t  
(^8Y|:Tz  
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: o]J{{M'E  
P_dCR  
if (expr) { statement } ITE{@1  
Xk~D$~4<  
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 Gv!2f  
#l\=}#\1Wb  
范例:本例省略大括号。 =t#llgi~  
~9a<0Mc?  
<?php I+%[d^,  
if ($state==1)echo "哈哈" ; x*/t yZg6  
?>  &=@IzmA  
 acajHs  
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 [i21FX  
9N#_( uwt  
范例:本例的执行部分有三行,不可省略大括号。 a+[KI  
G}9Jg  
<?php ~WeM TXF>y  
if ($state==1) { I*:%ni2  
echo "哈哈 ; !1jBC.G1  
echo "<br>" ; Go`vfm"S  
} .LPV#&   
?> :)-Sk$  
lLX4Gq1  
=57>!)  
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下 oA7tE u   
n$MO4s8)  
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 @ wGPqg  
<?php ?h ZAxR\  
if ($state==1) { YiXk5B0Uh  
echo "哈哈" ; ^]>O;iB?  
echo "<br>"; 7X`g,b!  
} m4[;(1  
else{ |{z:IQLv  
echo "呵呵"; /QK6Rac-  
echo "<br>"; uanhr)Ys  
} 8l>?Pv  
?> i^/T  
bQzZy5,  
xeg/A}yE  
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 )nC]5MXU  
lZd(emH@  
直接看下面的例子 x 77*c._3v  
WA<v9#m  
<?php \#8D>i?m  
if ( $a > $b ) { sNbxI|B  
echo "a 比 b 大" ; JinUV6cr  
} elseif ( $a == $b ) { \0^Kram>  
echo "a 等于 b" ; $P >  
} else { A6  
echo "a 比 b 小" ; h/QXPdV  
} !4ocZmj\  
?> po c`q5i+  
-mbt4w  
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 w1F cB$  
+r�  
2、 for 循环就单纯只有一种,没有变化,它的语法如下 u4*BX&  
U45e2~1!O  
for (expr1; expr2; expr3) { statement } Yj<a" Gr4[  
k90YV(  
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 iOf<$f  
vO H4#  
下例是用 for 循环写的的例子。 XnH05LQ  
3p$?,0ELH  
<?php i7CX65&b  
for ( $i = 1 ; $i <= 10 ; $i ++) { u%GEqruo[  
echo "这是第".$i."次循环<br>" ; %HhBt5w  
} 'NbHa!  
?> G~]Uk*M q  
k`cfG\;r  
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。 ^L,K& Jd  
=bAx,,D#  
语法如下 cRC6 s8  
+X\FBvP&  
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; } dUD[e,?  
DcS+_>a\{l  
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 {Ea b j  
]]HNd7Vh  
<?php 5p,RI&nlN  
switch ( date ( "D" )) { W Tcw4  
case "Mon" : h! ,v/7=  
echo "今天星期一" ; 8:q1~`?5"b  
break; ]HbY  
case "Tue" : av(6wht8  
echo "今天星期二" ; 3RUy, s  
break;  > ^O7  
case "Wed" : eYc$ dPE  
echo "今天星期三" ; 8%:Iv(UMk  
break; 2/U.| *mH  
case "Thu" : qRu~$K  
echo "今天星期四" ; b;L\EB  
break; ~kV/!=  
case "Fri" : zWnX*2>b  
echo "今天星期五" ; xPdG*OcX!  
break; \wmN  
default: 0RzEY!9g+  
echo "今天放假" ; JT~4mT  
break; I !- U'{  
} ,S\CC{!  
?> S0$8@"~=  
ufj,T7g^  
这里需要注意的是break;别遗漏了,default,省略是可以的。 AI2~Jp  
v<k?Vu  
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 ;cNv\t  
y-Fo=y  
今天就说到这里,明天开始说数据库的使用。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 2 发表于: 2006-09-03
学习目的:学会构建数据库 53_Hl]#qZ  
zg>zUe bA  
在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL SERVER数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。 "2!&5s,1p  
C-xr"]#]  
下面说一下它的使用。 @b\$yB@z  
进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。 `&qL(66  
$yP*jO4i  
然后在左边下拉菜单中选择那个已经创建的数据库。在下面的 &{5,:%PXw  
VCYwzB  
在数据库 shop 中创建一个新表 : bt SRtf  
名字 : Y!xF ;a  
字段数 : F k7?xc  
" > ypIR<  
中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。 .Cv6kgB@c  
然后就可以开始建立表了。 =<C: d  
第一栏是字段的名字;第二栏选择字段类型: XE RUo  
我们常用的是以下几个: TT%M' 5&  
1)VARCHAR,文本类型 3F"lXguS  
2)INT,整数类型 v@sIHb  
3)FLOAT,浮点数类型 qfF~D0}  
4)DATE,日期型 D'>_I.  
5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。 cbjs9bu  
Xc ++b|k  
建立了表以后,可以在左边看到你建立的表,点击以后,你可以: t mn tp  
1)按右边的结构:查看修改表结构 wKh4|Ka  
2)按右边的浏览:查看表中的数据 N>uRf0E>  
3)按右边的SQL:运行SQL语句 alJ)^OSIe  
4)按右边的插入:插入一行记录 2F;y;l%  
5)按右边的清空:删除表中所有记录 E#34Wh2z  
6)按右边的删除:删除表 _ >?\DgjH  
k:i4=5^*GX  
还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。 O ;Rqv  
/A\8 mL8  
今天就说到这里,明天继续说数据库操作。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 3 发表于: 2006-09-03
学习目的:学会连接数据库 @3i\%R)n;  
e)IzQ7Zex  
PHP简直就是一个函数库,丰富的函数使PHP的某些地方相当简单。建议大家down一本PHP的函数手册,总用的到。 >IafUy  
_rMg}F"  
我这里就简单说一下连接MYSQL数据库。 AF{\6<m  
yZ7&b&2nLn  
1、mysql_connect (y'hyJo  
zC:ASt  
打开 MySQL 服务器连接。 b)#hSjWO#  
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数 OG~gFZr)6  
n)/z0n!\  
本函数建立与 MySQL 服务器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 则为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关掉可以节省资源。 ZmqKQO  
QpH'PYy  
2、 mysql_select_db -/B+T>[nTb  
Z3e| UAif  
选择一个数据库。 uh_RGM&  
语法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数 yqs4[C  
C.:<-xo  
本函数选择 MySQL 服务器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败则返回 false。 u]wZQl#-  
.8g)av+  
最简单的例子就是: ~%F9%=  
$conn=mysql_connect ("127.0.0.1", "", ""); !.$I["/=  
mysql_select_db("shop"); CZe ]kXNv  
连接机MY SQL数据库,打开SHOP数据库。在实际应用中应当加强点错误判断。 .~db4d]  
KM0ru  
今天就说到这里,明天再说一下数据库的读取。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 4 发表于: 2006-09-03
学习目的:学会读取数据 ' {OgN}'{  
v~+(GqR=+  
先看两个函数: # +>oZWVc  
1、mysql_query ldcqe$7,  
送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 68|E9^`l  
S\EyCi+  
本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 f%JIp#B  
H'5)UX@LP  
2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 eIF5ZPSZi  
"!P3R1;%  
本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 %`r$g[<G  
5pG}Yk_(x  
看一个简单的例子: tFn)aa~L  
<? n80?N}  
$exec="select * from user"; `7Q<'oK  
$result=mysql_query($exec); %Xg4b6<9  
while($rs=mysql_fetch_object($result)) R{4^t97wH{  
{ #Pau\|e_  
echo "username:".$rs->username."<br>"; uc{Ihw  
} g/_5unI}u  
?> ~At7 +F[  
当然,表user中有一个username的字段,这就类似asp中的 2W(s(-hD  
<% I|!OY`ko  
exec="select * from user" hag$GX'2k  
set rs=server.createobject("adodb.recordset") MKCsv+   
rs.open exec,conn,1,1 mIvx1_[  
do while not rs.eof "{+QW  
response.write "username:"&rs("username")&"<br>" #MkTkm&r  
rs.movenext N% B>M7-=  
loop wu6;.xTLl  
%> !,uE]gwLw  
当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 e]aDP 1n3t  
$Wol?)z  
小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 5 发表于: 2006-09-03
学习目的:学会添加删除修改数据 GA )`-*.R  
8`{:MkXP  
mysql_query($exec); (m}'4et~L  
单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 a!SiX  
pF>i-i  
添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")"; }&D WaO]J7  
{WS;dX4  
删除:$exec="delete from tablename where..."; uMv,zO5  
bWS&Yk(  
修改:$exec="update tablename set item1='".$_POST['item1']."' where ..."; FxY}m  
lFj]4  
说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> ~P qM]^  
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] E=Bf1/c\  
Oszj$C(jF  
是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。 :,7hWs  
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 =%O6:YM   
fbvL7* (  
今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 6 发表于: 2006-09-03
学习目的:学会SESSION的使用 h" W,WxL8  
_61gF[r4!Y  
SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; gJ+'W1$/  
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 +=h:Vb8  
pllGB6X  
下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 d1T!+I  
登陆表单是这样:login.php RP|`HkP-2  
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> DCa^ u'f  
<tr> -i|}m++  
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> Gz0]}]A  
<tr class="tdbg"> IPpN@  
<td colspan="2"><div align="center">Administrators Login</div></td> y.k~Y0  
</tr> 8Fh)eha9f  
<tr class="tdbg"> ^7*11%Q  
<td><div align="center">Username</div></td> >Tx?%nQ  
<td><div align="center"> TX/Xt7#R:  
<input name="username" type="text" id="username"> ,p a {qne  
</div></td> 'Is kWgc  
</tr> (9 d&  
<tr class="tdbg"> BlO<PMmhT&  
<td><div align="center">Password</div></td> o-HT1Hc!  
<td><div align="center"> ^\% (,KNo  
<input name="password" type="password" id="password"> 8,%^ M9zBP  
</div></td> 2,F .$X  
</tr> ;(%QD 3>  
<tr class="tdbg"> %1L,Y  
<td colspan="2"><div align="center"> kD%( _K5  
<input type="submit" name="Submit" value="Submit"> i]4I [!  
<input type="reset" name="Submit2" value="Clear"> UkC!1Jy  
</div></td> vr l-$ii  
</tr> u=sp`%?  
</table></td></form> Or+U@vAnk  
</tr>  _[3D  
</table> +sA2WK]  
$%Kf q[Q  
处理文件是这样 xo&_bMO  
<? mJnIwdW*  
require_once('conn.php'); BxmWIItz  
session_start(); ;'K5J9k  
$username=$_POST['username']; w& #]-|$  
$password=$_POST['password']; *fxG?}YT  
$exec="select * from admin where username='".$username."'"; @.l@\4m  
if($result=mysql_query($exec)) T -2t.Xs  
{ aXYY:;  
if($rs=mysql_fetch_object($result)) 6 gE7e|+  
{ xCTML!H  
if($rs->password==$password) BU_nh+dF  
{ AT3Mlz~7#  
$_SESSION['adminname']=$username; tNI^@xdim1  
header("location:index.php"); X_h}J=33Q  
} cT,sh~-x,  
else m(!FHPvN  
{ 4$<JHo @.  
echo "<script>alert('Password Check Error!');location.href='login.php';</script>"; cq]6XK-W  
} ~ 7s!VR  
} q9_OGd|P  
else # W']6'O  
{ teF9Q+*~  
echo "<script>alert('Username Check Error!');location.href='login.php';</script>"; \b x$i*  
} "+s++@ z  
} Gef TdO.&  
else D>q9 3;p  
{ r19 pZAc  
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>"; Otuf] B^s  
} +\9NDfYIA  
H <l7ZS:  
?> a=2%4Wmz  
^h6tr8yn  
conn.php是这样: R 9\*#c  
<? Yq KCeg  
$conn=mysql_connect ("127.0.0.1", "", ""); %u'u kcL7  
mysql_select_db("shop"); ~?BXti<!  
?> ?tbrbkx  
wHy!CP%  
由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp fZF@k5*\  
<? HZge!Yp<  
session_start(); }}~|!8  
if($_SESSION['adminname']==') C'x&Py/#  
{ ga+dt  
echo "<script>alert('Please Login First');location.href='login.php';</script>"; ux4POO3C|  
} i_%_x*  
?> L8B! u9%  
K|, .C[  
呵呵,今天说到这里,明天说一下怎么弄一个分页。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 7 发表于: 2006-09-03
学习目的:做一个分页显示 e^voW"?%  
<5051U Eu  
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num 2+XA X:YD  
ygcm|PrS  
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 MQ2}EY*A  
upmx $H>  
$execc="select count(*) from tablename "; &D<yX~  
$resultc=mysql_query($execc); y9ZvV0  
$rsc=mysql_fetch_array($resultc); !a\^Sk /  
$num=$rsc[0]; 75lA%| *X  
N!}f}oF  
这样可以得到记录总数 g_bLl)g<  
ceil($num/10))如果一页10记录的话,这个就是总的页数 L4W5EO$  
6=C<>c %+  
所以可以这么写 tw@X> G1z  
if(empty($_GET['page'])) PJ#,2=n~  
{ F== p<lrs  
$page=0; XiWmV  ?  
} K&-"d/QuLg  
else !N^@4*  
{ m&3xJuKih  
$page=$_GET['page']; ~} ~4  
if($page<0)$page=0; YmG("z  
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 SpBy3wd  
} ~xTt204S  
-9?]IIVb  
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; omx=  
//一页是10记录的 5^Zg>I  
4xj4=C~i  
最后我们需要做的就是几个连接: X?Q4}Y  
<a href="xxx.php?page=0">FirstPage</a> h";L  
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> 53 h0UL  
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a> "[N!m1i:{  
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> ;tf=gdX;  
DY*N|OnqJ  
这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 8 发表于: 2006-09-03
学习目的:注意事项 0g;|y4SN=  
/dHF6yW  
因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。 /bmN\I  
a+QpM*n7Lq  
1、注意不要漏了分号 Ny# ^&-K  
2、注意不要漏了变量前的$ Gc7=  
3、使用SESSION的时候注意不要遗漏session_start(); '3;b@g,  
RnN!2K  
如果发生错误的时候,可以采用以下方法: W,u:gzmhw  
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句 [Rb+q=z#  
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name j8gdlIx  
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句 zuCSj~  
4、注意缩进,排除括号不区配的错误 ,!9zrYi}  
:!QAC@  
在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。 L/[K"  
2g<Xtt7+o  
好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 9 发表于: 2006-09-03
学习目的:学会用PHP上传文件和发邮件 KPki}'GO  
-\MG}5?!  
上传文件表单必须加上 enctype="multipart/form-data" d(K +);!  
和 <input type="file" name="file"> "N#Y gSr  
下面看一下代码: ^zr`;cJ+c  
i30!}}N8  
$f=&$HTTP_POST_FILES['file']; pCG}Z Ka  
$dest_dir='uploads';//设定上传目录 fqd^9wl>P6  
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 D_MmW  
$r=move_uploaded_file($f['tmp_name'],$dest); lq uLT6]  
chmod($dest, 0755);//设定上传的文件的属性 VU#7%ufu&  
HOi`$vX }N  
上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 P<-@h1p,  
TA\vZGJ('  
至于发邮件就更加简单,可以使用mail()函数 k:%%/  
$~kA B8z  
mail("收件人地址","主题","正文","From:发件人 Reply-to:发件人的地址"); W*G<X.Hf  
QGz|*]  
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 g)B]FH1  
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 |y*c9  
u? EN  
十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。
描述
快速回复

您目前还是游客,请 登录注册
批量上传需要先选择文件,再选择上传
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八