-----
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
-----------