資料庫系統理論(三)

重要觀念

1.資料庫(DB):是由一群相關資料的集合體。
2.資料庫管理系統(DBMS):管理這些資料庫檔案的軟體(如:Access)。
3.資料庫系統(DBS)=資料庫(DB)+資料庫管理系統(DBMS)。

資料庫管理系統的功能

1.資料的定義(Data Define)
2.資料的操作(Data Manipulation)
3.重複性的控制(Redundancy Control)
4.表示資料之間的複雜關係(Multi-Relationship)
5.實施完整性限制(Integrity Constraint)
6.提供「備份」與「回復」的能力(Backup and Restore)
一、資料的定義(Data Define)
是指提供DBA建立「欄位名稱」、「資料類型」、及相關的「限制條件」。
二、資料的操作(Data Manipulation)
是指提供使用者方便的存取資料。因此,它提供了四個功能,分別為:
1.新增(INSERT)
2.修改(UPDATE)
3.刪除(DELETE)
4.查詢(SELECT)
三、重複性的控制(Redundancy Control)
主要是為了達成「資料的一致性」及「節省儲存空間」。
四、表示資料之間的複雜關係(Multi-Relationship)
是指DBMS必須要有能力來表示資料之間的複雜關係,基本上,有三種不同的關係,分別為:
1.一對一
2.一對多
3.多對多
五、實施完整性限制(Integrity Constraint)
是指用來規範關聯表中的資料在經過新增、修改即刪除之後,將錯誤或不合法的資料值存入「資料庫」中。
六、提供「備份」與「回復」的能力(Backup and Restore)
是指讓使用者能方便的「備份」或轉移資料庫內的資料,以防在系統毀損時,還能將資料「還原」回去,減少損失。

資料庫系統理論(二)

結構化程式設計

定義:是指將一個「大系統」分解成許多具有「獨立功能」的「小模組」。

優點:
1.程式容易閱讀。
2.減少程式維護的成本。
3.減少程式邏輯的錯誤。
4.提高程式的生產力。
5.降低程式的複雜性及測試時間。
缺點:
1.程式比較多,故比較佔記憶體空間。
2.程式比較多,固執行速度比較慢。

結構化程式必須遵守的原則

1.每一個結構只能有一個入口及出口。
2.少用goto的指令
3.採用「由上而下」的觀念設計程式。

前測試迴圈

定義:先判斷條件式,再執行迴圈。
作法:「執行前」先檢查是否符合條件式,若符合,則執行迴圈;若不符合,則跳出迴圈。
語法:
while (條件式)
{
敘述區塊;
}
實例:
想到公園跑步。
假設我們想到公園跑步,則在我們出門時,一定會先判斷「是否有颳風下雨」,如果是的話,就會「待在家中....」繼續等待,直到沒有颳風下雨為止。


後測試迴圈

定義:先執行迴圈,再判斷條件式
作法:「判斷前」會先執行一次之後,再執行條件式判斷,不符合則跳出迴圈,但至少會執行一次迴圈。
語法:
do
{
敘述區塊;
}
while (條件式);
實例:
假設我們已經在公園跑步了一段時間,如果「沒有遇到颳風下雨」,則繼續「跑步....」。直到「颳風下雨」才停止跑步。

break語法的迴圈情況


contine語法的迴圈情況

資料庫系統理論(一)

Chapter2 資料型態與變數宣告及運算

 變數
*整數型態
十六進位制,以0x開頭
*布林型態
條件成立會顯示(1),條件不成立會顯示(空字串)
注意~在PHP程式語言中,(=)的真正意義是(指定運算子),並非數學中的(等於)。
*變數命名原則
$i_int 變數宣告整數
$f_float 變數宣告整浮點型態
$s_string 變數宣告為字串型態
$b_bool 變數宣告為布林型態

*字串常數
常數的優點
1.減少程式錯誤的機會。
2.讓程式更易於閱讀。
3.使程式較容易修正。

*運算子的分類
1.指定運算子 (例如 = )
2.算術運算子 (例如 +、-、*、/ )
3.關係運算子 (又稱比較運算子 例如 >、<、= ...)
4.邏輯運算子 (例如 AND、OR、NOT ...)
撰寫程式時,若遇到數學上的符號 = 時,都會有疑問,那就是:何時才是真正的等號;何時才能當作指定運算子來使用。基本上,在PHP中等的等號(=)大部分都是(指定運算子)來使用

關係運算子
運算子功能條件式執行結果
== (等於)判斷A與B是否相等$A=$BFlase
!=或 <>(不等於)判斷A是否不等於B$A!=$BTrue
< (小於)判斷A是否小於B$A<$BTrue
<=(小於等於)判斷A是否小於等於B$A<=$BTrue
>(大於)判斷A是否大於B$A>$B Flase
>=(大於等於)判斷A是否大於等於B$A>=$BFlase

邏輯運算子
運算子順序意義運算式運算結果為True的條件
!(邏輯 Not)1Not AA必為假
&&(邏輯 And)2A  and BA、B必須為真
||(邏輯 Or)3A Or B A、B中至少一個為真

複合指定運算式
運算子功能簡化的表示法相當於執行結果
(設I的初始值為3)
指定符號$I=2;$I=2;$I=2;
+=相加後再指定給變數$I+=2;$I=$I+2;$I=5;
-=相減後再指定給變數$I-=2;$I=$I-2;$I=1;
*=相乘後再指定給變數$I*=2;$I=$I*2;$I=6;
/=相除後再指定給變數$I/=2;$I=$I/2;$I=1.5;

後面有個小孩抱著嗎?

PHP4-chap7

正規表式

程式碼

//'7'正規表示式
$session_name = $session_txt['7.1'];
echo $session_name."<br>";
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    ereg()   int ereg(string pattern, string string [, array regs])<br>
    這函式會以pattern 中所指定的正規表示式來搜尋對應字串,並以陣列方式傳回。	
<br>
</fieldset>
";
echo $message."<br>";

//$datesever=$_SERVER['REQUEST_TIME'];
//echo $datesever."<br>";
$datestr=date("m-d-Y");
echo $datestr."<br>";
$date = $datestr;

if (ereg("([0-9]{1,2})-([0-9]{1,2})-([0-9]{4})", $date, $regs)){
	echo ("$regs[2].$regs[1].$regs[3]");
}else{
	echo ("Invalid date format: $date");
}
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    ereg_replace()   (string pattern, string replace, string string )<br>
    這是個將字串中的pattern 以replacement來代替的函式。這個函式會傳回所找到並加以修改<br>
	過的字串加以運用。
	
<br>
</fieldset>
";
echo $message."<br>";

$num = '10';
$string = 'Ten Little Indians sitting ....';
echo "Befor: ". $string."<br>";
$string = ereg_replace('Ten', $num, $string);
echo "After: ". $string."<br>";

echo $breakstr."<br>";
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    eregi()   int ereg(string pattern, string string [, array regs])<br>
	這個函式和ereg()相同,只不過它忽略了對應到字母字元的狀況。<br>
	eregi_replace()   (string pattern, string replace, string string )<br>
	這個函式和ereg_replace()相同,只不過它忽略了對應到字母字元的狀況。<br>
<br>
</fieldset>
";
echo $message."<br>";
$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    split()   array split(string pattern, string string [, int limit])<br>
	這個函式會傳回一個字串陣列,其中每一個都是以正規表示式pattern所形成的子字串的邊界所<br>
	區隔而成的字串。當limit引數有指定時,則所傳回的陣列會包含最多limit個元素,而其餘的<br>
	元素則包含在string引數中。<br>
	spliti()和split()相同,只不過它在對應字母時會忽略大小寫。
<br>
</fieldset>
";
echo $message."<br>";

$date = "19/Sep/1966 is my date of birth";

$array_date = split('[/.-]', $date, 4);
echo "Day: ".$array_date[0]. "Month: ".$array_date[1]."
		Year:". $array_date[2];
echo "<br>";
echo $array_date[3];


echo $breakstr."<br>";

PHP4-chap5

物件導向

程式碼

//'5.3'以PHP進行物件導向程式設計-繼承
$session_name = $session_txt['5.3'];
echo $session_name."<br>";

//這個方法比較複雜
$mediaItems = array();
$books = array();
$cds = array();

$item->id			=1;
$item->type			="book";
$item->name			="Professional PHP4";
$item->inStock		=33;
$item->price		=49.95;
$item->rating		=5;
$mediaItems[]	=$item;

$book->isbn			=124465343442;
$book->author		="Ken Egervari";
$book->numberOfPages	=500;
$books[$item->id]	=$book;

$item->id			=2;
$item->type			="cd";
$item->name			="This way";
$item->inStock		=120;
$item->price		=16.94;
$item->rating		=4;
$mediaItems[]	=$item;

$cd->serialNo		=323254354;
$cd->artist			="Jewel";
$cd->numberOfTradks	=13;
$cds[$item->id]	=$cd;

foreach ($mediaItems as $item){
	echo ("Name: " .$item->name. "<br>");
	echo ("Items in stock: " .$item->inStock. "<br>");
	echo ("Price: " .$item->price. "<br>");
	echo ("Rating: " .$item->rating. "<br>");
	
	switch ($item->type){
		case 'cd':
			echo ("Serial No: " .$cds[$item->id]->seriaNo. "<br>");
			echo ("Artist: " .$cds[$item->id]->artist. "<br>");
			echo ("# of Tracks: " .$cds[$item->id]->numberOfTradks. "<br>");
			break;
			
		case 'software':
			break;
		
		case 'movie':
			break;
			
		case 'book':
			break;
	}
}

//用class 繼承 extends
//Media.php
define ("MIN_RATING", 0);
define ("MAX_RATING", 5);


class Media
{
	var $id;
	var $name;
	var $inStock;
	var $price;
	var $rating;
	
	function Media ($id,$name,$inStock,$price,$rating)
	{
		if ($inStock < 0) $inStock = 0;
		if ($price < 0) $price =0;
		if ($rating < MIN_RATING) $rating = MIN_RATING;
		if ($rating > MAX_RATING) $rating = MAX_RATING;
			$this->id = $id;
			$this->name = $name;
			$this->inStock = $inStock;
			$this->price = $price;
			$this->rating = $rating;
	}
	
	function buy()
	{
		$this->inStock--;
	}
	
	function display()
	{
		echo "name: " .$this->name. "<br>";
		echo "Items in stock: " .$this->inStock. "<br>";
		echo "Price: " .$this->price. "<br>";
		echo "Rating: " .$this->rating. "<br>";
	}
}

//Book.php
class Book  extends Media
{
	var $isbn;
	var $author;
	var $numberOfPages;
	
	function Book($id, $name, $inStock, $price, $rating,
				  $isbn, $author, $numberOfPages)
	{
		$this->Media($id, $name, $inStock, $price, $rating);
		$this->isbn = $isbn;
		$this->author = $author;
		$this->numberOfPages = $numberOfPages;
	}
	
	function display()
	{
		Media::display();
		
		echo "ISBN: ". $this->isbn. "<br>";
		echo "Author: ". $this->author. "<br>";
		echo "number of pages: ". $this->numberOfPages. "<br>";
	}
					  
}		 
		
$book = new Book(0,'PHP Programming',23,59.99,4,'124-4333-4443',
					'Ken Egervari',1024);
$book->display();
			


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    class檔案:Media.php、主程式檔:Book.php<br>
	要注意的是,我們所有的媒體在建構後都有相同的行為。所有的display()方法<br>
	都不受引數,並且會適當地顯示每一個不同媒體項目。
<br>
</fieldset>
";
echo $message."<br>";

PHP4-chap3

字元與運算子

程式碼

//'3.1'跳脫字元
$session_name = $session_txt['3.1'];
echo $session_name."<br>";
//$text = "This text goes\nacross several\nlines\t\"and this quotion is indented\"";
echo nl2br("This text goes\nacross several\nlines\t\"and this quotion is indented\"");

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   我們會用到\符號來跳脫後面的符號,至於N->斷行、T->定位<br>
   都沒有用,要能有用,必須加上<font color=red>nl2br()</font>函式來轉換。
<br>
</fieldset>
";

echo $message."<br>";
//'3.2'運算子
$session_name = $session_txt['3.2'];
echo $session_name."<br>";

@define(CREATE_RECORDS, 1);
@define(DELATE_RECORDS, 2);
@define(ALTER_RECORDS, 4);
@define(ADMINISTATOR, 8);

$user_permissions = CREATE_RECORDS |ALTER_RECORDS;

echo (($user_permissions & CREATE_RECORDS) ? "user can creats records<br>" : "");

@define (TWO, 2);
@define (FOUR, 4);

echo (TWO << FOUR)."<br>";
echo (FOUR >> TWO)."<br>";

//$Myconn=$conn;  //使用mysqli_connect連線

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   位元運算子:且(&)、或(|)、互斥(^)、補數(~)、左移(<<)、右移(>>)<br>
  左移(Shift Left):<br>
     echo 11<<2;<br> 
     11往左邊移動2個位元,output:44<br>
     左移運算就是將全部位元往左移兩格,然後右邊補上0<br>
     11(1011) ->左移一次,右邊補0-> 22(10110) ->左移一次,右邊補0-> 44(101100)<br>
   <br>
   數值運算子:相加(+)、相乘(*)、相減(-)、相除(/)、餘數運算子(%)。<br>
    <br>
   比較運算子:小於(<)、小於等於(<=)、大於(>)、大於等於(>=)。傳回true或false<br>
     <br>
   邏輯運算子:且(and或&&)、或(or或||)、非(!)、互斥(xor)。傳回true或false<br><br>
</fieldset>
";

echo $message."<br>";

PHP-Cookbook-chapte13

程式碼

//'13.1'擷取其他程式的輸出
$session_name = $session_txt['13.1'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";


$current_date = 'date';

$pp =popen('date','r');
while ($line = fgets($pp,1024)){
	$output .=$line;
}
pclose($pp);

show_array($output);
exec('date',$output_1);
print implode ("\n",$output_1)."<br>";  
show_array($output_1);

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   exec()函數。此函式會開啟一個管線連接到某個程式,並將該程式所有的輸出<br>
   逐行放到陣列中(欲填入的陣列當成第二個參數)。
   	
<br>
</fieldset>
";
echo $message."<br>";
//'13.2'印出程式的輸出
$session_name = $session_txt['13.2'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

passthru('date');


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
  passthru()函式 
<br>
</fieldset>
";
echo $message."<br>";

PHP-Cookbook-chapte9

程式碼

//'9.1'建立物件
$session_name = $session_txt['9.1'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Name{
	var $property1;
	var $property2;
	
	function print_name($first_name,$last_name){
		print "You first name is :$first_name,<br>";
		print "and your last name :$last_name.";
	}
}

$obj = &new Name;
$obj->firstname='Oliver';
$obj->lastname='Butin';

$obj->print_name($obj->firstname,$obj->lastname); 


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    \$obj = &new Name;<br>
    \$obj->firstname='Oliver';<br>
    \$obj->lastname='Butin';<br><br>

     \$obj->print_name(\$obj->firstname,\$obj->lastname); 
<br>
</fieldset>
";
echo $message."<br>";
//'9.2'在類別裡存取變數
$session_name = $session_txt['9.2'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Name1 {
	var $firstname;
	var $lastname;
	
	function print_name(){
		print 'Firstname :'. $this->firstname;
		print '<br>Lastname :'. $this->lastname."<br>";
	}

    function change_name ($name){
		$name = preg_split('/\s+/',$name);
		$this->firstname = $name[0];
		$this->lastname = $name[1];
	}

}

$obj = &new Name1;
$obj->change_name("Sterlling Hughes");
$obj->print_name();
$obj->change_name("Andrei Zmievski");
$obj->print_name();

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    取class的變數 \$this->firstname,不用加\$符號。
<br>
</fieldset>
";
echo $message."<br>";
//'9.4'設定公開和私有變數或函式
$session_name = $session_txt['9.4'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Car {
	var $_name; // 私有變數
	var $brandname;
	
	function analyze(){
		if ($this->_name == "Corola"){
			$this->brandname = 'Toyota';
		}else {
			$this-_delete();
		}
	}
	function _delete(){
		$this->name ='';
		$this->brandname ='';
	}
}
	

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   如果要宣告函式和變數為類別所私有,你必須將它們放在函數內。<br>
   然而有個標準命名慣例,私有方法和變數應該有底線(_)開頭。
<br>
</fieldset>
";
echo $message."<br>";
//'9.5'撰寫建構函式(constructor)
$session_name = $session_txt['9.5'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Human {
	var $name;
	
	function Human ($na){
		print "Wake up $na, you have been initalized!<br>";
		$this->name = $na;
	}
}
$obj = &new Human ('Stephen Hughes');


class SuperHuman extends Human {
	var $power;
	
	function SuperHuman($power){
		Human::Human(); //呼叫class Human 及 class 裡的 Human方法
		$this->$power = $power;
		print "You power is $power";
	}
	
	function user_power(){
	}
}
$obj1 = &new SuperHuman (10);
	

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
  在PHP,建構函式是一個與類別名稱大小寫相同的函式,它可以接受參數<br>
  ,以便在初始化的時候讓物件有機會修改預設的資料。另外請注意,如果<br>
  親代類別也有一個建構函式,那麼當子類別產生物件時並不會呼叫親代的<br>
  建構函式。所以你必須手動作點工。<br>
  function SuperHuman(\$power){<br>
	<font color=red>
	Human::Human(); //呼叫class Human 及 class 裡的 Human方法
	</font>
	<br>
		\$this->\$power = \$power;<br>
		print 'You power is \$power';<br>
	}
	
<br>
</fieldset>
";
echo $message."<br>";
//'9.8'直接使用類別函式而不需產生物件
$session_name = $session_txt['9.8'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Conversion {
	
	function feet_to_meters($feet){
		return $feet * 0.3054;
	}
}
$orgin_height = 6;
$average_height = Conversion::feet_to_meters($orgin_height);
print "輸入的$orgin_height 呎<br>";
print "換算成$average_height 公尺";

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    範例:原始碼<br>
	class Coversion {<br>
	function feet_to_meters(\$feet){<br>
		return \$feet * 0.3054;<br>
	   }<br>
}<br>
\$averge = Conversion::feet_to_meters(6);<br>
直接用符號::來用Conversion -class裡的方法feet_to_meters()<br>
也可以存取變數。
 
<br>
</fieldset>
";
echo $message."<br>";
//'9.9'直接存取親代類別的函式
$session_name = $session_txt['9.9'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

class Computer {
	var $is_on = 1;
	
	function turn_on(){
		$this->is_on = 1;
		print "You turned me on";
	}
	
	function turn_off(){
		$this->is_on = 0;
		print "You turned me off";
	}
}

class HP extends Computer {
	var $processor = 0;
	var $hard_driver =0;
	
	function turn_on(){
		parent::turn_on();
		$this->processor = 1;
		$this->hard_drive = 1;
	}
	
	function turn_off(){
		$this->hard_drive = 0;
		$this->processor = 1;
		parent::turn_off();
	}
}

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    parent類別是個特殊類別,只能用::表示法存取。它可以讓你存取<br>
	親代類別的函式。
	
<br>
</fieldset>
";
echo $message."<br>";

PHP-Cookbook-chapte8

程式碼

//'8.5'在函式呼叫間維持變數值
$session_name = $session_txt['8.5'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

function sequence_get_next_value()
{
		static $x =0;
		return $x++;
}

print sequence_get_next_value ()."=1st value <br>"; 
print sequence_get_next_value ()."=2nd value <br>";
print sequence_get_next_value ()."=3rd value <br>";


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
     staric 變數 = 值,設定變數的維持值<br>
	 staic敘述是避免在函式中使用全域變數的良好方法。在PHP程式<br>
	 執行中,它會在函式間記得\$x的值,這表示程式執行完之後,PHP<br>
	 會忘記此靜態變數的值。
<br>
</fieldset>
";
echo $message."<br>";
//'8.8'動態建立匿名函式
$session_name = $session_txt['8.8'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

function greet ($type){
	return create_function ('$greeting',
							"print \"$type:\$greeting <br> \";");
}
$greeting1 =greet("Casual");
$greeting2 =greet("Formal");

$greeting1("How's it going?");
$greeting1("What's up doc?");

$greeting2("Hello");
$greeting2("Hello,my name is Sterling, it is a pleasure to meet you."); 




$message="
<fieldset><legend><font color=red>TIPS</font></legend>
     create_function()函式,會動態建立一個函式,並以第一個參數當作<br>
	 該函式的參數,以第二個參數當作該函式的程式碼。它會傳回該函式名稱,<br>
	 然後你就可以呼叫該函式。這種粗糙的包裝形式有許多用途,包括call_back()<br>
	 函式。
<br>
</fieldset>
";
echo $message."<br>";
//'8.10'取得任意數量的參數
$session_name = $session_txt['8.10'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

$input_record_separator = " ";

function perl_print (){
	$args =func_num_args();
	/*
	for ($idx = 0; $idx <$argc; $idx++){
		$current_arg = func_num_args($idx);
		print $current_arg.$input_record_separator;
	}
	*/
	foreach ($args as $arg){
		print $arg. $input_record_separator;
	}
}
function perl_print1 (){
	
	$argc =func_num_args();
	for ($idx = 0; $idx <$argc; $idx++){
		$current_arg = func_num_args($idx);
		print $current_arg.$input_record_separator;
	}
	
}

perl_print("Hello World \n","My Name is ","Sterling");
perl_print1("Hello World \n","My Name is ","Sterling","234");

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   PHP提供一組方便的函式,可接受任意數量的參數。func_num_args()   
<br>
</fieldset>
";
echo $message."<br>";

PHP-Cookbook-chapter7

程式

//'7.1'處理時間標記
$session_name = $session_txt['7.1'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

$fn = $file_name = ROOT_PATH."/test/6-10.txt";

print "$fn was last accessed on:". fileatime ($fn)."<br>";
print "$fn was last change on:". filectime ($fn)."<br>";
print "$fn was last modified on:". filemtime ($fn)."<br>";

if (touch ($fn,$date)){
	print "Timestamp changed....";
}else{
	print "Modification Failed";
}

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   在PHP中,copy()是更改檔案時間標記的唯一方式,而它唯一變更<br>
   的是檔案修改時間。因此,除非你用exec(),system()跳出PHP之外<br>
   ,否則你只能更改檔案的mtime。
   
<br>
</fieldset>
";
echo $message."<br>";
//'7.2'移除檔案
$session_name = $session_txt['7.2'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   用unlink()函式處理你要刪除的檔案。若成功傳回1,否則傳回0。<br>
   因此你可以用or運算子或if-else區塊。<br>
   如果你想刪除數個檔案,你可以用forch迴圈讀取陣列元素,然後<br>
   刪除每個檔案。<br>
   foreach (\$file as \$file){ <br>
        unlink(\$file); <br>
		or die ('Waring str');<br>
   }
<br>
</fieldset>
";
echo $message."<br>";
//'7.3'拷貝或移動檔案
$session_name = $session_txt['7.3'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";


$message="
<fieldset><legend><font color=red>TIPS</font></legend>
   在PHP中,copy()函式<br>
   if (copy(\$orginal,\$new)){<br>
      print '成功'; <br>
   }else{  <br>
		print '失敗'; <br>
   }  <br>
   或者如果你需要移動檔案,就用rename()函式 <br>
   rename(\$original,\$new) <br>
      or die ('warmingstr')
<br>
</fieldset>
";
echo $message."<br>";
//'7.5'分析檔名的各個組成部分
$session_name = $session_txt['7.5'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

$fn = ROOT_PATH."/test/6-11.php";

$pinfo = pathinfo ($fn);
print "Directory name is :".$pinfo [dirname ] ."\n<br>";
print "Filename is :".$pinfo [basename ]." \n<br>";
print "Ending is :".$pinfo [extension ]." \n<br>";




$message="
<fieldset><legend><font color=red>TIPS</font></legend>
     參數 dirname 檔案位在的目錄<br>
     參數 basename 檔案名稱<br>
     參數 extension 檔案副檔名,若它有的話
<br>
</fieldset>
";
echo $message."<br>";
//'7.8'循序處裡目錄中的檔案
$session_name = $session_txt['7.8'];
echo $session_name."<br>";
//echo ROOT_PATH."<br>";

$dir_name = ROOT_PATH."/test";
$dh = dir ($dir_name);
echo "方法一<br>";
while ($entry = $dh ->read()){
	print $entry ."\n";
}
$dh->close();

$dh = opendir ($dir_name);
echo "<br>方法二<br>";
while ($entry = readdir ($dh)){
	print $entry ."\n";
}
closedir();

$message="
<fieldset><legend><font color=red>TIPS</font></legend>
    你可以用dir()函式透過一虛擬的物件處裡目錄或用opendir()<br>
	、readdir()、和closedir()來讀取目錄。
 	 
<br>
</fieldset>
";
echo $message."<br>";