PHP 4.0 講義 PHP介紹 1 2 3 4 5 6 7 8 9 A B C D 


指令敘述 5.1 :  變數名稱 = fopen ( "檔名","屬性" );

指令說明:將檔案打開, 以便後續的讀出或寫入資料的動作

用法:

變數名稱 = fopen ( "檔名","屬性" );

變數名稱是來記錄檔案代號用的,檔名為要打開的檔案名稱,屬性有以下幾種常用的用法

例:

$fp1 = fopen("ping.txt","r"); // 打開 ping.txt 檔案, $fp1 是檔案代號 , r參數代表唯讀
$fp2 = fopen("counter1.txt","w"); // 打開 counter1.txt 檔案, $fp2 是檔案代號 , w參數代表寫入


指令敘述 5.2 :  fclose( 變數名稱 );

指令說明:將檔案關閉

用法:

fclose( 變數名稱 );

例:

fclose($fp1); // 關閉檔案
fclose($fp2); // 關閉檔案


指令敘述 5.3 :  變數名稱1 = fgetc ( 變數名稱2 );

指令說明:從檔案中一次讀取一個字

用法:

變數名稱1 = fgetc ( 變數名稱2 );

變數名稱1是用來存放讀出來的字, 變數名稱2是檔案的代號

例:

$a=fgetc($fp1);
$buffer=fgetc($fp2);

完整的例子5-1:

先在 counter1.txt 文字檔中寫下 231

<?php
$fp1 = fopen("counter1.txt","r");   // 打開檔案 counter1.txt , $fp1 是檔案代號 , r參數代表唯讀
$a=fgetc($fp1);         // 讀出一個字存到 $a (從$fp1 代表的檔案去讀)
$b=fgetc($fp1);         // 讀出下一個字存到 $b (從$fp1 代表的檔案去讀)
echo "第一個字為 $a,
第二個字為 $b" ;
fclose($fp1);         // 關閉檔案
?>


指令敘述 5.4 :  變數名稱1 = fgets ( 變數名稱2, 數字1, );

指令說明:從檔案中一次讀取特定的字數 (當檔案中的一行文字 不足特定字數時, 即以一行為單位)

用法1:

變數名稱1 = fgets ( 變數名稱2, 數字1, );

變數名稱1是用來存放讀出來的字串, 變數名稱2是檔案的代號, 數字1是讀取的字數

例:

$a = fgets($fp1,10);
$s = fgets($fp1,1000); //
當檔案中的一行文字 不足特定字數時, 即以一行為單位

完整的例子5-2:

先在 counter1.txt 文字檔中寫下以下4行文字

This is a book.
Nice to see you.
Good night.
How old are you?

程式如下:

<?php
$fp1 = fopen("message.txt","r");  // 打開檔案 counter1.txt , $fp1 是檔案代號 , r參數代表唯讀

$s = fgets($fp1,1000);      // 讀出一行字存到 $a (從$fp1 代表的檔案去讀)
echo "訊息: $s <br>";

fclose($fp1);        // 關閉檔案
?>

 

用法2:搭配 for 迴圈可以讀取多行

完整的例子5-3:

先在 counter1.txt 文字檔中寫下以下4行文字

This is a book.
Nice to see you.
Good night.
How old are you?

程式如下:

<?php
$fp1 = fopen("message.txt","r");  // 打開檔案 counter1.txt , $fp1 是檔案代號 , r參數代表唯讀
for($i=1;$i<=3;$i++)       // 重覆3次
{

$s = fgets($fp1,1000);      // 讀出一行字存到 $a (從$fp1 代表的檔案去讀)
echo "訊息: $s <br>";
}
fclose($fp1);          // 關閉檔案
?>

指令敘述 5.5 :  feof(變數名稱1);

指令說明:檢查是否巳到檔案的尾部

用法:

feof(變數名稱1);

若這個函數為真, 則代表巳經到了檔案的尾部

若這個函數為假, 則代表還未到檔案的尾部

變數名稱1是檔案的代號

用法:搭配 for 迴圈 feof 迴圈 可以讀取全部的行

完整的例子5-3:

先在 counter1.txt 文字檔中寫下以下4行文字

This is a book.
Nice to see you.
Good night.
How old are you?

程式如下:

<?php
$fp1 = fopen("message.txt","r");  // 打開檔案 counter1.txt , $fp1 是檔案代號 , r參數代表唯讀
while(!feof($fp1))       // feof 是 end of file 的縮寫, 指的是讀到檔案的最後
{

$s = fgets($fp1,1000);      // 讀出一行字存到 $a (從$fp1 代表的檔案去讀)
echo "訊息: $s <br>";
}
fclose($fp1);          // 關閉檔案
?>

練習5-1: 本週血型運勢

先在 messageA.txt 文字檔中寫下文字

花錢投資的重要階段,有可能朋友邀請你一起合夥?入股。
關於感情,需要花時間跟對方溝通,如果本周彼此無法見面,這段感情就有危機了。

先在 messageB.txt 文字檔中寫下文字

在工作忙碌,發現有人故意扯你後腿,很容易讓你遇到衝動生氣的事情。
關於感情,沒有安全感,需要對方處處都聽你的,或是讓著你。

先在 messageO.txt 文字檔中寫下文字

持續好運在生活周遭出現,讓你更有信心去實現夢想。
關於愛情,可以談婚論嫁和穩定生活的物件已經出現了。

先在 messageAB.txt 文字檔中寫下文字

運勢進入一個新的轉折期,沒有方向渾渾噩噩的狀態。
最近有機會遇到職場桃花,或是你的主管與客戶對你特別的照顧,這種被關心?被照顧的感覺,小心讓你陷入情網。

程式寫作提示: 以兩頁為架構, 第一頁以選項鈕問使用者的血型, 第二頁讀取不同的檔案來呈現其本週血型運勢

 


指令敘述 5.6 :  fputs(變數名稱1,變數名稱2);

指令說明:從檔案中寫入一行

用法:

fputs(變數名稱1,變數名稱2);

變數名稱1是檔案的代號, 變數名稱2是用來寫入的資料

如果一行中要寫入多筆料, 建議採用 字串串接的方法 (字串串接符號為 . )

變數名稱2 = 變數名稱3 . " " . 變數名稱4 . " " . 變數名稱5 . " " . 變數名稱6

fputs(變數名稱1,變數名稱2);

例:

<?php
 $fp1 = fopen("check.txt","a");
 $str = $education . " " . $q1 . " " . $q2 . "\n";
 fputs($fp1,$str);

 fclose($fp1);
?>

上述的例子將 education, q1 , q2 串在一起 , 放入 str 中, 再把 str 寫入檔案
變數間的空格是為了分開變數用的, 否則會全部接在一起, 結尾的 "\n" 是換行符號,
用以避免全部的結果接成同一行

 

完整的例子5-4:寫入 使用者留下的訊息(覆蓋型), 以兩頁為架構, 第一頁以文字方塊讓使用者留言, 第二頁則寫入檔案

第一頁以文字方塊讓使用者留言

<form action="??????.php" method="post">
你的暱稱 : <input type ="text" name="id" value="無名氏"><br>
留下的訊息 : <input type ="text" name="text"><br>
<input type ="submit" value="送出">
</form>




第二頁則寫入檔案

<?php
$id = $_POST['id'];
$text = $_POST['text'];

$fp1 = fopen("record.txt","w");
$s = $id . " : " . $text ;
fputs($fp1,$s);
echo " $s , 已寫入訊息 <br>";
fclose($fp1);
?>

 

完整的例子5-5:寫入 使用者留下的訊息(附加型)

只要把上述 第二頁中 紅色的w 改成 a 即可

完整的例子5-6(實例應用3):網路問卷調查程式

<h1> 問卷調查 </h1>
<form action="??????.php" method="post">

請輸入您的教育程度 :
<select name="education">
<option selected>1.專科(含)以下
<option>2.學士
<option>3.碩士(含)以上
</select><br>
<br>

您的性別:
<input type ="radio" name="q1" value="女" checked>女
<input type ="radio" name="q1" value="男">男
<br>

贊不贊成這門課不當人:
<input type ="radio" name="q2" value="是" checked>贊成
<input type ="radio" name="q2" value="不">不贊成
<br>

<input type ="submit" value="完成">
</form>

<h2> 謝謝您的意見 </h2>

<?php
$education = $_POST['education'];
$q1 = $_POST['q1'];
$q2 = $_POST['q2'];
$fp1 = fopen("check.txt","a");
$str = $education . " " . $q1 . " " . $q2 . "\n";
fputs($fp1,$str);
fclose($fp1);
?>






練習5-2: 改寫自己的作業1, 能把問卷結果寫入檔案

 


綜合應用1 :  結合指令5.4 ~ 指令5.6 寫出 簡易留言板

 

第一頁以讀取檔案中的留言, 再以文字方塊讓使用者留言

留言板:<p>

<?php
$fp1 = fopen("record.txt","r");
while(!feof($fp1))
{
$s = fgets($fp1,100);
echo "$s <br>";
}
fclose($fp1);
?>

<form action="??????.php" method="post">
你的暱稱 : <input type ="text" name="id"><br>
留下的訊息 : <input type ="text" name="text"><br>
<input type ="submit" value="送出">
</form>

第二頁則寫入檔案

<?php
$id = $_POST['id'];
$text = $_POST['text'];

$fp1 = fopen("record.txt","a+");
$s = $id . " : " . $text . "\n" ;
fputs($fp1, $s);
echo " $s , 已寫入訊息 <br>";
fclose($fp1);
?>
<a href="??????.php">回到留言板</a>






 

綜合應用2 :  結合指令5.4 ~ 指令5.6 寫出 訪客計數器

<?php
$fp1 = fopen("counter1.txt","r"); // 打開檔案, $fp1 是檔案代號 , r參數代表唯讀
fscanf($fp1,"%s",$a); // 讀出一個變數(從$fp1 這個檔案去讀)
fclose($fp1); // 關閉檔案

$a++;

$fp1 = fopen("counter1.txt","w"); // 打開檔案, $fp1 是檔案代號 , w參數代表寫入
fputs($fp1,$a); // 寫入一個變數(從$fp1 這個檔案去寫)
fclose($fp1); // 關閉檔案

echo " 歡迎, 您是第 $a 位訪客 <br>" ;
?>


指令敘述 5.7 :  fscanf(變數名稱1,"%s",變數名稱2);

指令說明:從檔案中依特定格式讀取資料放入變數中

用法:

fscanf(變數名稱1,"%s",變數名稱2);

變數名稱1是檔案的代號, 變數名稱2是用來存放讀出來的第1筆資料

fscanf(變數名稱1,"%s %s ......",變數名稱2,變數名稱3...);

變數名稱1是檔案的代號, 變數名稱2是用來存放讀出來的第1筆資料, 變數名稱3是用來存放讀出來的第2筆資料

例:

若檔案中的資料如下:

3.碩士(含)以上 男 是
3.碩士(含)以上 女 不
1.專科(含)以下 男 是

fscanf($fp1,"%s %s %s",$a,$b,$c);
echo " $a,$b,$c <br>";

則會在網頁上呈現以下結果:

3.碩士(含)以上,男,是

 

完整的例子5-7( 來自完整的例子5-6問卷檔的讀取)

<?php
$fp1 = fopen("check.txt","r");
echo " 目前的已填問卷的結果: <br>";
while(!feof($fp1))
{
fscanf($fp1,"%s %s %s",$a,$b,$c);
echo " $a,$b,$c <br>";
};
fclose($fp1);
?>

練習5-3: 上述程式結果有點問題, 如何改良?

完整的例子5-8(實例應用2): 請讓使用者可以線上查詢自己的薪資 (要求使用者輸入身份証字號, 網頁回答他的薪資), 薪資的文字檔如下 : (不考慮密碼確認的問題)

身份証字號 薪資

a100100101 54000
a100100102 44000
a100100103 32000
a100100104 34000
a100100105 24000

檔名為 money11.php


<form action="money12.php" method="post">
你的身份証字號 :
<input type ="text" name="id" value="a100100101">
<input type ="submit" value="查詢">
</form>

 

檔名為 money12.php

<?php
$id = $_POST['id'];
$fp1 = fopen("money.txt","r"); // 打開檔案, $fp1 是檔案代號 , r參數代表唯讀
while(!feof($fp1))
{
fscanf($fp1,"%s %s",$id2,$money);
if($id==$id2) echo "薪資為:",$money,"<br>";
};
fclose($fp1); // 關閉檔案
?>

 

練習5-4(實例應用2改良版): 請讓使用者可以線上查詢自己的薪資 (要求使用者輸入身份証字號, 密碼, 網頁回答他的薪資), 薪資的文字檔如下 :

身份証字號 密碼 薪資

a100100101 aaaa 54000
a100100102 bbbb 44000
a100100103 cccc 32000
a100100104 dddd 34000
a100100105 eeee 24000

 

練習5-5(實例應用2改良版): 請讓使用者可以線上查詢自己的薪資 (要求使用者輸入身份証字號, 密碼, 網頁回答他的薪資), 將一個薪資檔案拆開成 兩個檔案 (密碼檔 和 薪資檔)

密碼檔

身份証字號 密碼

a100100101 aaa
a100100102 bbb
a100100103 ccc
a100100104 ddd
a100100105 eee

薪資檔

身份証字號 薪資

a100100101 54000
a100100102 44000
a100100103 32000
a100100104 34000
a100100105 24000

 

 


綜合應用3 :  民宿訂房系統,假設該民宿有4間房,房間號碼分別為101~104, 請寫出網頁訂房程式, 訂房者需留下姓名、手機號碼、訂房日期、訂房房號 (注意: 系統必需檢查訂房日期與訂房房號有空, 才能接受訂房, 否則告知已被訂走)

 


PHP 4.0 講義 PHP介紹 1 2 3 4 5 6 7 8 9 A B C D