--------------- <> -----------------
--- KHOA HỌC - CÔNG NGHỆ - GIÁO DỤC - VIỆC LÀM ---
--- Học để đi cùng bà con trên thế giới ---

Tìm kiếm trong Blog

Hiển thị các bài đăng có nhãn Truyền tham số giữa các trang web. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Truyền tham số giữa các trang web. Hiển thị tất cả bài đăng

Ngu ngơ học làm web (93) - PDO – fetch_assoc

Tiếp theo của: Ngu ngơ học làm web (92) - PDO - thêm thực đơn
-----

Phần 93. PDO – fetch_assoc


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

Ở các bài trước sử dụng hàm fetchAll() với kiểu là FETCH_OBJ, khi đó kết quả trả về của hàm là một mảng các đối tượng. Ví dụ: $mon_an = $stmt->fetchAll(PDO::FETCH_OBJ);

Phần này sẽ sử dụng hàm fetchAll() với kiểu là FETCH_ASSOC, khi đó kết quả trả về của hàm là một mảng các mẩu tin. Khi đó sẽ truy cập tới các trường theo kiểu sau:  <?php echo $mon_an[$i][ten_mon]; ?> thay vì trước đây là <?php echo $mon_an[$i] -> ten_mon; ?>

Dùng một biến chẵn lẻ kết hợp với CSS để định dạng màu nền xen kẽ giữa các đối tượng. Ví dụ:

[PHP]
for($i = 0; $i < count($mon_an); $i++) {
                        $bg = $i % 2 != 0 ? "le":"";
            ?>

[HTML]
<div class="khung <?php echo $bg; ?>" >

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

[connection.php]

<?php
try
{
            //Khai báo đối tượng PDO
            $pdo = new PDO("mysql:host=localhost;dbname=ql_nha_hang","root","");
            //Xuất tiếng Việt
            $pdo->query("SET NAMES UTF8");
}
catch (PDOException $ex)
{
            die($ex->getMessage());
}
?>

[default.css]

body {  text-align: center;}
h1 { text-align: center; color: #F00;}
#main { width: 750px; border: #f00 solid 1px; background: #fff; display: inline-lock; 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; }

[danh_sach_mon_an.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; ?>" >
                        <img class="cangiua" src="<?php echo $mon_an[$i][hinh]; ?>" alt="Hình">
                        <p class="tenmon"><?php echo $mon_an[$i][ten_mon]; ?></p>
                        <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>

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

Vì lúc thiết kế CSDL, trong bảng khach_hang chưa có cột giới tính (gioi_tinh), nên sẽ thêm vào để làm bài tập này.

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

[connection.php]

Giống các bài tập 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-lock; margin: 0 auto;}
.le { background: #ccc; }
.tieude { background: #FFA31B; font-weight: bold; }
tr:hover { background: #3879D9; }

[danh_sach_khach_hang.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 * FROM khach_hang";
            $stmt = $pdo->prepare($sql);
            $stmt -> execute();
            if($stmt -> rowcount() > 0) {
                        $khach_hang = $stmt -> fetchAll(PDO::FETCH_ASSOC);
            }
?>
<body>
<div id="main">
<table width="700" border="0" cellspacing="5" align="center" style="border-collapse: collapse">
<caption>
            <h1>THÔNG TIN KHÁCH HÀNG</h1>
</caption>
<tr  class="tieude" height = "40px">
            <td>Mã khách</td>
            <td>Họ tên</td>
            <td>Phái</td>
            <td>Địa chỉ</td>
            <td>Điện thoại</td>
            <td>Email</td>
</tr>
<?php
            for($i = 0; $i < count($khach_hang); $i++)
            {
                        $hinh = $khach_hang[$i][gioi_tinh] == 1 ? "nam.png" : "nu.png";
                        $le = $i%2 != 1 ? "le" : "";
?>
            <tr class=<?php echo $le; ?> >
                        <td><?php echo $khach_hang[$i][ma_khach_hang]; ?></td>
                        <td><?php echo $khach_hang[$i][ten_khach_hang]; ?></td>
                        <td><img src="images/<?php echo $hinh; ?> " width="45" height="45"></td>
                        <td><?php echo $khach_hang[$i][dia_chi]; ?></td>
                        <td><?php echo $khach_hang[$i][dien_thoai]; ?></td>
                        <td><?php echo $khach_hang[$i][email]; ?></td>
            </tr>
<?php
}
?>
</table>
<?php
            $pdo->NULL;
?>
</body>

</html>
-----------
Cập nhật 3/3/2017
-----------
Xem thêm:
Tổng hợp các bài viết về Ngu ngơ học làm web