如何在十天内学会php之第一天
PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合。我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序。当然要简单的构建和访问查看数据库 phpmyadmin 不可少。
下面简单介绍一下PHP的语法。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
1、嵌入方法:
PHP可以是<?php或者是<?开头,结束符号是?>,当然您也可以自己指定。---------------------------------------------------------------------------------------------------------------------------------------------------------------
2、引用文件:
引用文件的方法有两种:require 及 include。
require 的使用方法如<? require("MyRequireFile.php"); ?>。这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
include 使用方法如<? include("MyIncludeFile.php");?>。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
PHP include("header.php")
---------------------------------------------------------------------------------------------------------------------------------------------------------------
3、注释方法:
PHP注释种方法
<?php
echo 'A' /* 第一种注释方法 */
//第二种注释方法
#第三种注释方法
?>
---------------------------------------------------------------------------------------------------------------------------------------------------------------
4、变量类型:
$mystring = "我是字符串" ;首先PHP变量以$开头,第二PHP语句以;结尾,
---------------------------------------------------------------------------------------------------------------------------------------------------------------
5、运算符号:
1、算术运算符
+ $a + $b 加 $a加上$b
- $a - $b 减 $a减去$b
* $a * $b 乘 $a乘以$b
/ $a / $b 除 $a除以$b
% $a % $b 取模 $a除以$b的余数
如果两个操作数都是整型值(字符串将被转换为整型值),除号("/") 返回整型值(整除的值)。如果任一个操作数是浮点值,则做浮点除法。
2,字符串连接符
操作符只有字符串连接符 (".")。
. 字符串连接符
$a = "Hello ";
$b = $a . "World!"; // now $b = "Hello World!"
.= 类似的连接<br />
$a = "Hello "; <br /><br />
$b = "World!";<br />
$a .= $b// $a = "Hello World!" </p>
<p class="STYLE34"><br />
<span class="STYLE36"><strong>3、赋值运算符</strong></span> <br />
</p>
<p class="STYLE34"> <strong>=</strong> $a = 3; $a = ($b = 4) + 5; // 现在 $a 等于 9, $b为4 。 <br />
<strong>+=</strong> $a += 5; // 把$a 设成 8, 也就是: $a = $a + 5; <br />
<strong>.=</strong> $b .= "There!"; // 把 $b 设成 "Hello There!", 就象 $b = $b . "There!"; 联合<br />
<strong>*=</strong> $a *= 5; // 把$a 设成 8, 也就是: $a = $a * 5;<br />
<strong>/=</strong> $a /= 5; // 把$a 设成 8, 也就是: $a = $a / 5;<br />
-= $a -= 5; // 把$a 设成 8, 也就是: $a = $a - 5;<br />
<strong>%=</strong> $a %= 5; // 把$a 设成 8, 也就是: $a = $a % 5; 取模 $a除以5的余数</p>
<p class="STYLE34"><br />
<span class="STYLE36"><strong>4、 位运算符</strong></span></p>
<p class="STYLE34"><strong> </strong>位运算允许你对指定的数据置位或复位。 <br />
<strong>&</strong> 与运算, $a & $b 与 $a和$b都被置位则结果被置位 <br />
<strong>| </strong>或运算, $a | $b 或 $a或$b有一个被置位则结果被置位<br />
<strong>~</strong> 非运算, ~ $a 非 $a没有被置位则结果被置位</p>
<p class="STYLE34"><br />
<span class="STYLE36"><strong>5、 逻辑运算符</strong></span></p>
<p class="STYLE34"><strong><br />
</strong> <strong>and</strong> $a and $b 与 $a和$b同时为真则结果为真<br />
<strong>or </strong> $a or $b 或 $a或$b有一个为真则结果为真<br />
<strong>xor</strong> $a xor $b 异或 $a和$b不同时为真则结果为真<br />
<strong> !</strong> ! $a 非 $a为假则结果为真<br />
<strong>&&</strong> $a && $b 与 $a和$b同时为真则结果为真<br />
<strong>|| </strong> $a || $b 或 $a或$b有一个为真则结果为真<br />
比较两个变量时,"与"和"或"运算有两种运算符这是以为两种运算符有不同的优先级</p>
<p class="STYLE37">6、 比较运算符</p>
<p class="STYLE34"><br />
比较运算符,就象名字一样,允许你比较两个值。<br />
<strong>==</strong> $a == $b 等于 $a等于$b结果为真 (左边等于右边)<br />
<strong>===</strong> $a ===$b 等于 $b等于$a结果为真 (左边等于右边)<br />
<strong>!=</strong> $a != $b 不等于 $a不等于$b结果为真 (左边不等于右边)<br />
<strong><</strong> $a < $b 小于 $a小于$结果为真 (左边小于右边)<br />
<strong>></strong> $a > $b 大于 $a大于$b结果为真 (左边大于右边)<br />
<strong><=</strong> $a <= $b 小于等于 $a小于或等于$b结果为真 (左边小于等于右边)<br />
<strong>>= </strong>$a >= $b 大于等于 $a大于或等于$b结果为真 (左边大于等于右边)</p>
<p class="STYLE37">7:加一/减一运算符</p>
<p class="STYLE34"> <strong>++$a</strong> 前加 $a 的值加一,然后返回 $a。</p>
<p class="STYLE34"> <strong>$a++</strong> 后加 返回 $a,然后将 $a 的值加一。</p>
<p class="STYLE34"> <strong>--$a</strong> 前减 $a 的值减一, 然后返回 $a。</p>
<p class="STYLE34"> <strong>$a--</strong> 后减 返回 $a,然后将 $a 的值减一。</p>
<p class="STYLE34">--------------------------------------------------------------------------------------------------------------------------------------------------------------- </p>
6、if..else 循环有三种结构
第一种是只有用到 if 条件,当作单纯的判断。解释成 "若发生了某事则怎样处理"。语法如下:
if (expr) { statement }
其中的 expr 为判断的条件,通常都是用逻辑运算符号当判断的条件。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
范例:本例的执行部分有二行 省略大括号{}。
<?php
$state=1; //定义$state=1;
if ($state==1) echo "哈哈" ;//IF判断 如果左边等于右边 则输出如下
?>
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。
范例:本例的执行部分有三行,不可省略大括号。{}
<?php
$state=1; //定义$state=1;
if ($state==1); {//IF判断 如果左边等于右边 则输出如下
echo "哈哈" ; //输出
}
?>
这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,= 是赋值。
第二种是除了 if 之外,加上了 else 的条件,可解释成 "若发生了某事则怎样处理,否则该如何解决"。语法如下
if (expr) { statement1 } else { statement2 } 范例:上面的例子来修改成更完整的处理。其中的 else 由于只有一行执行的指令,因此不用加上大括号。
<?php
$state=1; //定义$state=1;
if ($state==1) { //IF判断 如果左边等于右边 则输出如下
echo "哈哈" ; //输出
echo "<br>"; //输出<br>
}
else{ //否则
echo "呵呵"; //输出
echo "<br>"; //输出<br>
}
?>
第三种就是递归的 if..else 循环,通常用在多种决策判断时。它将数个 if..else 拿来合并运用处理。
直接看下面的例子
<?php
$a=1; //定义$a=1;
$b=2; //定义$b=2;
if ( $a > $b ) { //IF判断 如果左边大于右边 则输出如下
echo "a 比 b 大" ; //输出
}
elseif ( $a == $b ) { //否则如果判断 如果左边等于右边 则输出如下
echo "a 等于 b" ; //输出
}
else { //否则输出如下
echo "a 比 b 小" ; //输出
}
?>
---------------------------------------------------------------------------------------------------------------------------------------------------------------
7、 for 循环就单纯只有一种,没有变化,它的语法如下
for (expr1; expr2; expr3) { statement }
其中的 expr1 为条件的初始值。expr2 为判断的条件,通常都是用逻辑运算符号 (logical operators) 当判断的条件。expr3 为执行 statement 后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而 statement 为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
下例是用 for 循环写的的例子。
<?php
for ( $i = 1 ; $i <= 10 ; $i ++) { //FOR循环 初使 | 判断 | 加1|
echo "这是第".$i."次循环<br>" ; //输出循环并+1
}
?>
下面说说for语句几种有用的变型。
A FOR无限循环
无限循环(亦可称“死循环”),所以我们可以把for语句的三个表达式留空,这样就会产生不断执行for嵌套语句的效果。
<?php
for (;;) {
//放置需要不断执行的语句
}
?>
虽然有一些任务会使用到无限循环,但是大多数程序任务,特别是PHP所能涉及的领域,在使用无限循环时都会添加一些终止循环的条件。
break;终止FOR循环,用IF判断,终止无限循环
<?php
for (;;) {
//如果是公元2199年,则跳出循环
if (date('Y') == '2199') {
break; //跳出循环
}
}
?>
B、使用FOR空表达式
始化语句expr1中使用null语法,留空expr1最常见的作用就是完成更为复杂的初始化工作。
<?php
if (isset($i)) {
unset($i);
if ((int) date('') < 2008) {
$i = 0;
} else {
$i = 1;
}
} else {
$i =3;
}
for (;$i < 10;$i++) { // 始化语句 留空。为结合前面更复杂的结合
echo $i;
}
?>
同样道理,迭代表达式expr3也可能留空,也可以利用这点编写更为复杂的迭代式,比如说根据不同的条件调用不同的迭代式。
而for语句中的条件语句expr2留空则是上面所说的无限循环,当然也可以添加一些更为复杂的条件去判断什么时候跳出循环,在此不在重复。
C、FOR多重循环
使用多重循环来控制多个变量也是在for语句中使经常被忽略的一个特性。如下面的例子,在一般的任务中用到的一般会是双重循环,三重以上的循环一般意义不大。
<?php
for ($i = 0, $j = 10;$i <= 10;$i++, $j--) {
echo "$i + $j = 10\r\n";
}
?>
以上代码将输出:
0 + 10 = 10
1 + 9 = 10
2 + 8 = 10
3 + 7 = 10
4 + 6 = 10
5 + 5 = 10
6 + 4 = 10
7 + 3 = 10
8 + 2 = 10
9 + 1 = 10
10 + 0 = 10
D、FOR更为复杂的表达式
如果把for语句的三个表达式写得复杂一些,则可以用于优化算法。甚至可以使用没有循环体的for语句来完成一些任务。比如计算累加或阶乘:
<?php
//计算1-5的累加结果,斌值到$j
for ($i = 1,$j = 0; $i <= 5;$j += $i++);
echo $j;
//计算1-5的阶乘结果,斌值到$j
for ($i = 1,$j = 1; $i <= 5;$j *= $i++);
echo $j;
?>
PHP借助了C语言的语法,一定程度上也会拥有C的特性,比如说强大的for循环语句就是一个典型的例子。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
8、 switch 循环,
通常处理复合式的条件判断,每个子条件,都是 case 指令部分。在实作上若使用许多类似的 if 指令,可以将它综合成 switch 循环。
语法如下
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }
其中的 expr 条件,通常为变量名称。而 case 后的 exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用 break 跳离循环
<?php
switch ( date ( "D" )) { //switch循环条件判断 系统时间变量D
case "Mon" : //case如果循环是"Mon" 则输出如下
echo "今天星期一" ; //输出
break; //跳离循环
case "Tue" : //case如果循环是"Tue" 则输出如下
echo "今天星期二" ; //输出
break; //跳离循环
case "Wed" : //case如果循环是"Wed" 则输出如下
echo "今天星期三" ; //输出
break; //跳离循环
case "Thu" : //case如果循环是"Thu" 则输出如下
echo "今天星期四" ; //输出
break; //跳离循环
case "Fri" : //case如果循环是 "Fri" 则输出如下
echo "今天星期五" ; //输出
break; //跳离循环
default: //default如果循环是 其他 则输出如下
echo "今天放假" ; //输出
break; //跳离循环
}
?>
这里需要注意的是break;别遗漏了,default,省略是可以的。
上述的例子用 if 循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
今天就说到这里,明天开始说数据库的使用。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
9返回语句
一个带返回值的return语句不使用小括号"()",除非它们以某种方式使返回值更为显见。例如:
return;
return myDisk.size();
return ($size ? $size : $defaultSize);
---------------------------------------------------------------------------------------------------------------------------------------------------------------
10 while循环语句
一个while语句应该具有如下格式
while (condition) {
statements;
}
一个空的while语句应该具有如下格式:
while (condition);
---------------------------------------------------------------------------------------------------------------------------------------------------------------
11 do...while语句
一个do-while语句应该具有如下格式:
do {
statements;
} while (condition);
---------------------------------------------------------------------------------------------------------------------------------------------------------------
12 try...catch语句
一个try-catch语句应该具有如下格式:
try {
statements;
} catch (ExceptionClass e) {
statements;
}
一个try-catch语句后面也可能跟着一个finally语句,不论try代码块是否顺利执行完,它都会被执行。
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------
==============================================
MySql Front 数据可视编辑用 类似 ACC MySQL Front v4.2 Build 2.7 - 霏凡软件站
进入了phpmyadmin后,我们首先需要建立一个数据库,Language (*) 这里选择中文简体,然后在左边的 创建一个新的数据库 这里填写数据库名字,点击创建即可。
然后在左边下拉菜单中选择那个已经创建的数据库。在下面的
在数据库 shop 中创建一个新表 :
名字 :
字段数 :
中填写表名字和大致你认为的字段数(不够或者多了都不要紧,以后可以再添加或者缺省),按执行。
然后就可以开始建立表了。
第一栏是字段的名字;第二栏选择字段类型:
我们常用的是以下几个:
1)VARCHAR,文本类型
2)INT,整数类型
3)FLOAT,浮点数类型
4)DATE,日期型
5)大家或许会问,自动添加的ID在哪里?这个只要选择INT类型,在后面的额外中选择 auto_increment 就可以了。
建立了表以后,可以在左边看到你建立的表,点击以后,你可以:
1)按右边的结构:查看修改表结构
2)按右边的浏览:查看表中的数据
3)按右边的SQL:运行SQL语句
4)按右边的插入:插入一行记录
5)按右边的清空:删除表中所有记录
6)按右边的删除:删除表
还有一个很重要的功能就是导入和导出,但是当我们本机做好了程序和数据库的时候,需要在服务器上也有一个本地镜像,用SQL SERVER也可以连接远端服务器进行导入。那么MY SQL中你可以导出所有的SQL语句,到了远端服务器的phpmyadmin上,创建数据库后按SQL,粘帖你刚才复制下来的所有本级生成的SQL语句就可以拉。
今天就说到这里,明天继续说数据库操作。
=====================================================
require_once('conn.php'); 顶部调用数据库代码
<p>
==============================================================
<p>
1数据库说明
数据库地址 : localhost:3307
我的数据库权限 :root /phpnow
数据库 :root
数据库表 :shop
--------------------------
2字段 已经数据
ID NAME
1 zhuming
2 zhuming2
2函数说明
(一)函数mysql_connect()的意思是连接mysql数据库, "@"的意思是屏蔽报错
(二)函数die()的意思是将括号里的字串送到浏览器并中断PHP程式 <br>(Script)。括号里的参数为欲送出的字串。
(三)函数mysql_select_db() 选择一个数据库
(四)函数mysql_query() 发送一条 MySQL 查询
(五)函数mysql_fetch_array()返回数组资料
(六)函数@mysql_close($conn); 关闭数据库连接
<?
$conn=@mysql_connect("localhost:3307", "root", "phpnow");
//连接mysql数据库 定义变量$conn , mysql_connect()函数的意思是连接mysql数据库, "@mysql_connect()"的意思是屏蔽报错 不加@就会抱错*/
if(!$conn){die("error");}
//die()函数的意思是将括号里的字串送到浏览器并中断PHP程式 (Script)。括号里的参数为欲送出的字串。
@mysql_select_db("root", $conn);
//选择mysql里的一个数据库,为root ,前面加@就不会抱错,
//require_once('conn.php');顶部调用数据库代码
?>
<?
$sql = "SELECT * FROM shop";
//定义变量$sql, 意思是读取表shop中的数据
$rs = mysql_query($sql, $conn);
//定义变量$rs 查询记录
while ($row = mysql_fetch_array($rs)){
//定义量变(数组)row ,并利用while循环,通过返回组数据的函数mysql_fetch_array把数据一一写出来.
echo "$row[Id]"; //输出ID $row[0] 这样取也可以 注意Id大小写(我数据库写的是大写)
echo "$row[name]";//输出NAME $row[1] 这样取也可以
echo "<br>";
}
//while其他写法 id和name可以换位置
//(一)while($row = mysql_fetch_array($rs)) echo "$row[id] $row[name] <br />";
//(二)while($row = mysql_fetch_object($rs)) echo "$row->id $row->name <br />";
?>
输出为
1 zhuming
2 zhuming2
SHOP.SQL 文件如下 直接导入
DROP TABLE IF EXISTS `shop`;
CREATE TABLE `shop` (
`Id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=big5;
LOCK TABLES `shop` WRITE;
INSERT INTO `shop` VALUES (1,'zhuming');
INSERT INTO `shop` VALUES (2,'zhuming2');
UNLOCK TABLES;
13上传文件 与 EMAIL
学习目的:学会用PHP上传文件和发邮件
上传文件表单必须加上 enctype="multipart/form-data"
和 <input type="file" name="file">
下面看一下代码:
$f=&$HTTP_POST_FILES['file'];
$dest_dir='uploads';//设定上传目录
$dest=$dest_dir.'/'.date( "ymd")."_".$f['name'];//我这里设置文件名为日期加上文件名避免重复
$r=move_uploaded_file($f['tmp_name'],$dest);
chmod($dest, 0755);//设定上传的文件的属性
上传的文件名为date("ymd")."_".$f['name'] ,可以在以后插入到数据库的时候用到,PHP实际上是把你上传的文件从临时目录移动到指定目录。move_uploaded_file($f['tmp_name'],$dest);这是关键
至于发邮件就更加简单,可以使用mail()函数
mail("收件人地址","主题","正文","From:发件人rnReply-to:发件人的地址");
不过mail()需要服务器的支持,在WINDOWS下还需要配置SMTP服务器,一般来说外面的LINUX空间都行。
好像上传文件和发邮件比ASP简单很多,只要调用函数就可以了。ASP还需要用到服务器的不同组件比如FSO、JMAIL什么的。
十天学会PHP说到这里了。
14 我写的简单翻页
数据库连接页面 CONN.PHP
<?
$conn=mysql_connect ("localhost:3307", "root", "phpnow");
mysql_select_db("root");
?>
<?php
//函数isset()或者 empty()--------判断变量是否已配置。
//函数ceil()-------ceil(x)返回的是大于x的最小整数。如: ceil(2.5) = 3
//函数limit()----------表示选者范围,从$page当页第几个开始=($page*$meiye) 到后面的第几个为止
//函数count()-----------统计数据库记录数
require_once('conn.php'); //连接数据库配置
$sql="select count(*) from admin "; //统计数据库记录数 并连接表
$rs=mysql_query($sql); //发送一条 MySQL 查询
$rsc=mysql_fetch_array($rs); //返回数组资料 显示记录集RS
$num=$rsc[0]; //得到总记录数
$meiye=3 ; //定义每页显示记录数
$zhongye=$num/$meiye; //得到总页数 公式//总页数=总记录数/每页记录数
?>
<?php
if(empty($_GET['page'])){ //如果empty /isset 判断变量是否已配置 如果已经设置则输出
$page=0; //输出 强行给PAGE(当前页)=0
}
else //否则
{
$page=$_GET['page']; //定义PAGE等于传递来的GET
if($page<0) $page=0; //如果传来 PAGE(当前页)<0 则定义为0
if($page>=($zhongye)) //如果PAGE(当前页)>总页数 则定义下面的
$page=ceil($zhongye)-1; //总页数-1 ceil取整数1.5=2来算
}
?>
<?php
$sql="select * from admin limit ".($page*$meiye).",$meiye";
//limit表示选者范围,从$page当页第几个开始=($page*$meiye) 到后面的第几个为止
//定义变量$sql, 意思是读取表admin中的数据 ORDER BY ID DESC 降序排
$rs = mysql_query($sql, $conn);
//定义变量$rs 查询记录
while ($row = mysql_fetch_array($rs)){
//定义量变(数组)row ,并利用while循环,通过返回组数据的函数mysql_fetch_array把数据一一写出来.
echo "$row[username]";//输出NAME $row[1] 这样取也可以
echo "<br>";
}
?>
<a href="?page=0">首页</a>
<a href="?page=<?=($page-1)?>">上一页</a>
<a href="?page=<?=($page+1)?>">下一页</a>
<a href="?page=<?=ceil($zhongye)-1?>">尾页</a>
总页数<?=ceil($zhongye)?> 当前页数<?=($page+1)?> 总记录数<?=($num)?> 每页记录数<?=$meiye?>
-------------------------------------
SQL文件 ADMIN.SQL
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
`Id` int(11) NOT NULL auto_increment,
`username` varchar(255) default NULL,
`password` varchar(255) default NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=big5;
LOCK TABLES `admin` WRITE;
INSERT INTO `admin` VALUES (1,'zhuming','123456789');
INSERT INTO `admin` VALUES (2,'zhuming2','123456789');
INSERT INTO `admin` VALUES (3,'zhuming3','123456789');
INSERT INTO `admin` VALUES (4,'zhuming4','123456789');
INSERT INTO `admin` VALUES (5,'zhuming5','123456789');
INSERT INTO `admin` VALUES (6,'zhuming6','123456789');
INSERT INTO `admin` VALUES (7,'zhuming7','123456789');
UNLOCK TABLES;
输出如下
1页(首页) list.php?page=0
zhuming
zhuming2
zhuming3
首页 上一页 下一页 尾页
2页 list.php?page=1
zhuming4
zhuming5
zhuming6
首页 上一页 下一页 尾页
3页(尾页) list.php?page=2
---------------------------------------------------------------------------------------------------------------------------------------------------------------