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

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

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
第一天 gb[5&> (#  
以前写了十天学会ASP,十天学会ASP.NET什么的,现在想想再写个PHP吧,也算比较全了。 PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少。 ?:Uv[|S#>  
{$0mwAOH "  
至于表单设计什么的,我这里也不想多说了,在《十天学会ASP》中已经有介绍。 DX#Nf""Pw  
<cps2*'  
下面简单介绍一下PHP的语法。 em%4Ap  
Ni9/}bb  
1、嵌入方法: n] ._uza  
xQ7l~O b  
类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。 fDv2JdiU  
V5+=e^pa2  
2、引用文件: 8W*%aOi5+  
8{^kQ/]'|  
引用文件的方法有两种:require 及 include。  dm\F  
require 的使用方法如 require("MyRequireFile.php"); 。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。 $*^7iT4q_t  
<}C oQz  
include 使用方法如 include("MyIncludeFile.php"); 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。 '$i: 2mn,  
?1~`*LE  
3、注释方法: 03$mYS_?  
R`NYEptJ  
<?php 5TH~.^`Fi  
echo "这是第一种例子。 " ; // 本例是 C++ 语法的注释 ejSji-Qd  
/* 本例采用多行的 ZF!h<h&,  
注释方式 */ 9 P l  
echo "这是第二种例子。 " ; Kn5~d(:  
Wf+cDpK  
echo "这是第三种例子。 " ; # 本例使用 UNIX Shell 语法注释 `KZm0d{H  
?> g2+2%6m0  
n1Yp1"2b[  
4、变量类型: h79}qU  
Ouk ^O}W6  
$mystring = "我是字符串" ; y8]B:_iU9  
$NewLine = "换行了 " ; p*XANGA  
$int1 = 38 ; T$8)u'-pa  
$float1 = 1.732 ; (~p< P+  
$float2 = 1.4E+2 ; ; 5*&xz  
$MyArray1 = array( "子" , "丑" , "寅" , "卯" ); 7r6.n61F  
j\eI0b @*  
这里引出两个问题,首先PHP变量以$开头,第二PHP语句以;结尾,可能ASP程序员会不适应。这两个遗漏也是程序上大多错误所在。 G<L;4nA)  
yuh *  
5、运算符号: <$D`Z-6  
X]ipI$'+C  
数学运算: 符号 意义 x+\`gK5  
+ 加法运算 2=*H 8'k  
- 减法运算 OAgniLv  
* 乘法运算 9SX +  
/ 除法运算 AP3a;4Z#  
% 取余数 k R?qb6  
++ 累加 y6g&Y.:o  
-- 递减 /ixp&Z|7  
A7%)~z<  
字符串运算: NDN7[7E  
nGC/R&  
运算符号只有一个,就是英文的句号。它可以将字符串连接起来,变成合并的新字符串。类似ASP中的& =>m<GvQz  
<? { a =#B)6  
t*p71U4+I  
$a = "PHP 4" ; 3/P1!:g9  
$b = "功能强大" ; '+@=ILj>  
echo $a.$b; akmkyrz'&  
?> #$.;'#u'so  
这里也引出两个问题,首先PHP中输出语句是echo,第二类似ASP中的<%=变量%>,PHP中也可以<?=变量? >。 ]_)yIi"  
em y[k  
逻辑运算: bTI|F]^!  
?e%ZOI  
符号 意义 dB{Q" !  
< 小于 l|u>Tb|V  
> 大于 !Lu2  
<= 小于或等于 ]}V<*f  
>= 大于或等于 V.U| #n5  
== 等于 Z3Og=XHR  
!= 不等于 wi!?BCseq  
&& 而且 (And) ?al'F  q  
and 而且 (And) 4VHn  \  
|| 或者 (Or) R|'ybW'Y  
or 或者 (Or) AzPu)  
xor 异或 (Xor) QFA8N  
! 不 (Not) rjK%t|aV^  
~]sc^[  
今天就说到这里,明天说一下流程控制。
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2006-09-03
学习目的:掌握php的流程控制 ;[ZEDF5H  
@@f"%2ZR[  
1、if..else 循环有三种结构 GC-5X`Sq  
.e#w)K  
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下: Y/F6\oh  
KR} ?H#%  
if (expr) { statement } 9+|$$)  
O 2V  
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 Cp\6W[2+B  
poE0{HOU  
范例:本例省略大括号。 hW<%R]^|  
|]bsCmD  
<?php !aUs>1i  
if ($state==1)echo "哈哈" ; i$Ul(?  
?> cZ,b?I"Q%  
N%@Qf~  
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。 -OV&Md:~  
gb1V~  
范例:本例的执行部分有三行,不可省略大括号。 L;z?a Z7n  
xo^b&ktQd  
<?php 2DA]i5  
if ($state==1) { 3Tcms/n  
echo "哈哈 ; Da*?x8sSL  
echo "<br>" ; w7L{_aom  
} \  #F  
?> kdiM5l70  
hPkp;a #  
=IZT(8  
第两种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下 '@v\{ l  
@?sRj&w  
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。 %uDi#x.  
<?php gT. sj d  
if ($state==1) { C[cbbp  
echo "哈哈" ; >>r(/81S  
echo "<br>"; yX>K/68  
} , >a&"V^k  
else{ WCZjXDiwJ  
echo "呵呵"; ^e,.  
echo "<br>"; RNk\.}m  
} kt#fMd$  
?> u[;\y|75  
j^sg6.Z*  
(XTG8W sN  
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。 k=$TGqQY?  
;nfdGB  
直接看下面的例子 FjHv   
z _$%-6  
<?php Y(y kng  
if ( $a > $b ) { 3DX*gsx(  
echo "a 比 b 大" ; RMV/&85?y  
} elseif ( $a == $b ) { Qp5VP@t  
echo "a 等于 b" ; 8 /]S^'>  
} else { :LQYo'@yB  
echo "a 比 b 小" ; 1ba~SHi  
} B:Oa}/H   
?> #P9~}JB3,  
/{J4:N'B>  
上例只用二层的 if..else 循环,用来比较 a 和 b 两个变量。实际要使用这种递归 if..else 循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。 d'gfQlDny  
F~vuM$+d  
2、 for 循环就单纯只有一种,没有变化,它的语法如下 ,2oWWsC7  
C3f' {}  
for (expr1; expr2; expr3) { statement } ! I:%0D  
df+l%9@  
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。 )r?}P1J7  
KZY}%il!`  
下例是用 for 循环写的的例子。 _yx>TE2e  
VT)oLj/A  
<?php \.{$11P#  
for ( $i = 1 ; $i <= 10 ; $i ++) { }"H,h)T  
echo "这是第".$i."次循环<br>" ; R%WCH?B<}  
} n38p!oS  
?> G_8RK,H.  
Y5Bo|*b  
3、 switch 循环,通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。 BwEN~2u6  
_.Nbt(mz  
语法如下 SHxNr(wJ<Q  
s\(k<Ks  
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; } +)om^e@.  
H|<[YYk  
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环。 ;8&3 dm]  
7F7 {)L  
<?php RLXL&  
switch ( date ( "D" )) { W(Fv l  
case "Mon" : ^)S;xb9  
echo "今天星期一" ; Rok7n1gW  
break; >>)b'c  
case "Tue" : O6 3<AY@  
echo "今天星期二" ; 2wg5#i  
break; |A~jsz6pI  
case "Wed" : I_#kgp  
echo "今天星期三" ; ^/>(6>S^M  
break; x+:UN'"r  
case "Thu" : mDABH@ R  
echo "今天星期四" ; <al(7  
break; =o(5_S.u;  
case "Fri" : 9&2O 9Nz6  
echo "今天星期五" ; 8 ^2oWC#U(  
break; lv<*7BCp  
default: 0S_~\t  
echo "今天放假" ; d L 1tl  
break; 4[r0G+  
} uBKgcpvTs  
?> ~H_/zK6e  
nNV'O(x}  
这里需要注意的是break;别遗漏了,default,省略是可以的。 dq6m>;`  
Fnv;^}\z  
很明显的,上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。 }eU*( }<^  
~ 'cmSiz-  
今天就说到这里,明天开始说数据库的使用。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 2 发表于: 2006-09-03
学习目的:学会构建数据库 sqwGsO$#  
BO ;tCEV?  
在ASP中,如果是ACCESS数据库你可以直接打开ACCESS来编辑MDB文件,如果是SQL SERVER你可以打开企业管理器来编辑SQL SERVER数据库,但是在PHP中,MY SQL的命令行编辑可能会令初学者感到很麻烦,不要紧,你下载一个PHPMYADMIN安装一下,以后建立编辑数据库可以靠它了。 D,*3w'X!K  
rQs)O<jl  
下面说一下它的使用。 8 +/rlHp  
进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。 [A~xy'T  
L.2^`mZs  
然后在左边下拉菜单中选择那个已经创建的数据库。在下面的 ZohCP  
_ QI\  
在数据库 shop 中创建一个新表 : z+wA rPxc  
名字 : !u[9a;Sa#  
字段数 : }5[qo`M  
'RR~7h  
中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。 '~<m~UXvD#  
然后就可以开始建立表了。 #aJ(m&  
第一栏是字段的名字;第二栏选择字段类型: 81F/G5  
我们常用的是以下几个: ;(/ZO%h  
1)VARCHAR,文本类型 LVfF[  
2)INT,整数类型 py!|\00}  
3)FLOAT,浮点数类型 &< `NT D  
4)DATE,日期型 ?0?#U0(;u  
5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。 QB uMJm  
Ad8n<zt|  
建立了表以后,可以在左边看到你建立的表,点击以后,你可以: ^7U G$A  
1)按右边的结构:查看修改表结构 _$Yk M,  
2)按右边的浏览:查看表中的数据 &*,#5.  
3)按右边的SQL:运行SQL语句 }Yzco52  
4)按右边的插入:插入一行记录  2DtM20<>  
5)按右边的清空:删除表中所有记录 YMcD|Kbp  
6)按右边的删除:删除表 u#$]?($}d  
Y|f[bw  
还有一个很重要的功能就是导入和导出,当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,如果是ASP的ACCESS简单了,直接上传MDB文件即可,如果是SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的PHPMYADMIN上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句即可。 mt{nm[D!Xp  
Qf+\;@  
今天就说到这里,明天继续说数据库操作。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 3 发表于: 2006-09-03
学习目的:学会连接数据库 9igiZmM  
/{aj}M0kN  
PHP简直就是一个函数库,丰富的函数使PHP的某些地方相当简单。建议大家down一本PHP的函数手册,总用的到。 `l ^9/_g'6  
L-WT]&n_  
我这里就简单说一下连接MYSQL数据库。 )._;~z!  
Fn;SF4KOm  
1、mysql_connect q4:o#K#  
Uw. `7b>B  
打开 MySQL 服务器连接。 8,4"uuI  
语法: int mysql_connect(string [hostname] [:port], string [username], string [password]); 返回值: 整数 QUc= &5 %  
<4si/=  
本函数建立与 MySQL 服务器的连接。其中所有的参数都可省略。当使用本函数却不加任何参数时,参数 hostname 的默认值为 localhost、参数 username 的默认值为 PHP 执行行程的拥有者、参数 password 则为空字符串 (即没有密码)。而参数 hostname 后面可以加冒号与端口号,代表使用哪个端口与 MySQL 连接。当然在使用数据库时,早点使用 mysql_close() 将连接关掉可以节省资源。 rdP[<Y9  
4{U T!WIi  
2、 mysql_select_db ?%-DfCS  
uM IIYS  
选择一个数据库。 feDlH[$  
语法: int mysql_select_db(string database_name, int [link_identifier]); 返回值: 整数 t ;;U}  
|O|V-f{l  
本函数选择 MySQL 服务器中的数据库以供之后的资料查询作业 (query) 处理。成功返回 true,失败则返回 false。 EzM ?Nft  
N=5a54!/  
最简单的例子就是: QvlObEhcS  
$conn=mysql_connect ("127.0.0.1", "", ""); ghG**3xr  
mysql_select_db("shop"); {j?FNOJn  
连接机MY SQL数据库,打开SHOP数据库。在实际应用中应当加强点错误判断。 *SDs;kg  
N1}sHyVq7  
今天就说到这里,明天再说一下数据库的读取。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 4 发表于: 2006-09-03
学习目的:学会读取数据 d9f C<Tp  
XH4  
先看两个函数: %+W{iu[|  
1、mysql_query |^"1{7)  
送出一个 query 字符串。 语法: int mysql_query(string query, int [link_identifier]); 返回值: 整数 )Xz,j9GzJS  
f;o5=)Y  
本函数送出 query 字符串供 MySQL 做相关的处理或者执行。若没有指定 link_identifier 参数,则程序会自动寻找最近打开的 ID。当 query 查询字符串是 UPDATE、INSERT 及 DELETE 时,返回的可能是 true 或者 false;查询的字符串是 SELECT 则返回新的 ID 值,当返回 false 时,并不是执行成功但无返回值,而是查询的字符串有错误。 eCU:Q  
"Y =;.:qe  
2、mysql_fetch_object 返回类资料。 语法: object mysql_fetch_object(int result, int [result_typ]); 返回值: 类 _ @NL;w:!  
BDW^7[n  
本函数用来将查询结果 result 拆到类变量中。若 result 没有资料,则返回 false 值。 X8a/ `Y,  
s^G.]%iU  
看一个简单的例子: A@!qv#'  
<? r[`9uVT/  
$exec="select * from user"; -8ywO"6  
$result=mysql_query($exec); w7.V6S$Ga  
while($rs=mysql_fetch_object($result)) HSE!x_$  
{ D09Sg%w  
echo "username:".$rs->username."<br>"; ~?Qe?hB  
} dC3o9  
?> Z*]9E^  
当然,表user中有一个username的字段,这就类似asp中的 8yR.uMI$/  
<% <sGVR5NR  
exec="select * from user" 1y@i}<9F  
set rs=server.createobject("adodb.recordset") ;40/yl3r3[  
rs.open exec,conn,1,1 Fx_z6a  
do while not rs.eof %A9NB!  
response.write "username:"&rs("username")&"<br>" ]3],r?-tJ  
rs.movenext 0y'H~(  
loop VX0 %a@ur  
%> WTQ\PANAaR  
当然先要连接数据库,一般我们 require_once('conn.php');而conn.php里面就是上一次说的连接数据库的代码。 8`B3;Zmm  
36&e.3/#  
小小的两条命令可以完成读取数据的工作了,今天说到这里下一次说数据的添加删除修改。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 5 发表于: 2006-09-03
学习目的:学会添加删除修改数据 O_ muD\  
7?!d^$B  
mysql_query($exec); ed{ -/l~j  
单这个语句就可以执行所有的操作了,不同的就是$exec这个sql语句 z [}v{  
zlSNfgO  
添加:$exec="insert into tablename (item1,item2) values ('".$_POST['item1']."',".$_POST['item1'].")"; bivuqKA  
4<w.8rR:A  
删除:$exec="delete from tablename where..."; m/@wh a  
k<nZ+! M  
修改:$exec="update tablename set item1='".$_POST['item1']."' where ..."; ,GhS[VJjR  
,hm\   
说到这里就要说一下表单和php变量传递,如果表单中的一个 <input name="item1" type="text" id="item1"> YlJ@XpKM  
表单以POST提交的,那么处理表单文件就可以用$_POST['item1']得到变量值,同样以GET提交的就是$_GET['item1'] lV3x*4O=  
y4 #>X  
是不是很简单?但是通常$exec会有问题,因为可能您的SQL语句会很长,您会遗漏.连接符,或者'来包围字符型字段。 vFzRg5lH  
我们可以注释mysql_query($exec);语句用echo $exec;代替来输出$exec以检查正确性。如果您还不能察觉$exec有什么错误的话,可以复制这个sql语句到phpmyadmin中执行,看看它的出错信息。还有需要注意的是,我们不要使用一些敏感的字符串作为字段名字,否则很可能会出现问题,比如说date什么的。变量的命名,字段的命名遵循一点规律有的时候对自己是一种好处,初学者并不可忽视其重要性。 ^qvZXb  
1APe=tJ  
今天就说到这里,大家可以DOWN一个SQL语句的参考手册,再研究研究。明天继续说SESSION。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 6 发表于: 2006-09-03
学习目的:学会SESSION的使用 x}wG:K  
z3{G9Np  
SESSION的作用很多,最多用的就是站点内页面间变量传递。在页面开始我们要session_start();开启SESSION; n:I,PS0H<  
然后就可以使用SESSION变量了,比如说要赋值就是:$_SESSION['item']="item1";要得到值就是$item1=$_SESSION['item'];,很简单吧。这里我们可能会使用到一些函数,比如说判断是不是某SESSION变量为空,可以这么写:empty($_SESSION['inum'])返回true or false。 Q",t3i4  
htO +z7  
下面综合一下前面所说的我们来看一个登陆程序,判断用户名密码是否正确。 Y!aSs3c  
登陆表单是这样:login.php kUL' 1!j7  
<table width="100%" height="100%" border="0" align="center" cellpadding="0" cellspacing="0"> jh?H.;**  
<tr> Y #ap*  
<form action="checklogin.php" method="post"><td align="center" valign="middle"><table width="400" border="0" cellpadding="5" cellspacing="1" class="tablebg"> :DK {Vg6  
<tr class="tdbg"> bI7Vwyz  
<td colspan="2"><div align="center">Administrators Login</div></td> z}77Eh<  
</tr> .FP$m?  
<tr class="tdbg"> q<x/Hat)  
<td><div align="center">Username</div></td> R^8o^z['6u  
<td><div align="center"> + B,}Qr  
<input name="username" type="text" id="username"> G=s}12/Z"{  
</div></td> ,1.p%UE]>  
</tr>  sg^zH8,3  
<tr class="tdbg"> R"/GQ`^AqA  
<td><div align="center">Password</div></td> 59 T 8r  
<td><div align="center"> {Y(zd[  
<input name="password" type="password" id="password"> yM6pd U]i  
</div></td> Z\bmW%av  
</tr> <yV"6/l 0  
<tr class="tdbg"> 1SQ3-WU s  
<td colspan="2"><div align="center"> t4."/ .=+  
<input type="submit" name="Submit" value="Submit"> gs^Xf;g vI  
<input type="reset" name="Submit2" value="Clear"> *?@?f&E/  
</div></td> ]\-A;}\e  
</tr> ch*8B(:  
</table></td></form> &@X<zWg  
</tr> o*+"|  
</table> OR P\b  
h"B+hu  
处理文件是这样 6%\J"AgXO  
<? \Gef \   
require_once('conn.php'); /* (Kr'c  
session_start(); u74[>^  
$username=$_POST['username']; v4a8}G  
$password=$_POST['password']; +qN>.y!Y  
$exec="select * from admin where username='".$username."'"; r5S[-`s;  
if($result=mysql_query($exec)) '0;l]/i.  
{ ^ox=HNV  
if($rs=mysql_fetch_object($result)) c8 )DuJ#U  
{ + )AG*  
if($rs->password==$password) aL\PGdgO  
{ C!O0xhs  
$_SESSION['adminname']=$username; :^lI`9'*R  
header("location:index.php"); LRxZcxmy  
} i]c!~`  
else h:))@@7MJ  
{ ,hDW Ps2S  
echo "<script>alert('Password Check Error!');location.href='login.php';</script>"; : g7@PJND  
} B6+khuG(  
} g\|PcoLm  
else ''cInTCr  
{ d"1]4.c  
echo "<script>alert('Username Check Error!');location.href='login.php';</script>"; ql Ax  
} `GBW%X/  
} Y sC>i`n9  
else ,C\i^>=  
{ Gq)]s'r2  
echo "<script>alert('Database Connection Error!');location.href='login.php';</script>"; #Qw0&kM7I  
} .fqN|[>  
c1(RuP:S  
?> dZl5Ic  
)N{Pw$l_  
conn.php是这样: G{~J|{t\yz  
<? (Bb5?fw  
$conn=mysql_connect ("127.0.0.1", "", ""); @f>-^  
mysql_select_db("shop"); AG nxYV"p  
?> f3l&3hC  
fivw~z|[@  
由于 $_SESSION['adminname']=$username;我们可以这样写验证是否登陆语句的文件:checkadmin.asp zy?|ODM  
<? *uRBzO}  
session_start(); ^]Y> [[  
if($_SESSION['adminname']==') 2 0h} [Q(  
{ h%na>G  
echo "<script>alert('Please Login First');location.href='login.php';</script>"; AEI>\Y  
} x M/+L:_<  
?> Ys9[5@7  
caR<Kb:;*  
呵呵,今天说到这里,明天说一下怎么弄一个分页。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 7 发表于: 2006-09-03
学习目的:做一个分页显示 IZ-1c1   
+zN-!5x  
关键就是用到了SQL语句中的limit来限定显示的记录从几到几。我们需要一个记录当前页的变量$page,还需要总共的记录数$num IJp-BTO{V  
dh\'<|\K  
对于$page如果没有我们就让它=0,如果有<0就让它也=0,如果超过了总的页数就让他=总的页数。 G^|:N[>B  
=+-UJo5  
$execc="select count(*) from tablename "; F@jZ ho  
$resultc=mysql_query($execc); VR8-&N  
$rsc=mysql_fetch_array($resultc); WF+99?75  
$num=$rsc[0]; V]6dscQ  
ij`w} V  
这样可以得到记录总数 ea2ayT  
ceil($num/10))如果一页10记录的话,这个就是总的页数 9Q^r O26+  
2eS~/Pq5=i  
所以可以这么写 =!A_^;NQf  
if(empty($_GET['page'])) %g$o/A$  
{ ^$jb7HMObI  
$page=0; {%5eMyF#  
} Lnl(2xD  
else :K,i\  
{ T@B/xAq5!  
$page=$_GET['page']; (UD@q>c  
if($page<0)$page=0; k/_ 59@)  
if($page>=ceil($num/10))$page=ceil($num/10)-1;//因为page是从0开始的,所以要-1 dh iuI|?@  
} E?f-wQF  
l}|%5.5-  
这样$exec可以这么写 $exec="select * from tablename limit ".($page*10).",10"; 9!\B6=r y4  
//一页是10记录的 !X#OOqPr=  
OX7M8cmc+  
最后我们需要做的就是几个连接: Yx%Hs5}8  
<a href="xxx.php?page=0">FirstPage</a> a$OE0zn`  
<a href="xxx.php?page=<?=($page-1)?>">PrevPage</a> a(X@Q8l:  
<a href="xxx.php?page=<?=($page+1)?>">NextPage</a> ',@3>T**  
<a href="xxx.php?page=<?=ceil($num/10)-1?>">LastPage</a> `:KY\  
M#6W(|V/  
这是一个大致的思路,大家可以想想怎么来优化?今天说到这里,明天说一下一些注意的问题。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 8 发表于: 2006-09-03
学习目的:注意事项 b94DJzL1z  
n0 {i&[I~+  
因为我是先学ASP的,所以再做PHP的时候会发现很多地方需要适应。 9wwqcx)3(  
'[:D$q;  
1、注意不要漏了分号 ~rKrpb]ow  
2、注意不要漏了变量前的$ L|xbR#v  
3、使用SESSION的时候注意不要遗漏session_start(); sY Qk  
{rw|#Z>A  
如果发生错误的时候,可以采用以下方法: &%DY\*  
1、如果是SQL语句出错,就注释了然后输出SQL语句,注意也要注释调后续的执行SQL语句 ;bib/  
2、如果是变量为空,大多是没有传递到位,输出变量检查一下,检查一下表单的id和name 8qTys8  
3、如果是数据库连接出错,检查是否正确打开MY SQL和是否遗漏了连接语句 I"<\<^B<  
4、注意缩进,排除括号不区配的错误 _7 L-<  
ASySiHz  
在做大网站的时候,我的思路是先构建数据库,确定每一个字段的作用,和表之间的关系。然后设计后台界面,从添加数据开始做起,因为添加是否成功可以直接到数据库里面验证,做好了添加再做显示的页面,最后才是两者的结合。一般来说后台就包括添加删除修改和显示,后台没有问题了,前台也没有什么大问题。前台还需要注意安全性和容错还有就是输出格式。 *Kg ks4  
"?xHlYj@+  
好了,今天说到这里,明天说一下如果用PHP上传文件和发邮件。
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 9 发表于: 2006-09-03
学习目的:学会用PHP上传文件和发邮件 `?_Q5lp/s  
,T$U'&;  
上传文件表单必须加上 enctype="multipart/form-data" & G4\2l9  
和 <input type="file" name="file"> pJ"qu,w  
下面看一下代码: ]72`};  
*zvx$yJ?  
$f=&$HTTP_POST_FILES['file']; "7F?@D$e  
$dest_dir='uploads';//设定上传目录 BLiF 5  
$dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复 x*U)Y  
$r=move_uploaded_file($f['tmp_name'],$dest); u0c1:Uv#~e  
chmod($dest, 0755);//设定上传的文件的属性 _op}1   
6iE<T&$3P  
上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键 )yZ^[uJ}3C  
k"zv~`i'  
至于发邮件就更加简单,可以使用mail()函数 zE9W8:7  
97C]+2R%^  
mail("收件人地址","主题","正文","From:发件人 Reply-to:发件人的地址"); u?(d gJ  
c9 _ rmz8  
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。 k2tF}  
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。 *H2r@)Y[~  
k9 I%PH  
十天学会PHP说到这里了,我的三大系列文章都用《十天学会》作为名字,想告诉大家的是ASP,PHP,ASP.NET入门都可以是十天,但是精通决不是十天啊,还需要大家自己去研究。
描述
快速回复

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