1 / 208

PHP+MySQL 應用研習

PHP+MySQL 應用研習. 新竹縣立博愛國中 曾琳富 hs1600@nc.hcc.edu.tw. 線上教材: http://vod.pajh.hcc.edu.tw/moodle 備用網站 : http://dyna.idv.tw/moodle. 課程綱要. PHP+MySQL 環境建置 PHP 基本語法 MySQL 資料庫管理使用 SQL 語法介紹 PHP+MySQL 開發應用 ADODB 物件與 PEAR 應用. PHP+MySQL 環境建置. 先備知識. Linux/FreeBSD 基本操作知識 竹縣楊錦昌老師 APT

hagop
Download Presentation

PHP+MySQL 應用研習

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP+MySQL應用研習 新竹縣立博愛國中 曾琳富 hs1600@nc.hcc.edu.tw 線上教材:http://vod.pajh.hcc.edu.tw/moodle 備用網站:http://dyna.idv.tw/moodle

  2. 課程綱要 PHP+MySQL環境建置 PHP基本語法 MySQL資料庫管理使用 SQL語法介紹 PHP+MySQL開發應用 ADODB物件與PEAR應用

  3. PHP+MySQL環境建置

  4. 先備知識 Linux/FreeBSD 基本操作知識 竹縣楊錦昌老師APT http://apt.nc.hcc.edu.tw 鳥哥的 Linux 私房菜 http://linux.vbird.org/ 藍色泡泡 http://ohaha.ks.edu.tw/ HTML 基本製作知識 網站建置百寶箱 http://dob.tnc.edu.tw/ HTML 入門 http://content1.edu.tw/publish/jackson/ material/593084/webpg1203/html/index.htm

  5. 參考書籍 參考書籍 PHP+MySQL 快速入門,松崗,吳弘凱 PHP&MySQL完全架站攻略第二版,上奇 PHP徹底研究新編第二版,博碩 專業PHP5程式設計指南,上奇 MySQL 學習手札,上奇 MySQL 徹底探索 ,博碩 參考網站 http://www.php.net http://www.mysql.com http://www.php5.idv.tw http://vod.pajh.hcc.edu.tw/moodle/

  6. 傳統網頁與動態網頁 傳統網頁執行方式 動態網頁執行方式 要求網頁,如index.htm 回應網頁(HTML) IE、FireFox Web Server Apache / IIS <html> <head></head> <body> <?php echo date(“Y-m-d”) ?> </body> </html> 要求網頁,如index.php 回應網頁(HTML) IE、FireFox Web Server <html> <head></head> <body> 2008-04-12 </body> </html> DB PHP 解譯器 MySQL

  7. PHP是什麼? PHP為(Personal Home Pages)簡稱,PHP 是一種 server-side HTML-embedded 的 script 語言,由Rasmus Lerdorf 於1994發展至今,目前版本PHP 4.4.7 (2007年底停止發展)及PHP 5.2.3 其它類似產品 Microsoft ASP(ASP.NET) Adobe(Macromedia) ColdFusion SUN JSP

  8. PHP的特色 開放原始碼而且是免費 跨平台(作業系統、Web伺服器) 功能強大,支援各種資料庫、網路連結、檔案系統、Java、COM、XML等 支援物件導向(PHP 5 較為完整) 快速發展週期及活躍支援社群

  9. PHP的應用 動態網頁程式設計 如留言版、討論區、公告、電子相簿等 腳本檔 (Shell Script) 如與Crontab 結合可定時執行程式(PHP) 視窗應用程式 (Window Application) 如視窗應用程式般執行如PHP-GTK

  10. 建構 Apache +PHP +MySQL環境 Linux 平台 建議以APT方式安裝 FreeBSD 平台 建議以Ports方式安裝 Windows 平台 建議以Xampp 或 AppServ 套件安裝

  11. php.ini校調 244 max_execution_time = 60 每個Script最大執行時間 245 max_input_time = 60 表單輸入最大時間 246 memory_limit = 16M 記憶體最大限制 409 post_max_size = 64M 表單輸入最大檔案大小514 upload_max_filesize = 32M 上傳檔案大小最大限制 以xamp為例,在瀏覽器網址列上鍵入http://localhost,選擇左邊選單的phpinfo() 找到php.ini所在位置C:\xampp\apache\bin\php.ini 以PSPad 編輯 並修正以下設定值

  12. php.ini校調 292 error_reporting = E_ALL & ~E_NOTICE 顯示程式執行中的所有錯誤除了NOTICE等級 299 display_errors = On 顯示程式執行中的錯誤 101 output_buffering = Off 緩衝區輸出當程式會出現下列訊息時可以將 output_buffering 設成ON Warning: Cannot modify header information - headers already sent by (output started at  XXX ) 12

  13. 建立開發PHP的環境 在Windows 底下開發及測試之後在上傳至伺服器 安裝Xampp( Apache+PHP+MySQL+phpMyAdmin) PHP編輯器 PSPad Dreamweaver Topstyle Homesite Zend Studio 1.支援PHP語法 2.強大的視覺化網頁編輯、程式碼半視覺化編輯 PSPad Dreamweaver 主要文字編輯器 Topstyle CSS編輯器

  14. PHP基本語法

  15. 第一個 PHP 程式 <html> <title>第一個PHP程式</title> <body> Hello Word !<p> <?php echo "我的第一個PHP程式 <br>" ; ?> </body> </html> PHP程式碼開始符號 程式碼以分號作為結束 echo 為PHP指令(將後面的訊息顯示在螢幕上) PHP程式碼結束符號

  16. PHP 程式碼標記 PHP程式碼標記方式的四種寫法 <? echo “第一種" ;//這種寫法必須將php.ini中的short_open_tags設定為On才可以使用 ?> <script language="php"> echo “第二種" ; </script> <% echo “第三種”; // 這種寫法必須將php.ini中的asp_tags設定為On才可以使用 %> <?php echo “第四種" ; ?> 請選擇這種寫法

  17. PHP的註解 <?php // echo “單行註解" ; //兩個雙斜線表示後面一行是註解, 不會被顯示出來 /* echo "多行註解" echo “在/* 與 */ 之間為註解, 不會被顯示出來" ; */ ?>

  18. 變數與常數 變數是會變動的資料(可以包括),尤其在程式執行階段,可以任意變換內容的值 變數必須以$開頭 第二個字元必須為英文字母或底線(_) 第二字元以後可以為(底線、 大小寫字母、 數字)的任意組合 變數是有區分大小寫,$a1 與$A1是不同變數 例如 $num = 10; $msg=‘歡迎光臨’; 常數是不會變動的數,即使在程式執行階段也不會改變其內容 常數前面不加$ 習慣上常數用大寫表示 例如 define(PI,3.14);

  19. 基本輸出指令 <?php echo “Hello!<BR>"; print “Hello!<BR>"; print(“Hello !<BR>"); echo "<hr width=50%>“; $msg="I am fine." ; echo "1: msg變數的內容是 $msg <BR>"; echo '2: msg變數的內容是 $msg <BR>' ; ?> 雙引號內若有變數則會被取代,單引號則否

  20. PHP 與 HTML <?php echo "我的第一個PHP程式 <br>" ; ?> <html> <title>第一個PHP</title> <body> Hello My Friend! <p> </body> </html> <html> <title>第一個PHP</title> <body> Hello My Friend! <p> <?php echo “我的第一個PHP程式”; ?> </body> </html> 1.嵌入HTML 2.獨立存在 3.在HTML標籤外 <?php echo "我的第一個PHP程式 <br>" ; ?>

  21. 資料型態類型

  22. 布林型態 語法 True|False 由來 為了紀念提出此概念的十八世紀法國數學家 George Boole 大小寫視為相同 範例 $a = true; $b = FALSE; 通常用於判斷式,例如 • if($a ) {//若$a 為真 ,則執行括號內的指令 • ….. • }

  23. 整數型態 語法 [+|-] [0|0x] 數值 範例 $a = 456; //正整數 $b = -123; //負整數 $c = 045; //八進制 $d = 0x4A; //十六進制

  24. 浮點數型態 一般浮點數 例如:1.345 科學記號浮點數 例如:1.23e2、1.45e-4

  25. 字串型態 字串是文字串列的組合,可用雙引號或單引號前後括號起來 $a = “PHP研習課”; $b = ‘PHP研習課’; 在字串中遇到特殊符號需加個反斜線(\),如反斜線、單引號、雙引號、$字號等 $a = “I\’ll be back”; $b = ‘I love \“PHP\” ‘; 在雙引號中的變數才會被置換,單引號則不會 echo “\$a = $a” ; echo ‘\$b = $b’ ; \n \r \t的使用(只對網頁原始檔有效) \n 換一行 \r 與\n 相同 \t 跳一個定位點

  26. Heredoc 定界符 在區塊內可以不使用反斜線,就可以直接顯示反斜線、單引號、雙引號、$字號這些字元 語法 例如 • $變數=<<<Heredoc標籤 • …. • …. • …. • Heredoc標籤; Heredoc 標籤之前不可空白 • $a = “hi”; • $msg=<<<doc • {$a} I’ll be back ! I love “PHP” • doc; • echo $msg;

  27. 陣列型態 陣列是變數的集合,陣列中的每一個元素各有自己的值,用索 引可參照到陣列中的元素,其中 1.陣列索引由0開始。 2.陣列中的元素可包含不同的資料類型 語法 陣列名稱[指標] 範例 $a[0] = 0; //一維陣列 $a[1] = 10; $a[2] = 20; $c[“國文”] = 85; //關連式陣列 $c[“數學”] = 95;

  28. 陣列型態(一維) 語法 陣列名稱[索引]= 陣列值; Array(索引1=>陣列值1,索引2=>陣列值2); 範例 $a[0] = 0; //一維陣列 $a[1] = 10; $b[] = “忠”; //未指明索引值,將從0開始 $b[] = “孝”; 把陣列中每個元素都取一個名字,方便存取其中元素的名字叫做關鍵字 (key)元素的內容叫做值(value) $c[“國文”] = 85; //關連式陣列 $c[“數學”] = 95; $a=array(0=>0,1=>10,2=>20); $a=array(0,10,20);

  29. 陣列型態(二維) 範例 $class[1][1] = “一年忠班”; //二維陣列 $class[1][2] = “一年孝班”; $class[2][1] = “二年忠班”; $class[2][2] = “二年孝班”; $class[3][1] = “三年忠班”; $class[3][2] = “三年孝班”; • $class=array( • 1=>array(1=>’一年忠班’,2=>’一年孝班’), • 2=>array(1=>’二年忠班’,2=>’二年孝班’), • 3=>array(1=>’三年忠班’,2=>’三年孝班’) );

  30. 物件型態 所謂的物件,就是類別(Class)實體化之後的資料型態 語法: //宣告類別 class 類別名稱{ var資料成員; function成員函數(){ 成員函數內容; } } //產生物件 $a = new類別名稱; //存取成員函數 $a->showcolor();

  31. 物件型態 //宣告物件 class table { var $color ; function set_color($new_color){ $this->color=$new_color ; } function show_color() { echo $this->color; echo "<br>\n" ; } } //使用物件 $T = new table() ; $D = new table() ; $T->set_color("Red") ; $D->set_color("Blue") ; echo "T table color is " ; $T->show_color() ; echo "D table coloe is " ; $D->show_color() ; this 是個關鍵字代表本物件

  32. 資源型態 //建立MySQL連線 $conn = mysql_connect(‘localhost’,’root’,1234’); //選擇資料庫 mysql_select_db(“user”,$conn); //執行SQL語法 $res = mysql_query(“select * from user”); //擷取每一筆資料 while($row = mysql_fetch_array($res)){ echo $row[“name”]; } //關閉MySQL連結 mysql_close($conn);

  33. NULL 型態 Null表示變數中沒有值 以下三種情況變數將會被視為Null 1.變數被設成Null 2.變數未定義 3.變數被unset()後

  34. 變數初始值 PHP 不需要事先設定變數型態,由初始值的資料型態決定,程式執行中會將 $a = 10; $b = 12.3; $a =“今天好嗎?”; PHP指派變數方式,等號右邊運算完後指派給等號左邊 $A = 30; $B = $A + 30; $C = $C + 30;

  35. 傳值與傳址 <?php $A = 10 ; // $A的值為10 $B = $A ; // $A的值複製給$B $C = &$A ; // $A的記憶體位置給$C echo "執行計算前 <br>"; echo "A=$A <br>" ; echo "B=$B <br>"; echo "C=$C <p>"; $B=$B+10 ; // $B的值加10 $C=$C+20 ; // $C的值加20 echo "執行計算後:<br>" ; echo "A=$A <br>"; // 顯示$A,$B,$C的值 echo "B=$B <br>" ; echo "C=$C "; ?>

  36. 變數種類 區域變數 在函數內宣告的變數為區域變數,可視範圍只限於函數中,在函數中若想使用全域變數,需將變數宣告成global 全域變數 在PHP Script 中(排除函數內)所宣告的變數 靜態變數 在函數中宣告成靜態變數(static),重複呼叫該函數,其變數會保留其值

  37. 變數種類 動態變數(變數的變數) <?php $name="John" ; $$name="Lee" ; echo $John; ?> 最後會顯示 Lee

  38. 超級全域變數 超級全域變數($_SESSION、$_GET、$_POST、$_COOKIE、$_FILES、$_REQUEST) 當切換網頁時,用來記錄與接收的變數 (一) GET 瀏覽器網址列:http://localhost/test.php? user=hs1600 <html><head><title>接收URL變數</title></head><body><?php echo $_GET[‘user’]; ?></body></html> test.php

  39. 超級全域變數 (二) POST– 以表單傳遞變數 <form action="test.php" method="post"> <input type=“files" name="frm_name"> <input type="submit" value="送出"> </form> <body><?php echo $_POST[‘frm_name’];? ></body> REQUEST: 同時接收在自GET與POST變數

  40. 超級全域變數 (三) FILES– 上傳單一檔案 <form action="test.php" method="post“ enctype="multipart/form-data" > <input type=“file" name="frm_up"> <input type="submit" value="送出"> </form> test.php <?php echo $_FILES[‘frm_up’][‘name’];//上傳檔案名稱 echo $_FILES[‘frm_up’][‘type’]; // 檔案類型 echo $_FILES[‘frm_up’][‘size’]; //檔案大小 echo $_FILES[‘frm_up’][‘tmp_name’]; //暫存檔檔名 echo $_FILES[‘frm_up’][‘error’]; //錯誤訊息 ?>

  41. 超級全域變數 (三) FILES– 上傳單多檔案 <form action=“test.php” method=“post“ enctype=”multipart/form-data” >檔案1 : <input type=“file" name="frm_up[]"> 檔案2 : <input type=“file" name="frm_up[]"> <input type="submit" value="送出"> </form> test.php <?php echo $_FILES[‘frm_up’][‘name’][0];//上傳檔案名稱1 echo $_FILES[‘frm_up’][‘tmp_name’][0]; //暫存檔檔名1 echo $_FILES[‘frm_up’][‘name’][1];//上傳檔案名稱2 echo $_FILES[‘frm_up’][‘tmp_name’][1]; //暫存檔檔名2 ?> ? >

  42. 超級全域變數 (四) SESSION : 儲存在伺服器中,用來記錄客戶端一些資料 session_start(); //啟用session 超級全域變數 $_SESSION[‘county’] = “台中縣”;//宣告$_SESSION[‘county’] 變數 並指定值 $country = “台中縣”; session_register(“countruy”); 1.php session_start() ; //啟用session 超級全域變數 echo $_SESSION[‘county’] ; //顯示session 變數 unset ($_SESSION[‘county’] ); //釋放$_SESSION[‘county’] 變數 session_destory(); //釋放所有 SESSION 變數 session_unregister(“county”); session_unset(); 2.php

  43. 超級全域變數 (五) COOKIE: 儲存在客戶端電腦中,用來記錄客戶端一些資料 Cookie的限制: 每個使用者的瀏覽器只能支援(存取)300個Cookie 每個瀏覽器只能針對同一個伺服器存取20個Cookie 每個Cookie的大小最多僅4k Bytes的容量 有些瀏覽器可以把Cookie的功能關掉,若關掉後Cookie就不能使用 //儲存user的COOKIE變數於客戶端,其值為Peter,保存時間為1小時 setcookie("user", "Peter", time()+3600); 1.php //顯示COOKIE[‘user’]的值 echo $_COOKIE[‘user']; 2.php

  44. 超級全域變數 (六)SERVER: 系統變數 echo $_SERVER[‘PHP_SELF’]; //顯示目前執行Script的檔案 echo $_SERVER[‘REMOTE_ADDR’]; //顯示客戶端IP echo $_SERVER[‘HTTP_USER_AGENT‘]; //顯示客戶端的瀏覽器 //當有Proxy Server 時取得客戶端IP if($_SERVER["HTTP_X_FORWARDED_FOR"] == "") $your_ip = $_SERVER["REMOTE_ADDR"] ; else $your_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];

  45. 常數 語法: define(常數名稱,常數值) 例如: <?php define(PI,3.14); echo PI; ?>

  46. 算術運算子

  47. 指定運算子

  48. 邏輯運算子

  49. 關係運算子

  50. 字串運算子 $a = ‘今天日期為:’; $b = ’97年4月13日’; $c = $a . $c; echo $c // 顯示結果為今天日期為:97年4月13日

More Related