Bài 29 - PHP basic buổi 8 - THAO TÁC VỚI FILE TRONG PHP

 

LAB PHP (CB) 8

THAO TÁC VỚI FILE TRONG PHP

A – LÝ THUYẾT

Một trong những tác vụ đặc biệt của PHP đó là cho phép xử lý dữ liệu trực tiếp thông qua quá trình nhận và đọc nội dung trên 1 file dữ liệu. Điều này giúp cho PHP trở nên tinh tế và dễ tùy biến hơn khi xử lý 1 lượng dữ liệu có quy mô lớn. Việc thao tác mở, đọc, ghi, đóng file này cũng có ý nghĩa tuần tự như bạn đang làm việc trực tiếp trên 1 file dữ liệu thực thụ

 

I – MỞ VÀ ĐÓNG MỘT FILE TRONG PHP

1 – Mở một File trong PHP

Để mở 1 file ta sử dụng cú pháp sau đây:

Cú pháp:

fopen("Đường dẫn", thuộc tính)

  • Đường dẫn: Chính là đường dẫn tới file cần mở
  • Thuộc tính: bao gồm các quyền hạn cho phép thao tác trên file đó như thế nào

 

Thuộc tính

Ý nghĩa

r

Mở File ở chế đô chỉ đọc, con trỏ đặt đầu File

r+

Mở File ở chế độ (cả đọc lẫn viết), con trỏ đặt đầu File

w

Mở File ở chế độ chỉ viết, Nếu File ko tồn tại, nó sẽ được tạo. Nếu File tồn tại, nội dung sẽ bị xóa. Con trỏ File đặt ở đầu File

w+

Mở File ở chế độ (cả viết lẫn đọc), Nếu File tồn tại, nội dung sẽ bị xóa. Nếu ko tồn tại, File sẽ được tạo. Con trỏ file đặt ở đầu File

a

Mở File dưới dạng append dữ liệu, chỉ có viết. Nếu File tồn tại sẽ được ghi tiếp vào sau nội dụng cũ có sẵn. Nếu File không tồn tại thì sẽ được tạo mới

a+

Mở File dưới dạng append dữ liệu, (cả viết và đọc) có viết. Nếu File tồn tại sẽ được ghi tiếp vào sau nội dụng cũ có sẵn. Nếu File không tồn tại thì sẽ được tạo mới

b

Mở File dưới chế độ nhị phân binary

 

Bảng các thuộc tính cơ bản




2 – Quá trình đóng lại một File đã mở

Để đóng một file vừa được mở ta sử dụng cú pháp sau đây:

Cú pháp:

fclose(Mở File);

·                     Mở File: Chính là quá trình mở một File trước đó

 

II – ĐỌC VÀ GHI FILE TRONG PHP

1 – Quá trình đọc một File theo hàng trong PHP

Chúng ta sử dụng hàm fgets để đọc nội dung của một dòng trong file text và trả lại kết quả là dòng đó

Cú pháp sử dụng:

fgets(Mở File);

·         Mở File: Chính là quá trình mở một File trước đó

 

Ví dụ:

Tạo một File demo.txt với nội dung như sau:

Do hoa website

Thiet ke web tinh HTML

Lap trinh web dong PHP & MySQL

 

Tạo một File read.php với nội dung như sau:



Chú ý: Để kiểm tra xem đã hết file hay chưa, ta sử dụng feof. Hàm này trả về giá trị TRUE nếu đã hết file, FALSE nếu vẫn chưa hết

 

 

2 – Quá trình đọc một File theo ký tự trong PHP

Chúng ta sử dụng hàm fgetc đọc một ký tự duy nhất trong File và trả lại kết quả là ký tự đó

Cú pháp sử dụng:

fgetc(Mở File);

·         Mở File: Chính là quá trình mở một File trước đó

 

Ví dụ:

Tạo một File demo.txt với nội dung như sau:

Do hoa website

Thiet ke web tinh HTML

Lap trinh web dong PHP & MySQL

Tạo một File read.php với nội dung như sau:

Chú ý: Để kiểm tra xem đã hết file hay chưa, ta sử dụng feof. Hàm này trả về giá trị TRUE nếu đã hết file, FALSE nếu vẫn chưa hết

 

3 – Quá trình đọc File theo nhị phân trong PHP

Chúng ta sử dụng hàm fread đọc dữ liệu nhị phân và trả lại giá trị vào một buffer

Cú pháp sử dụng:          

fread(Mở File, filesize(“Đường dẫn File”));

·         Mở File: Chính là quá trình mở một File trước đó

·         Đường dẫn File: Chính là đường dẫn tới file cần mở

Ví dụ:

Tạo một File demo.txt với nội dung như sau:

Đoc File theo nhi phan

 

Tạo một File read.php với nội dung như sau:

4 – Ghi dữ liệu vào một File trong PHP

PHP cung cấp cho ta 1 cú pháp nhỏ để ghi dữ liệu vào 1file như sau:

Cú pháp:

fwrite(Mở File, “Nội dung”);

·         Mở File: Chính là quá trình mở một File trước đó

·         Nội dung: Chính là nội dung cần ghi vào File

Ví dụ:



 

B – BÀI TẬP

I – BÀI TẬP THỰC HÀNH

Bài 1:

Sử dụng các hàm thao tác với File để tiến hành tạo một File có tên bai_tap_1.txt, sau đó ghi vào File vừa mới được khởi tạo trên một đoạn nội dung sau: “hoc php co ban”. Đồng thời xuất nội dung đó trong File ra trình duyệt

Bài 2:

Chuyển đổi toàn bộ nội dung trong File bai_tap_1.txt ở Bài 1 từ tiếng Việt không dấu sang tiếng Anh với yêu cầu sử dụng các hàm thao tác với File và hàm thay thế chuỗi str_replace().

II – BÀI TẬP VỀ NHÀ

Bài 3:

Xây dựng hệ thống lưu địa chỉ các website với các yêu cầu về thiết kế như trong File bài giải bai_tap_3.php. Thực thi File này để phục vụ tốt cho việc xây dựng ứng dụng được chính xác hơn 

Bài 4:

Xây dựng ứng dựng bộ đếm số người truy cập website ở mức độ cơ bản với các yêu cầu về thiết kế như trong File bài giải bai_tap_4.php. Thực thi File này để phục vụ tốt cho việc xây dựng ứng dụng được chính xác hơn

Bài 5:

Xây dựng ứng dựng bộ đếm số người truy cập website ở mức độ nâng cao với các yêu cầu về thiết kế như trong File bài giải bai_tap_5.php. Thực thi File này để phục vụ tốt cho việc xây dựng ứng dụng được chính xác hơn


Đáp án 

 Bài 2:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Translate</title>

</head>

<body>

<?php

if($_POST["submit_name"]){

// Mở và đọc nội dung File

$path = "bai_tap_1.txt";

$fopen = fopen($path, "r");

$fread = fread($fopen, filesize($path));

$fclose = fclose($fopen);

// Dịch nội dung File

$arr_vi = array("hoc", "lap trinh", "co ban");

$arr_en = array("learning", "programming", "basic");

$fread = str_replace($arr_vi, $arr_en, $fread);


// Mở và ghi nội dung mới cho File

$fopen = fopen($path, "w");

$fwrite = fwrite($fopen, $fread);

$fclose = fclose($fopen);

}

else{

// Đọc nội dung File để hiển thị vào phần tử textarea

$path = "bai_tap_1.txt";

$fopen = fopen($path, "r");

$fread = fread($fopen, filesize($path));

$fclose = fclose($fopen);

}

?>

<form method="post">

<table align="center" width="300" border="1" cellpadding="1" cellspacing="1">

<tr><td align="center">HỆ THỐNG DỊCH BÀI BÀI TỰ ĐỘNG</td></tr>

<tr><td>

<textarea name="art"><?php echo $fread;?></textarea>

</td></tr>

<tr><td>

<input type="submit" name="submit_name" value="Translate and Save" />

</td></tr>

</table>

</form>

</body>

</html>

Bài 3:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bài 3</title>
<style type="text/css">
table tr td#title{
width:auto;
height:32px;
background:#0099FF;
font-family:arial;
font-size:14px;
font-weight:bold;
color:#FFFFFF;
text-align:center;
text-transform:uppercase;
}
table tr td#link-title{
width:auto;
height:25px;
font-family:arial;
font-size:12px;
text-align:center;
text-transform:capitalize;
}
table tr td#link-title a{
color:#0000FF;
text-decoration:none;
}
table tr td#link-title a:hover{
text-decoration:underline;
}
</style>
</head>
<body>

<table align="center" border="1">
<tr>
    <td id="title" colspan="2">hệ thống quản lý địa chỉ website</td>
    </tr>
    <tr>
    <td><form method="post"><input type="text" name="add_new_link" /></td>
        <td><input type="submit" name="submit_name" value="Thêm một địa chỉ mới" /></form></td>
    </tr>
    <tr>
    <td id="link-title" colspan="2"><a href="bai_tap_3.php?action=list-web-link">danh sách toàn bộ các địa chỉ website</a></td>
    </tr>
<?php
if(($_GET["action"] == "list-web-link")&&(!$_POST["submit_name"])){
$list_link = "";
$fp = "list_web_link.txt";
$fo = fopen($fp, r);
while(!feof($fo)){
$list_link .= fgetc($fo);
}
$fc = fclose($fo);
$arr_link = explode("|", $list_link);
echo "<tr><td colspan=\"2\">";
foreach($arr_link as $value){
echo "<a href=\"$value\" target=\"_blank\">$value</a><br>";
}
echo "</td></tr>";
}
?>
</table>
<?php
if($_POST["submit_name"]){
$new_link = $_POST["add_new_link"];
$fp = "list_web_link.txt";
$fo = fopen($fp, a);
$fw = fwrite($fo, $new_link."|");
$fc = fclose($fo);
}

?>
</body>
</html>


Bài 4:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Bài 4</title>

<style type="text/css">

b{

color:#FF0000;

}

p{

font-family:arial;

font-size:12px;

color:#FF0000;

font-style:italic;

}

</style>

</head>

<body>

<?php

$fp = "counter.txt";

$fo = fopen($fp, r);

$fr = fgets($fo);

$fc = fclose($fo);

echo "Trang web của bạn đã có <b>".$fr."</b> người truy cập";

echo "<p>Mỗi lần bạn bấm phím F5 (Refresh lại trang) cũng được tính là một lần truy cập mới</p>";

$fr++;

$fp = "counter.txt";

$fo = fopen($fp, w);

$fw = fwrite($fo, $fr);

$fc = fclose($fo);

?>

</body>

</html>


Bài 5:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Bài 5</title>

<style type="text/css">

h3{

font-family:arial;

font-size:12px;

font-weight:bold;

color:#333333;

text-transform:uppercase;

}

</style>

</head>

<body>

<?php

$fp = "counter.txt";

$fo = fopen($fp, r);

$fr = fgets($fo);

$fc = fclose($fo);


echo "<h3>Tổng số người đã truy cập trang web của bạn:</h3>";

$len = strlen($fr);

for($i=0; $i<$len; $i++){

$num = substr($fr, $i, 1);

echo "<img src=\"images/$num.gif\">";

}


$fr++;

$fp = "counter.txt";

$fo = fopen($fp, w);

$fw = fwrite($fo, $fr);

$fc = fclose($fo);

?>

</body>

</html>



>>Xem bài trước: Bài 28 - PHP basic buổi 7 - BÀI 7 - KHÁI NIỆM VỀ HÀM TRONG PHP


>>Xem bài tiếp theo: Bài 30 - PHP basic buổi 9 - QUY TRÌNH UPLOAD FILE TRONG PHP

No comments:

Post a Comment