Más contenido relacionado La actualidad más candente (20) PHP3. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-3
淺談 PHP
◙ 由 Rasmus Lerdorf 所創的“個人主頁工具”
( Personal Home Page Tools )
test1.html 和 test1.php 所顯示的資料是完全
一樣的
由這個例子可以知道所有的網頁都可以藉由
php 產生
藉由 php 可以動態產生網頁內容
這個程式可以傳回瀏覽網頁的人,所使用的 IP
Address
5. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-5
設定環境 ( 續 )
◙ 建議先安裝 MySQL
除了設定路徑,一直按下一步就可以了
◙ 其次安裝 Apache
若無 hostname 請用 ip address 代替
◙ 最後安裝 php
必須先確認網頁伺服程式 (Apache) 已經 動啟
必須修改 php.ini 中的參數
必須修正 Apache 的 httpd.conf
詳情請參考下載下來的 install.txt
6. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-6
基本語法 (1)
◙ 以 “ <?php” 或者
是 “ <?” 開始
結束符號是 “ ?>”
◙ 每行末加分號
“ ;” 結尾
◙ 注釋方法 和 C
一樣
// 單行註解
/* */ 段落註
解
<?
echo "123456";
// 第一行
echo "123 n 456";
// 想用 'n' 換行 但沒法成功
echo "123"; ?> <br> <? echo"456";
// 用 html 中的 <br> 換行
/* 注意最後一行 ,
php 可以隨處中斷 ,
隨處開始
*/
?>
7. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-7
基本語法 (2)
◙ 引用文件
require
通常放在 PHP 程式的最前面
會先讀入指定的文件,使它變成 網頁的一部份
常用的函數,可以這個方法將它引入網頁中
引入的文件若有錯誤,網頁將停止執行
include
一般是放在流程控制的處理部分中
讀到 include 的文件時,才將它讀進來
這種方式,可以把程式執行時的流程簡單化
若讀入的文件有錯,網頁將提出警告,仍會繼續執行
8. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-8
基本語法 (2) – 引用文件
<?
require “getenv_remote_addr.php”;
// 此程式可以取得使用者的 ip 並存在 $ip 中
echo "I like who come from " . $ip . "!!";
?>
<?
$i = 2;
if ($i == 1) {
echo "I like who come from ";
include “getenv_remote_addr.php”; // 此時這行將不會被讀入
}
else {
echo "Oh!! NOOOOOOO...";
}
?>
10. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-10
基本語法 (3) – 變數
<?
$string = " 字串 " ;
$int = 438 ;
$float1 = 13.37908816 ;
$float2 = 1.414E+2 ;
$TestArray = array( "A" , " 乙 " , " 寅 " , "d" ,
$int, $float1, $float2, $string);
// array 中可以有不同型別的變數
echo $TestArray; // 由於沒指定位址 所以會列印出 ‘ Array’
echo $TestArray[0] . $TestArray[1] . $TestArray[2] . $TestArray[3];
echo $TestArray[4] . $TestArray[5] . $TestArray[6] . $TestArray[7];
?>
<br>
<br>
<?
sort($TestArray); // 可以對 array 進行排序
echo $TestArray[0] . $TestArray[1] . $TestArray[2] . $TestArray[3];
echo $TestArray[4] . $TestArray[5] . $TestArray[6] . $TestArray[7];
?>
11. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-11
基本語法 (3) – 變數
<?
class foo
{
var $_num = null; // 物件中的參數必須先加 var
function get_seed($i) // 物件的 method
{
$this->_num = $i; // this 是 “本物件” 的意思
}
function do_foo ()
{
echo $this->_num;
echo "Doing foo.";
}
}
$bar = new foo;
$bar->get_seed(88); // 也可以傳入 浮點樹 或 字串
$bar->do_foo();
?>
12. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-12
基本語法 (4) – 運算符號
◙ 數學運算
‘+’ 、 ‘ -’ 、 ‘ *’ 、 ‘ /’ 加、減、乘、除
‘ %’ 取餘數 、 ‘ ++’ 累加 、 ‘ --’ 遞減
◙ 字串運算 – ‘ .’
$a = “PHP”; $b = “ 真利害”
$a.$b “PHP 真利害”
◙ 邏輯運算
< 、 > 、 <= 、 >=
== 等於 、 != 不等於
‘&&’ 、‘ and’ 都是‘而且’;‘ ||’ 、‘ or’ 都是‘或’;
‘xor’ 就是 ‘ Xor’ ; ‘ !’ 就是 ‘不’
13. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-13
基本語法 (5) – 流程控制
◙ if..else
if (expr) { statements }
expr 判斷式,例如 “ $a<=1”
statements 該執行的程式
若程式只有一行,可以省略大括弧 {}
If (expr) { statements }
else { statements }
16. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-16
基本語法 (5) – 流程控制 __ switch
<?
switch ( date ( "H" ) ) {
case 5: case 6: case 7: // 多個值一起
echo “Good morning.”; // 上午說早安
break;
case 8: case 9: case 10: case 11: case 12:
case 13: case 14: case 15: case 16: case 17:
echo “Have A Nice Day!”; // 工作時說日安
break;
case 18: case 19: case 20: case 21:
echo “Good Night.”; // 晚上說晚安
break;
default: // default 設定其餘的狀況該如何
echo “Have A Good Dream.”; // 其餘祝您好眠
break;
}
?>
17. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-17
基本語法 (5) – 流程控制
◙ for
for (expr1; expr2; expr3) { statements }
expr1 設定初始條件之用
expr2 設定繼續執行的條件
expr3 statement 執行完畢後,用來改變條件,
供下次的迴圈判斷 (expr2)
statements 該執行的程式
若程式只有一行,可以省略大括弧 {}
18. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-18
基本語法 (5) – 流程控制 __ for
<?
for ( $i = 1 ; $i <= 25 ; $i++) {
echo " 這是第 ".$i." 次迴圈 <br>" ;
}
// 由於只有一行 {} 可以省去
/* expr1 “$i=1” ;設定了 $i 的初始 是值 1
expr2 “$i <= 25” ;若 $i <= 25 才能執行
statements 的部分
expr3 “$i++” ; 每次 statements 的部分
執行完, $i 的 就增加一值
statements “echo " 這是第 ".$i." 次迴圈 <br>" ; ”
*/
?>
19. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-19
基本語法 (5) – 流程控制
◙ While
while (expr) { statements }
每次迴圈前 若 expr 的條件成立,就進入
statements 的部分
未必會執行到 statements 的部分
do { statements } while (expr);
每次迴圈執行之後 若 expr 的條件成立,才進入
下一輪的 statements 部分
statements 的部分一定會執行到一次
20. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-20
基本語法 (5) – 流程控制 __
while
<?
echo "<TABLE border = 3>";
echo "<CAPTION> 標題 : 九九乘法表 </CAPTION>";
$i = 0;
while ($i < 3) {
echo "<TR>";
$j = 1;
while ($j<=3) {
echo "<TD width=100>";
for ($k=1; $k<=9; $k++) {
echo $i*3+$j." * ".$k." = ". ($i*3+$j) * $k;
echo "<br>";
}
echo "</TD>";
$j++;
}
$i++;
echo "</TR>";
}
echo "</TABLE>";
?>
21. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-21
基本語法 (5) – 函式
function foo ($n) // 用 “ function” 開頭來代表函式
{ // 這是一個費氏數列的函式
if ($n == 0) // f(0) = 0
return 0; // f(1) = 1
elseif ($n == 1) // f(n) = f(n-1) + f(n-2)
return 1;
else {
return ( foo($n-1) + foo($n-2) );
}
}
22. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-22
基本語法 (5) – 函式
function compare (&$DataArray, $index)
{
$temp = Null;
if ( $DataArray[$index-1] > $DataArray[$index] ) {
$temp = $DataArray[$index-1];
$DataArray[$index-1] = $DataArray[$index];
$DataArray[$index] = $temp;
}
}
// &$DataArray 是 Call By Reference
// 若 Array 中 Array[ index] 的值比 Array[ index-1] 小
// 就將兩數互換位置
23. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-23
基本語法 (6) – 參考資料
◙ PHP 手冊
http://hk.php.net/manual/hk/index.php
◙ MySQL 中文參考手冊
http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/m
anual_toc.html
◙ Apache 安裝手冊
http://www.linuxhall.org/modules.php?
name=News&file=article&sid=131
24. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-24
建立資料庫網站 (1) – 連接資料
庫
◙ 第一步:連接 MYSQL 資料庫伺服程式
mysql_connect
語法 : int mysql_connect(string [hostname] [:port], string
[username], string [password] );
傳回值 : 整數
[hostname] 預設 為值 localhost
[:port] 使用 個埠與哪 MySQL 連接
www.ppp.org:8080 用 port 8080 和在 www.ppp.org 這台
主機上的 mysql 連接
[username] 預設 為值 PHP 執行行程的擁有者
[password] 預設 為空字串值 ( 即沒有密碼 )
$mysqlid = mysql_connect(“localhost:8080”, “Admin”, “kill_Bill” );
Mydql_close($mysqlid); // 關閉 $mysqlid 所代表的連線
25. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-25
建立資料庫網站 (2) – 選擇資料
庫
◙ 第二步:選擇特定的資料庫
mysql_select_db
語法 : int mysql_select_db(string database_name, int
[link_identifier] );
傳回值 : 整數
[link_identifier] mysql_connect 的傳回值
$mysqldbid = mysql_select_db(“Books”, $mysqlid );
/* 對建立連線於 $mysqlid 的 mysql 選取其中的 ‘
student’ 資料庫 , 並用 $mysqldbid 來表示
26. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-26
建立資料庫網站 (3) –
其他和資料庫有關的函
式
◙ 建立資料庫
int mysql_create_db (string database_name, int [link_identifier] );
傳回值 : 整數
mysql_create_db ( “Sony”, $mysqlid );
// 建立名為 Sony 的資料庫
◙ 刪除資料庫
int mysql_drop_db (string database_name, int [link_identifier] );
傳回值 : 整數
mysql_drop_db ( “Sony”, $mysqlid );
// 刪除名為 Sony 的資料庫
◙ 列出所有的資料庫
int mysql_list_dbs( int [link_identifier] );
傳回值 : 整數
mysql_list_dbs( $mysqlid );
// 找出所有在 $mysqlid 所指定的 mysql 伺服程式上的資料庫
27. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-27
建立資料庫網站 (4) – 執行 SQL 查
詢
◙ 第三步:執行 SQL 詢查
mysql_query
語法 : int mysql_query(string query, int
[link_identifier]);
傳回值 : 整數
$query_result = mysql_query( “SELECT * FROM
books”, $mysqlid );
// 執行 SQL 詢: “查 SELECT * FROM books”
必須先選擇特定的資料庫
也就是要先執行 mysql_select_db 來限定某一個資料庫
任何 mysql 可以使用的 SQL 詢都可以使用查
28. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-28
建立資料庫網站 (5) – 取得 詢結果查
◙ 第四步:取得 詢結果查
mysql_fetch_object
語法 : object mysql_fetch_object (int result, int [result_typ]);
傳回值 : 物件
$query_row = mysql_fetch_object($query_result);
// 將 $query_result 所指定的 詢結果轉入物件查
// $query_row 中
取得 詢結果後,可以用查 mysql_free_result 釋放佔
用的記憶體,減輕 mysql 伺服程式的負擔
語法 : Boolean mysql_free_result (int result);
傳回值 : 布林值
Mysql_free_result($query_result);
29. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-29
一個完整的例子
<?
// 第一步:連接 MYSQL 資料庫伺服程式
$mysqlid = mysql_connect(“localhost:8080”, “Admin”, “kill_Bill” );
// 第二步:選擇特定的資料庫
$mysqldbid = mysql_select_db(“books”, $mysqlid );
// 第三步:執行 SQL 詢查
$query_result = mysql_query( “SELECT bookname FROM books”,
$mysqldbid );
// 第四步:取得 詢結果並分行列印查
while($query_row = mysql_fetch_object($query_result)) {
echo “bookname:”.$query_row->bookname.” // 一行列印一筆資料
";
}
?>
30. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-30
建立資料庫網站 (6) – 修正資料
庫
◙ 使用 mysql_query 達成
$exec_str = “DELETE FROM book WHERE
bookid = 1”;
$query_result =
mysql_query( $exec_str, $mysqlid );
上面是刪除的例子,新增、修改也是將
$exec_str 修正成合適的 SQL 語法即可
31. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-31
建立資料庫網站 (6) – session 的使用
◙ Session 最常被人使用的功能是頁面間變
數的傳遞
使用 “ session_start();” 開啟 SESSION
使用變數 user_name 之前必須先行註冊
Session_register(“user_name”);
不再使用變數 user_name 時,可以註銷
Session_unregister(“user_name”);
變數註冊後才能使用,使用的方式和陣列一
樣
$_SESSION[‘user_name’] = “Bill”; // 寫入
$hot_user = $_SESSION[‘user_name’]; // 讀取
32. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-32
建立資料庫網站 (7) – 上傳 案檔
◙ 建立網站的上傳機制
上傳文件表單必須加上
enctype= “multipart/form-data”
<input type=“file” name=“userfile”>
以提供上傳的介面
使用 move_uploaded_file( $upload_file_name,
$destination ); 就可以上傳了
$upload_file_name 用以記錄上傳 名的變數檔
$destination 用以指定存放目錄的變數
33. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-33
上傳 案的完整例子檔
<html>
<form method = "post" enctype= "multipart/form-data" action = "uploads.php">
<input type = "file" name="userfile" size = "30">
<input type = "hidden" name = "MAX_FILE_SIZE" value = "30000">
<input type = "submit" value = " 上傳 案檔 ">
</form>
</html>
<?php
$uploaddir = 'C:/TEMP/';
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
print "File is valid, and was successfully uploaded. Here's some more debugging info:n";
print_r($_FILES);
}
else {
print "Possible file upload attack! Here's some debugging info:n";
print_r($_FILES);
}
?>
製作上傳介面的 uploads.html
Uploads.php
34. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-34
上傳 案的完整例子檔 ( 註解一 )
◙ <form method = "post" enctype= "multipart/form-data" action = "uploads.php">
method = “post“ html 和檔 php 的傳遞參數的方式之一檔
action = “uploads.php“ 指定 “ uploads.php” 處理後續的動作
◙ <input type = "file" name="userfile" size = "30">
<input> 指定此處有一個輸入介面
type = “file“ 輸入介面的型別是 file
畫面上的單行對話況會顯示所捲定的 案完整的路徑和 案名檔 檔
此外右方有一個顯示著 “瀏覽…” 的按鈕 , 可以打開 “選擇 案” 的對話框檔
◙ <input type = "hidden" name = "MAX_FILE_SIZE" value = "30000">
type = “hidden“ 此型別不會顯示任何東西
name = “MAX_FILE_SIZE” value = “30000“ 設定 “ MAX_FILE_SIZE” 的值
= 30000
◙ <input type = "submit" value = " 上傳 案檔 ">
type = “submit“ 會顯示一個按鈕 ; 按下後 , 會執行先前 action 所指定的 案檔
35. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-35
上傳 案的完整例子檔 ( 註解二 )
◙ $uploaddir = 'C:/TEMP/';
設定變數 $uploaddir 的值 = ‘C:/TEMP/’ 以供未來指定 案的目錄之用檔
PHP 在目錄中 不用反斜線 ‘ ’ 而是用除號 ‘ /’
◙ $_FILES['userfile']['tmp_name']
出現在 if 的判斷式之中
是用來接收 uploads.html 所要上傳的 案檔
‘userfile’ 在 uploads.html 所指定的名字
‘tmp_name‘ php 暫時賦予 案的名字檔
◙ $uploaddir . $_FILES['userfile']['name']
將 $uploaddir 和 $ _FILE[‘userfile’][‘name’] 兩個變數執行字串連接
用這個新的字串當作 存放上傳 案的 完整路徑檔
◙ move_uploaded_file( $_FILES['userfile']['tmp_name'],
$uploaddir . $_FILES['userfile']['name'])
Move_uploaded_file 依照上兩項參數執行上傳的動作
若上傳成功 將傳回 true 使得 if 的判斷式的結果是 true; 否則就是
false
36. 國立清華大學資訊基礎教育教學改進計畫08/18/14 P-36
建立資料庫網站 (8) – 總結
◙ 用 php 建立資料庫網站是用來建立一個友
善的使用者介面
真正的資料庫還是在隱身於 php 之後的
mysql 、 access… 等資料庫程式中
使用者介面必須依照各個使用者的需求而定
例如:圖書館讀者的資料會因時間而有所易動,
所以必須給予圖書館讀者更新資料的介面
例二:圖書館讀者不需負責圖書的管理,所以圖
書館讀者的介面上就不需要任何關於管理圖書的
介面
Notas del editor 淺談PHP – 簡介php 的特點, 減輕學生因為不了解所產生的心理壓力
設定環境 – 說明php要如何完成先關程式及自身的安裝
基本於法 – php的基本自身語法, 不用太難
聯結資料庫 – 說明php該如何鏈結MYSQL等資料庫 已查出使用者需要的資料
威力展示 – 列舉實用的例子