Ngu ngơ học làm web (94) - PDO – Truyền tham số giữa các trang

Tiếp theo của: Ngu ngơ học làm web (93) - PDO - fetch_assoc
-----

Phần 94. PDO – Truyền tham số giữa các trang


Xem và làm theo clip số 21 của thầy Nguyễn Anh Tuấn:

Để truyền tham số giữa các trang, sử dụng thẻ <a>, đi kèm là một liên kết tới trang khác và một tham số (key). Bản chất ở đây là khi người dùng bấm vào liên kết, liên kết sẽ dẫn người dùng tới một URL mới, gửi kèm là một lệnh GET với dữ liệu cần gửi đi. Ví dụ:

<a href="chitietmonan.php?key=<?php echo $mon_an[$i][ma_mon]; ?>"><img class="cangiua" src="<?php echo $mon_an[$i][hinh]; ?>" alt="Hình"></a>

<a href="chitietmonan.php?key=<?php echo $mon_an[$i][ma_mon]; ?>"><p class="tenmon"><?php echo $mon_an[$i][ten_mon]; ?></p></a>

Cách truyền tham số cho câu truy vấn:

$ma_mon = $_GET["key"];
            $sql = "SELECT * FROM mon_an WHERE ma_mon = ?";
            $stmt = $pdo->prepare($sql);
            $param = array($ma_mon);
            $stmt->execute($param);

Để lấy một mẩu tin trong PDO:

$mon_an = $stmt->fetch(PDO::FETCH_OBJ);

Ghi lại đoạn mã để tham khảo.

[connection.php]

Giống các bài trước.

[default.css]

body {  text-align: center;}
h1 { text-align: center; color: #F00;}
#main { width: 750px; border: #f00 solid 1px; background: #fff; display: inline-block; margin: 0 auto;}
.khung { width: 200px; height: 300px; border: #999 solid 1px; padding: 10px; margin: 10px; float: left;
}
img.cangiua {  display: block; margin-left: auto; margin-right: auto; }
.khung img { width: 150px;}
.tenmon { text-align: center; font-weight: bold;}
.gia {    color: #D98A17;}
.le { background: #ccc; }

[chitietmonan.php]

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Chi tiết món ăn</title>
            <link rel="stylesheet" href="default.css">
</head>
<?php
            include('connection.php');
            $ma_mon = $_GET["key"];
            $sql = "SELECT * FROM mon_an WHERE ma_mon = ?";
            $stmt = $pdo->prepare($sql);
            $param = array($ma_mon);
            $stmt->execute($param);
            $mon_an = $stmt->fetch(PDO::FETCH_OBJ);
?>
<body>
            <div id="main">
                        <h1>CHI TIẾT MÓN ĂN</h1>
                        <div class="khung">
                                    <img src="<?php echo $mon_an->hinh; ?>">
                                    <h3><?php echo $mon_an->ten_mon; ?></h3>
                                    <?php echo $mon_an->noi_dung_tom_tat; ?>
                                    <p class="gia">Giá:<?php echo number_format($mon_an->don_gia); ?> VNĐ</p>
                                    <p align="right"><a href="truyen_tham_so.php">Danh sách món ăn</a></p>
                        </div>
            </div>
</body>
</html>

[truyen_tham_so.php]

<!DOCTYPE html>
<html lang="en">
<head>
            <meta charset="UTF-8">
            <title>Danh sách món ăn</title>
            <link rel="stylesheet" href="default.css">
</head>
<?php
            include("connection.php");
            $sql = "SELECT ma_mon,ten_mon,noi_dung_tom_tat,don_gia,hinh FROM mon_an";
            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            if($stmt->rowcount() > 0){
                        $mon_an = $stmt->fetchAll(PDO::FETCH_ASSOC);
            }
?>
<body>
<div id="main">
            <h1>Danh sách món ăn  </h1>
            <?php
            for($i = 0; $i < count($mon_an); $i++) {
                        $bg = $i % 2 != 0 ? "le":"";
            ?>
            <div class="khung <?php echo $bg; ?>" >
                        <a href="chitietmonan.php?key=<?php echo $mon_an[$i][ma_mon]; ?>"><img class="cangiua" src="<?php echo $mon_an[$i][hinh]; ?>" alt="Hình"></a>
                        <a href="chitietmonan.php?key=<?php echo $mon_an[$i][ma_mon]; ?>"><p class="tenmon"><?php echo $mon_an[$i][ten_mon]; ?></p></a>
                        <p><?php echo $mon_an[$i][noi_dung_tom_tat]; ?></p>
                        <p class="gia">Giá:<?php echo number_format($mon_an[$i][don_gia]); ?> VNĐ</p>
            </div>
            <?php
            }
            ?>
</div>
<?php
            $pdo->NULL;
?>
</body>
</html>


Ghi chú: để đỡ mất thời gian, trang chitietmonan.php sử dụng luôn CSS của trang truyen_tham_so.php nên giao diện rất xấu.
-----------
Cập nhật 21/5/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web
Ngu ngơ học làm web (95) - PDO – Phân trang