Bài 28 - PHP basic buổi 7 - BÀI 7 - KHÁI NIỆM VỀ HÀM TRONG PHP

 

LAB PHP (CB) 7

KHÁI NIỆM VỀ HÀM TRONG PHP

A – LÝ THUYẾT

I – HÀM DO NGƯỜI DÙNG TỰ ĐỊNH NGHĨA

1- Hàm tự định nghĩa

Để giảm thời gian lặp lại 1 thao tác code nhiều lần, PHP hỗ trợ người lập trình việc tự định nghĩa cho mình những hàm có khả năng lặp lại nhiều lần trong website. Việc này cũng giúp cho người lập trình kiểm soát mã nguồn một cách mạch lạc. Đồng thời có thể tùy biến ở mọi trang. Mà không cần phải khởi tạo hay viết lại mã lệnh như HTML thuần túy

Cú pháp:

function function_name(){

Thực thi lệnh…

}




Chú ý: Tên hàm có thể là một tổ hợp bất kỳ những chứ cái, con số và dấu gạch dưới, nhưng phải bắt đầu từ chứ cái hoặc dấu gạch dưới.

 

2 – Hàm tự định nghĩa có tham số

Cú pháp:

function function_name($tham_so_1, $tham_so_2,… ,$tham_so_n){

Thực thi lệnh…

}

3 – Hàm tự định nghĩa với giá trị trả về

Cú pháp:

function function_name(Có hoặc không tham số){

Thực thi lệnh…

return $ketqua;  

}

 

4 – Gọi lại Hàm trong PHP

PHP cho phép chúng ta sử dụng một số hàm sau đây để triệu gọi File như: require_once(), include_once()

Cú pháp:

require_once(“file_name.php”) - include_once(“file_name.php”)

Ví dụ:

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

 

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

 

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

 

 

Tạo một file main.php lấy toàn bộ nội dung của 3 file trên với nội dung như sau:

II – MỘT SỐ HÀM HỖ TRỢ TRONG PHP

1 – Hàm Print_r()

Cho phép duyệt đệ quy và hiển thị thông tin của một giá trị

Cú pháp:

print_r($bien);    


2 – Hàm Explode()

Tách chuỗi ban đầu theo một ký hay một chuỗi ký tự mẫu và trả về một mảng các ký tự trong chuỗi ban đầu

Cú pháp:

explode($ky_tu, $chuoi_can_tach);            


3 – Hàm Implode()

Kết hợp các phần tử trong một mảng lại thành một chuỗi theo một ký tự hay một chuỗi ký tự mẫu

Cú pháp:

implode($ky_tu, $mang);

 

4 – Hàm Str_replace()

Tìm ký tự hoặc chuỗi ký tự trong chuỗi cha để thay thế bởi ký tự hoặc chuỗi ký tự mới. Kết quả trả về một chuỗi mới giữ nguyên chuỗi cũ

Cú pháp:

str_replace($chuoi_ky_tu_can_thay_the, $chuoi_ky_thay_the, $chuoi);

 

5 – Hàm Strlen()

Đếm số ký tự trong một xâu (chuỗi)

Cú pháp:

strlen($chuoi);



6 – Hàm Substr()

Hàm này dung để cắt ra một phần của xâu

Cú pháp:

substr($chuoi, $vi_tri_cat, $lay_so_ky_tu);

 

Chú ý:

  • Vị trí bắt đầu của chuỗi được tính là 0
  • Vị trí cuối cùng của chuỗi được tính là 1 (nếu đếm ngược lại từ cuối chuỗi lên)
  • Chuỗi con luôn luôn lấy cả ký tự ở vị trí bắt đầu và kết thúc của việc cắt
  • Trả về 1 chuỗi mới và giữ nguyên chuỗi ban đầu
  • Nếu hàm không có tham số thứ 3 thì sẽ cát từ vị trí  cắt đến hết chuỗi

7 - Hàm Strrchr()

Tìm kiếm và bắt đầu lấy từ ký tự xuất hiện cuối cùng của ký tự đó trong xâu đến hết xâu

Cú pháp:

strrchr($chuoi, $ky_tu_ket_thuc);

 

 

B – BÀI TẬP

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

Bài 1:

Viết chương trình tính chu vi và diện tích hình chữ nhật với các yêu cầu như sau:

·         Tạo một Form để gửi thông tin

·         Tạo một hộp Selectbox để người dùng có thể lựa chọn tính (chu vi hoặc diện tích)

·         Tạo một trường textbox để người dùng nhập giá trị của chiều rộng

·         Tạo một trường textbox để người dùng nhập giá trị của chiều dài

Bài toán phải được giải theo hướng sử dụng Function

 

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

Bài 2:

Viết chương trình tính chu vi và diện tích hình tròn với các yêu cầu như sau:

·         Tạo một Form để gửi thông tin

·         Tạo một hộp Selectbox để người dùng có thể lựa chọn tính (chu vi hoặc diện tích)

·         Tạo một trường textbox để người dùng nhập giá trị của bán kính

Bài toán phải được giải theo hướng sử dụng Function

Bài 3:

Viết chương trình tính tiền xe taxi với các yêu cầu như sau:

·         Tạo một Form để gửi thông tin

·         Tạo một trường textbox để người dùng nhập số Km đã đi được

·         Tạo một hộp Selectbox để người dùng có thể lựa chọn tính (có hoặc không khứ hồi)

Biết giá tiền được tính như sau:

·         10Km đầu là 15.000 vnđ/1Km

·         15Km tiếp theo là 19.000 vnđ/1Km

·         Các Km tiếp theo 7.000 vnđ/1Km

·         Gía tiền khứ hồi được tính bằng 50% giá tiền lúc đi

Bài toán phải được giải theo hướng sử dụng Function

 

Bài 4:

Xây dựng giao diện trang chủ với cấu trúc chứa Menu chính như hình dưới và lưu lại với tên file là index.php

Trang chủ

Giới thiệu

Tin tức

Liên hệ

Diễn đàn

 

 

Nội dung chính

 

Tạo các trang con trangchu.php, gioithieu.php, tintuc.php, lienhe.php, diendan.php lần lượt có các nội dung tương ứng như sau:

·         File trangchu.php chứa nội dung sau: Chào mừng các bạn đến với website của chúng tôi

·         File gioithieu.php chứa nội dung sau: Website được ra đời vào ngày 06/05

·         File tintuc.php chứa nội dung sau: Đây là trang thông tin được cập nhật đầy đủ và chi tiết nhất

·         File lienhe.php chứa nội dung sau: Mọi chi tiết xin liên hệ với chúng tôi thông qua form liên hệ thuộc website

·         File diễn đàn chứa nội dung sau: Đây là không gian thảo luận về tất cả cả các vấn đề về công nghệ và giáo dục

Yêu cầu khi người dùng lựa chọn trang nào trên thanh Menu thì nội dung tương ứng của trang đó được hiển thị ngay tại phần nội dung chính của trang index.php (hay mói cách khác là trang index.php  load nội dung của các trabg con khi các trang đó được lựa chọn trên thanh Menu)

Bài toán phải được giải theo hướng sử dụng Function

 

Bài 5:

Viết chương trình cho phép người dùng nhập vào một chuỗi ký tự (Viết hoa, có dấu hoặc không) sẽ tự động chuyển thành chuỗi ký tự thường và không dấu

Bài toán phải được giải theo hướng sử dụng Function

 

Bài 6:

Viết ứng dụng tự động tạo mô tả ngắn cho bài viết mà không làm mất nội dung với các yêu cầu như sau:

  • Tạo một Form cho người dùng tương tác với hệ thống
  • Tạo một trường Textarea để người dùng nhập nội dung chi tiết của một bài viết bất kỳ
  • Tạo một trường Textbox để người dùng nhập một số nguyên thể hiệ số ký tự được trích ra từ nội dung chi tiết trên
  • Tạo nút Submit để người dùng thực thi tương tác với hệ thống
  • Khi người dùng thực thi Form thì sẽ tự động tạo một đoạn mô tả ngắn của bài viết đã nhập vào Textarea với nội dung bắt đầu từ điểm đầu tiên đến điểm mà chúng ta yêu cầu khi nhập số vào trường Textbox.
  • Kết thúc nội dung của đoạn mô tả ngắn này phải là một từ có nghĩa và đầy đủ. Ví dụ: Học lập trình PHP thật là tuyệt. có thể thành Học lập trình PHP thật nhưng không được phép thành Học lập trình PHP t hoặc Học lập trình PHP th hay Học lập trình PHP thậ

Bài toán phải được giải theo hướng sử dụng Function


Đáp án:

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>
</head>
<body>
<?php
if($_POST["submit_name"]){
$km = $_POST["km"];
$check = $_POST["rd"];
}

function taxi_money($km, $check){
$total = "";
if($km<=10){
$total = 15000*$km;
}
elseif(($km>10)&&($km<=25)){
$total = (15000*10) + 19000*($km - 10);
}
else{
$total = (15000*10) + (19000*15) + 7000*($km - 25);
}
if($check == "yes"){
$total = $total + ($total/2);
return $total;
}
else{
$total = $total;
return $total;
}
}




?>
<form method="post">
<table align="center" border="1" cellspacing="1" cellpadding="1">
  <tr>
    <td align="center" colspan="2">Hệ thống tính tiền Taxi tự động</td>
  </tr>
  <tr>
    <td>Nhập số Km đi được</td>
    <td><input type="text" name="km" /> Km</td>
  </tr>
  <tr>
    <td>Hành trình có khứ hồi hay không</td>
    <td><input type="radio" name="rd" value="yes" /> Có <input checked="checked" type="radio" name="rd" value="no" /> Không</td>
  </tr>
  <tr>
    <td colspan="2"><input type="submit" name="submit_name" value="Tính" /> <input type="reset" name="reset_name" value="Làm mới" /></td>
  </tr>
  <?php
  if(taxi_money($km, $check)){
  ?>
  <tr>
  <td colspan="2" align="center" style="color:red;"><?php echo "Tổng số tiền là: <b>".taxi_money($km, $check)."</b> VNĐ";?></td>
  </tr>
  <?php
  }
  ?>
</table>
</form>


</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">
#banner{
font-family:arial;
font-size:14px;
font-weight:bold;
color:#FFFFFF;
text-transform:uppercase;
}
#navbar a{
font-family:arial;
font-size:12px;
font-weight:bold;
color:#000066;
text-decoration:none;
text-transform:capitalize;
padding-left:10px;
}
#navbar a:hover{
color:#0099FF;
}
#left-menu{
font-family:arial;
font-size:12px;
font-weight:bold;
color:#FFFFFF;
text-align:center;
text-transform:uppercase;
}
.menu-item a{
font-family:arial;
font-size:12px;
font-weight:bold;
color:#000066;
text-decoration:none;
text-transform:capitalize;
padding-left:10px;
}
.menu-item a:hover{
color:#0099FF;
}
#body{
font-family:arial;
font-size:12px;
color:#333333;
}
#footer{
font-family:arial;
font-size:11px;
color:#FFFFFF;
text-transform:capitalize;
}
</style>
</head>
<body>
<table align="center" width="800" border="1" cellspacing="1" cellpadding="1">
  <tr>
    <td height="80" colspan="5" align="center" bgcolor="#0099FF" id="banner">trung tâm đào tạo trực tuyến lập trình - thiết kế - đồ họa website vietpro</td>
  </tr>
  <tr id="navbar">
    <td width="20%" height="30"><a href="bai_tap_4.php?page=home">trang chủ</a></td>
    <td width="20%"><a href="bai_tap_4.php?page=about">giới thiệu</a></td>
    <td width="20%"><a href="bai_tap_4.php?page=news">tin tức</a></td>
    <td width="20%"><a href="bai_tap_4.php?page=contact">liên hệ</a></td>
    <td width="20%"><a href="bai_tap_4.php?page=forum">diễn đàn</a></td>
  </tr>
  <tr>
    <td id="left-menu" height="30" bgcolor="#0099FF">danh mục chính</td>
    <td id="body" align="center" colspan="4" rowspan="6">
    <?php
    switch($_GET["page"]){
case "home": include_once("trangchu.php");
break;
case "about": include_once("gioithieu.php");
break;
case "news": include_once("tintuc.php");
break;
case "contact": include_once("lienhe.php");
break;
case "forum": include_once("diendan.php");
break;
default: include_once("trangchu.php");
}
?>
    </td>
  </tr>
  <tr>
    <td class="menu-item" height="30"><a href="bai_tap_4.php?page=home">trang chủ</a></td>
  </tr>
  <tr>
    <td class="menu-item" height="30"><a href="bai_tap_4.php?page=about">giới thiệu</a></td>
  </tr>
  <tr>
    <td class="menu-item" height="30"><a href="bai_tap_4.php?page=news">tin tức</a></td>
  </tr>
  <tr>
    <td class="menu-item" height="30"><a href="bai_tap_4.php?page=contact">liên hệ</a></td>
  </tr>
  <tr>
    <td class="menu-item" height="30"><a href="bai_tap_4.php?page=forum">diễn đàn</a></td>
  </tr>
  <tr>
    <td height="60" colspan="5" align="center" bgcolor="#000066" id="footer">bản quyền thuộc về trung tâm đào tạo trực tuyến vietpro</td>
  </tr>
</table>

</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>
</head>
<body>
<?php
if($_POST["submit_name"]){
$content = $_POST["area"];
$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề",
"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ",
"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă",
"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ","Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ");

$marKoDau=array("a","a","a","a","a","a","a","a","a","a","a",
"a","a","a","a","a","a",
"e","e","e","e","e","e","e","e","e","e","e",
"i","i","i","i","i",
"o","o","o","o","o","o","o","o","o","o","o","o",
"o","o","o","o","o",
"u","u","u","u","u","u","u","u","u","u","u",
"y","y","y","y","y",
"d",
"A","A","A","A","A","A","A","A","A","A","A","A",
"A","A","A","A","A",
"E","E","E","E","E","E","E","E","E","E","E",
"I","I","I","I","I",
"O","O","O","O","O","O","O","O","O","O","O","O","O","O","O","O","O",
"U","U","U","U","U","U","U","U","U","U","U",
"Y","Y","Y","Y","Y",
"D");

$content = str_replace($marTViet, $marKoDau, $content);
$content = strtolower($content);
}

?>
<form method="post">
<table align="center" border="1" cellpadding="1" cellspacing="1">
<tr>
    <td align="center" colspan="2">Hệ thống chuyển đổi ký tự có dấu sang không dấu</td>
    </tr>
<tr>
    <td>Nhập nội dung có dấu</td>
    <td><textarea cols="50" rows="8" name="area"></textarea></td>
    </tr>
    <tr>
    <td colspan="2"><input type="submit" name="submit_name" value="Chuyển đổi" /> <input type="reset" name="reset_name" value="Làm mới" /></td>
    </tr>
<?php
if($content){
?>
    <tr>
    <td>Nội dung được chuyển đổi</td>
    <td><textarea cols="50" rows="8"><?php echo $content;?></textarea></td>
    </tr>
<?php
}
?>
</table>
</form>
</body>
</html>

Bài 6:

<!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 6</title>
<style type="text/css">
body{
font-family:arial;
font-size:12px;
}
h3{
font-family:arial;
font-size:14px;
font-weight:bold;
color:#FF0000;
text-transform:uppercase;
}
p#intro{
width:400px;
height:auto;
font-style:italic;
color:#FF0000;
}
#area{
width:400px;
height:150px;
}
#txt{
width:400px;
height:auto;
}
p{
width:400px;
height:auto;
}
</style>
</head>
<body>
<h3>hệ thống tự động tạo mô tả ngắn (intro text) cho bài viết</h3>
<p id="intro">Hệ thống có ưu điểm là loại bỏ được các từ cuối cùng vô nghĩa trong câu.<br> <b>Ví dụ</b> như: <b>...tră</b> hay <b>...ng</b> hoặc <b>...th</b> ...</p>
<form method="post">
Nội dung chi tiết bài viết<br>
<textarea id="area" name="details"></textarea><br>
Hiển thị tin vắn tắt với số ký tự<br>
<input id="txt" type="text" name="num" /><br>
<input type="submit" name="submit_name" value="Đăng bài" />
</form>
<?php
$num = $_POST["num"];
$details = $_POST["details"];
$arr_char = array(".", ",", ";", "!", ":", " ");
$start_post = 0;
if($_POST["submit_name"]){
$intro = substr($details, $start_post, $num);
for($i=$num; $i>=$start_post; $i--){
$replace_char = substr($intro, $i, 1);
if(in_array($replace_char, $arr_char) == TRUE){
$end_post = $i;
break;
}
}
}
$intro = substr($details, $start_post, $end_post);
echo "<p>$intro...<a href=\"#\">chi tiết</a></p>";
?>
</body>
</html>




No comments:

Post a Comment