总结一下自己两周来PHP的学习内容。
1.PHP,html语言的使用
直接在这里学习
PHP->http://www.w3school.com.cn/php/
html->http://www.w3school.com.cn/html/
w3school还有挺多别的,比如JS,CSS...
2.PHP开发环境的搭建
在windows下选择的是easyPHP软件,本来一个软件就搞定,但由于它的Mysql老是连接有问题,自己安装了Mysql5.6,此后没再出过问题,数据库管理用了MySQL-Front软件,当然也可以用phpMyAdmin来管理。
3.PHP和数据库Mysql的增删查改。
1)数据库连接:
//函数参数:服务器,用户,密码
$con = mysql_connect("localhost","root","pw133897");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("contract", $con);//选择连接的表
2)增删查改
调用函数来使用Mysql语句:mysql_query
//增(字段对应插入数据(此处为变量))
mysql_query("INSERT INTO test (Id, 姓名, 手机)
VALUES ('$Id' , '$name', '$number')");
//删:删除Id为$deId的所有数据
mysql_query("delete from test where id='$deId'");
//查
$result = mysql_query("SELECT * FROM test where Id=$Id");
$row = mysql_fetch_array($result);
$name=$row['姓名'];
$num=$row['手机'];
//改
$res1 = mysql_query("update contract.test set 姓名='$name' where Id='$Id'");
注意:
/* mysql_query函数执行的结果就是资源类型的。resource mysql_query ( string query [, resource link_identifier] )
mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。
从结果集中取得数据就得用到 mysql_fetch_array 等函数 */
4.关于跳转页面
1)
<!--这是一个“删除”超链接,并把变量的值传送过去,用$_GET["id"]可获取-->
<a href='contract.php?id=".$row['Id']."'>删除</a>
2)
//表单跳转,可以跳转到action指定页面
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
学号:<input type="text" name="Id">
姓名:<input type="text" name="name">
手机:<input type="text" name="number">
<input type="submit" name="submit" value="添加">
</form>
3)
//自动跳转,0是指等待事间,可以修改,单位秒
<meta http-equiv='refresh' content='0;URL=contract.php'>
4)
//这是一个按钮跳转的简单例程
//deletebutton.php
<SCRIPT Language = "JavaScript">
function func()
{
if(confirm("确认删除?"))
{
this.location = "delete.php?action=ok";
}
else
{
this.location = "ok.php?action=cancel";
}
}
</SCRIPT>
<html>
<head>
</head>
<body>
<input type=button name=btn1 value="删除" onclick=javascript:func()>
</body>
</html>
//ok.php
<?php
if($_GET["action"]=="ok")
{
echo "I'm OK!";
}
else
{
echo "I'm not OK!";
}
?>
5.PHP页面间参数传递的四种方式
(参考:http://blog.youkuaiyun.com/chentingpc/article/details/7075134)
1)使用客户端浏览器的cookie,相当一个临时文件,浏览器的一些记录数据就暂时存放在这里 。
<span style="font-size:14px;">//page1.php:创建一个coolie
<?php
setcookie('mydata','$data');
?></span>
//在page02页面接收cookie。
<?php
$getdata = $_COOKIE['mydata'];
echo $getdata;
?>
2)使用服务器端的session:与cookie的不同在于它是服务器端的临时储藏室。session常被称作会话。
//在page1.php中设置一个session。
//要想使用session,必须启动session。session_start();就是启动session的方法。一般要写在最前面。
<?php
session_start();
$_SESSION["temp"]=array('123','456','789');
?>
在page02页面接受session。
<?php
session_start();
for($i=0;$i<3;$i++)
{
echo $_SESSION['temp'][$i].'<br />';
}
?>
<pre name="code" class="php">注意:
首先启动会话。启动后我们在page01定义的变量已经可以使用了,不需要其他任何获取的操作,这里不同于cookie。
下面我们使用for循环将其内容输出。
1.[不要以为$_SESSION['temp'][$i]是一个二维数组,它是个一维数组,数组的名称是$_SESSION["temp"],虽然这个名称比较繁琐,数组的下标是'temp']
2.[我们在写$_SESSION["temp"]时,temp加双引号或者单引号都是等价的。]
3.[这里我们定义会话变量时定义的是数组,也可以定义普通变量,就像cookie里面讲到的]
3)使用表单来传递。
//注意:method可以是get,使用$_GET获取数据
//page01.php
<form action="page02.php" method="post">
<input type="text" name="Myname" />
<input type="submit" name="submit" value="提交" />
</form>
//表单内的属性action直接指定此表单内容传递到哪个页面。method指明了传递的方式。post代表使用消息传递,就像我们发短信一样。
//page02.php
<?php
$name= $_POST['myname'];
echo $name;
?>
4)使用超链接传递参数。
<pre name="code" class="php"><span style="font-size:14px;">//page01.php
<?php
$var = 'I love you !';
?>
<a href="<?php echo "page02.php?new=".$var ?>">get</a>
//定义一个变量$var。
超链接a的href属性里写明要跳转到page02页面。后面加一个问号,一个自己定义的变量new[此名称在page02页面要使用],new的值就是我们想传递的$var。</span>
<span style="font-size:14px;">//page02.php
<?php
echo $_GET['new'];
?></span>
6. 图片上传
直接贴代码,非原创
<?php
if(empty($_GET[submit]))
{
?>
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>?submit=1" method="post">
Upload small image: <input name="filename" type="file">
<input type="submit" value="Upload">
</form>
<?php
}
else
{
$path="uploadfile/"; //上传路径
if(!file_exists($path))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
}//END IF
//允许上传的文件格式
$tp = array("image/gif","image/pjpeg","image/jpeg","image/png");
//检查上传文件是否在允许上传的类型
if(!in_array($_FILES["filename"]["type"],$tp))
{
echo "File Type is incorrect";
exit;
}//END IF
if($_FILES["filename"]["name"])
{
$file1=$_FILES["filename"]["name"];
//$file2 = $path.time().$file1;
//文件名称 取原文件名
$file2 = $path.$file1;
$flag=1;
}//END IF
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
//特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if($result)
{
//echo "上传成功!".$file2;
echo "<script language='javascript'>";
echo "alert(\"Upload Success!\");";
echo "</script>";
?>
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>?submit=1" method="post">
Upload small image: <input name="filename" type="file">
<input type="submit" value="Upload">
</form>
<?php
//显示路径下图片名称列表
$dirr = 'uploadfile/';
$dir = opendir($dirr);
echo '<h1>success!</h1><br>';
echo 'File size:' . $_FILES['file']['size'] . 'byte' . '<Br>';
echo 'File Path:' . $dirr;
echo '<hr with="100%" />' . '<p>';
echo $dirr . '--Listing:<ul>';
while($file = readdir($dir))
{
echo "<li>$file</li>";
}
echo '</ul>';
closedir($dir);
}//END IF
}
?>
7.图片下载
直接贴代码,非原创
<?php
download("dianzi.jpg","happy");
function download($file_url,$new_name=''){
$file_url=iconv('utf-8','gb2312',$file_url);
//将编码转为支持中英文的gb2312编码
if(!isset($file_url)||trim($file_url)==''){
return '500';
}
if(!file_exists($file_url)){ //检查文件是否存在
return '404';
}
$file_name=basename($file_url);
$file_type=explode('.',$file_url);
$file_type=$file_type[count($file_type)-1];
$file_name=trim($new_name=='')?$file_name:urlencode($new_name).'.'.$file_type;
//输入文件标签
header("Content-type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Accept-Length: ".filesize($file_url));
header("Content-Disposition: attachment; filename=".$file_name);
$file_type=fopen($file_url,'r'); //打开文件
//输出文件内容
$file_size=filesize($file_url);//获取文件大小
$buffer=1024; //定义1KB的缓存空间
$file_count=0; //计数器,计算发送了多少数据
while(!feof($file_type) && ($file_size>$file_count)){
//如果文件还没读到结尾,且还有数据没有发送
$senddata=fread($file_type,$buffer);
//读取文件内容到缓存区
$file_count+=$senddata;
echo $senddata;
}
//echo fread($file_type,filesize($file_url));
fclose($file_type);
}
?>
注意:代码前面不能有“echo出任何东西”,否则下载的图片编码前面会有一段你echo的代码,导致图片无法打开。
8.PHP中Json的使用
使用两个函数编码:json_encode(下面贴自己的一个例子,需要注意的是json编码后汉字会出问题,所以要后面的编码转换)
<?php
class Datalist
{
public $Id ;
public $name ;
public $phone ;
}
class data
{
public $Mydata;
}
$con = mysql_connect("localhost","root","pw133897");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("contract", $con);
$result = mysql_query("SELECT * FROM test");
$num=0;
while ($row= mysql_fetch_array($result, MYSQL_ASSOC))
{
$MyId[$num]= $row['Id'];
$num++;
}
echo "<table border='1' cellpadding='10'>
<tr>
<th>学号</th>
<th>姓名</th>
<th>手机</th>
</tr>";
arsort($MyId);
echo "倒序后的列表:<br>";
foreach($MyId as $x=>$x_value)
{
$datalist = new Datalist();
$result = mysql_query("SELECT * FROM test where Id=$x_value");
$row= mysql_fetch_array($result, MYSQL_ASSOC);
echo "<tr>";
echo "<td width='250'>" . $x_value . "</td>";
echo "<td width='250'>" . $row['姓名'] . "</td>";
echo "<td width='250'>" . $row['手机'] . "</td>";
echo "</tr>";
$datalist->Id = $x_value;
$datalist->name = $row['姓名'];
$datalist->phone = $row['手机'];
$data[]=$datalist;
}
echo "</table>";
$Mylist=new data();
$Mylist->Mydata=$data;
$json = json_encode($Mylist);//把数据转换为JSON数据.
echo "<br>json编码输出:<br>";
//将json输出的unicode编码(windows下为UCS-2BE)转为utf-8编码
$str=preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $json);
echo $str;
?>
解码:json_decode
<?php
$json = '{"a":"php","b":"mysql","c":3}';
$json_Class=json_decode($json);
$json_Array=json_decode($json, true);
print_r($json_Class);
print_r($json_Array);
?>//注意,用echo是无法直接打印出来的,如果用echo,要这样用 echo var_dump(json_decode($json,true))