Ngu ngơ học làm web (53) - Câu lệnh điều kiện trong PHP

Tiếp theo của: Ngu ngơ học làm web (52) - Form trong PHP
------

Phần 53.       Câu lệnh điều kiện trong PHP

Đây là clip số 6: câu lệnh điều kiện – phần 1


Ví dụ câu lệnh if:

<?php
    $number = 10;
    if ($number % 2 == 0) {
      echo 'Số chẵn';
    }
?>

Ví dụ câu lệnh if…else:

<?php
    $number = 1;
    if ($number % 2 == 0) {
      echo 'Số chẵn';
    } else {
      echo 'Số lẻ';
    }
?>

Trong nhiều trường hợp, thường sử dụng toán tử điều kiện thay cho câu lệnh if, vì cách viết gọn hơn.

Vi dụ, viết bằng lệnh if:

<?php
    $number = 11;
    if ($number >= 0 && $number % 2 == 0) {
      $result = 'Số dương chẵn';
    } else if ($number >= 0 && $number % 2 != 0) {
      $result = 'Số dương lẻ';
    } else if ($number < 0 && $number % 2 == 0) {
      $result = 'Số âm chẵn';
    } else {
      $result = 'Số âm lẻ';
    }
    echo $result;
?>

Viết bằng toán tử điều kiện:

<?php
    $number = -1;
    $result1 = ($number >= 0) ? 'Số dương' : 'Số âm';
    $result2 = ($number % 2 == 0) ? 'chẵn' : 'lẻ';
    echo $result1 . ' ' . $result2;
?>

Làm theo clip để giả lập một máy tính cầm tay đơn giản (calculator).

Đây là clip số 7: câu lệnh điều kiện – phần 2 (tiếp tục làm một máy tính cầm tay đơn giản)


Lưu lại đoạn mã để tham khảo:

[calculator.php]

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>Máy tính điện tử</title>
 <style>
 * {
  margin: 0;
  padding: 0;
}
.content {
  width: 600px;
  height: 300px;
  margin: 20px auto;
  border: 1px solid green;
}
h1 {
  text-align: center;
  padding: 10px 0;
  color: red;
}
label {
  display: inline-block;
  width: 100px;
  text-align: right;
}
label,
input {
  padding: 5px;
  margin: 10px 0;
  font-size: 16px;
  font-weight: bold;
}
p {
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  color: red;
  font-style: italic;
}
</style>
</head>
<body>
  <?php
  $number1 = '';
  $calculate = '';
  $number2 = '';
  $result = '';
  $flag = false;

  // nếu submit không là nút Xóa
  if (isset($_POST['typeSubmit']) && $_POST['typeSubmit'] != 'Xóa') {
    // nếu các ô nhập có dữ liệu
    if (isset($_POST['number1']) && isset($_POST['calculate']) && isset($_POST['number2'])) {
      $number1 = $_POST['number1'];
      $calculate = $_POST['calculate'];
      $number2 = $_POST['number2'];
    // hai ô Số thứ nhất và Số thư hai là hai số
      if (is_numeric($number1) && is_numeric($number2)) {
        $flag = true;
      // phép toán hợp lệ
        switch ($calculate) {
          case '+':
          $result = $number1 + $number2;
          break;
          case '-':
          $result = $number1 - $number2;
          break;
          case '*':
          $result = $number1 * $number2;
          break;
          case '/':
          $result = $number1 / $number2;
          break;
          default:
          $result = 'Nhập dữ liệu không hợp lệ!';
          $flag = false;
          break;
        }
      } else {
        $result = 'Nhập dữ liệu không hợp lệ!';
        $flag = false;
      }
    } else {
      $flag = false;
    } 
  } 
?>
  <div class="content">
    <h1>Mô phỏng máy tính điện tử</h1>
    <form action="#" method="post">
      <label>Số thứ nhất</label>
      <input type="text" name="number1" value="<?php echo $number1; ?>"><br>
      <label>Phép toán</label>
      <input type="text" name="calculate" value="<?php echo $calculate; ?>"><br>
      <label>Số thứ hai</label>
      <input type="text" name="number2" value="<?php echo $number2; ?>"><br>
      <label></label>
      <input type="submit" name="typeSubmit" value="Xem kết quả">
      <input type="submit" name="typeSubmit" value="Xóa">
    </form>
    <p>
      <?php
      if ($flag) {
        echo 'Kết quả: ' . $number1 . ' ' . $calculate . ' ' . $number2 . ' = ' . $result;
      } else {
        echo $result;
      }
      ?>
    </p>
  </div>
</body>
</html>

Cùng phân tích đoạn mã trong tập tin calculator.php:

Để ý sẽ thấy, tập tin mã nguồn bây giờ có phần mở rộng là .php, đoạn mã gồm cả mã HTML, CSS và mã PHP. Mã PHP được bao bằng cặp thẻ <?php ?>. Mã HTML, CSS thì viết bình thường như trong một tập tin .html.

Khi xem nội dung trang web, đường dẫn của trình duyệt sẽ là: http://localhost:8888/hocphp/calculator.php

Nghĩa là, trình duyệt yêu cầu Web Server gửi về nội dung của trang calculator.php, tuy nhiên trình duyệt không thể hiểu được mã nguồn PHP, do vậy Web Server sẽ thông dịch trang calculator.php để tạo ra một tài liệu HTML, quá trình thông dịch được thực hiện theo thứ tự từ trên xuống dưới, từ trái qua phải, rồi gửi tài liệu HTML này về cho trình duyệt. Lưu ý, trong trường hợp này, Web Server chỉ thực sự thông dịch và thực thi các mã lệnh nằm trong cặp thẻ <?php ?>.

Khi người dùng nhập dữ liệu cho Form, bấm nút “Xem kết quả” hoặc “Xóa”, trình duyệt sẽ gửi các dữ liệu của Form về Web Server, cụ thể, gửi về trang được chỉ định trong thuộc tính action của Form. Vì giá trị của action= “#”, nên trang xử lý dữ liệu của Form là chính nó (tức trang calculator.php), đồng thời Web Server sẽ thông dịch lại trang calculator.php và gửi lại cho trình duyệt một lần nữa.

Thuộc tính value của input được sử dụng để thiết lập giá trị cho thẻ input, giá trị này sẽ được gửi về Web Server, được lưu trong biến $_GET, $_POST hoặc $_REQUEST, được tham chiếu tới bởi thuộc tính name.


Để ý sau khi thực hiện submit Form đường dẫn trên trang web sẽ là: http://localhost:8888/hocphp/calculator.php#
-----------
Cập nhật [7/9/2020]
-----------
Xem thêm: