09/10/2018, 23:30
[PHP] Hỏi về việc trình bày dữ liệu.
Sau khi truy vấn mình muốn trình bày dữ liệu như sau: trên khung bên phải của trang web, mỗi hàng sẽ có 2 hoặc 3 sản phẩm (bao gồm tên, ảnh, giá tiền) ví dụ:
Mình đã làm mọi cách nhưng chỉ có thể thị mỗi sản phẩm ở 1 dòng, sản phẩm sau lại ở phía dưới sản phẩm trước.
Đoạn code hiển thị của mình như sau:
Bạn nào biết thuật toán hiển thị thì giúp mình với. Xin cảm ơn.
Mình đã làm mọi cách nhưng chỉ có thể thị mỗi sản phẩm ở 1 dòng, sản phẩm sau lại ở phía dưới sản phẩm trước.
Đoạn code hiển thị của mình như sau:
PHP Code:
$sql="select * from $tb_product";
$result=mysql_query($sql,$conn);
if (mysql_num_rows($result)!=0)
{
while ($row=mysql_fetch_array($result))
{
$itemid=$row***91;'product_id'***93;;
$product_name=$row***91;'product_name'***93;;
$product_type=$row***91;'product_type'***93;;
$product_image=$row***91;'product_image'***93;;
$product_price=$row***91;'product_price'***93;;
$product_date_added=date('m-d-Y',$row***91;'product_date_added'***93;);
$product_status=$row***91;'product_status'***93;;
$product_des=$row***91;'product_des'***93;;
echo "<div>";
echo "<table width="228">";
echo "<tr>";
echo "<td align="center"><b>$product_name</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td align="center"><img src="$product_image"></td>";
echo "</tr>";
echo "<tr>";
echo "<td align="center">$product_price</td>";
echo "</tr>";
echo "<tr>";
echo "<td align="right"><a href="tocart.php?itemid=$itemid" class="mtext"><img
src="image/tocart.jpg" border="0"></a> <a href="productdetail.php?itemid=$itemid" class="mtext"><img
src="image/readmore.jpg" border="0">";
echo "<td>";
echo "</tr>";
echo "</table>";
echo "</div>";
Bài liên quan
Lỗi 1: Câu SQL không có order.
Lỗi 2: Echo: Không hiểu PHP là ngôn ngữ multiline.
Lỗi 3: Mix PHP, SQL với HTML
Lỗi 4: Table và Div là block. Phải để float và chú ý đến IE width bug nếu không các block sẽ tuân theo đúng trật tự xếp đặt thông thường
một số điều em thường lưu ý đó là
- nếu trong chuỗi không có biến thì dùng dấu nháy đơn để bao lấy chuỗi thì bộ parser sẽ chạy nhanh hơn là dùng dấu nháy kép
- khi dùng echo để viết HTML thì cũng nên dùng nháy đơn, sẽ dễ nhìn hơn nhiều . nhưng dần dần nên tìm hiểu về 1 cái template engine như Smarty
nếu có lỗi syntax thì thông cảm nha
<?php
$sql = "select * from $tb_product";
$result = mysql_query($sql, $conn);
$products = array();
while ($row = mysql_fetch_array($result)) {
$products***91;***93; = array (
'id' => $row***91;'product_id'***93;,
'name' => $row***91;'product_name'***93;,
'image' => $row***91;'product_image'***93;
/* tiep */
);
}
$totalProducts = count($products);
$noOfCols = 3; //số sản phẩm mỗi dòng
$noOfRows = ( ($totalProducts % $noOfCols) == 0 ) ? ($totalProducts / $noOfCols) : (int)($totalProducts / $noOfCols) + 1;
if ($totalProducts > 0) {
echo '<table width="600">';
// lặp qua các dòng
for ($rowCounter = 1; $rowCounter <= $noOfRows; $rowCounter++) {
echo '<tr>';
// lặp qua các cột
for ($colCounter = 1; $colCounter <= $noOfCols; $colCounter++) {
echo '<td width="200">';
// tính toán ra cái index của product trong mảng products
$productIndex = (($rowCounter - 1) * $noOfCols) + $colCounter - 1;
// chỉ hiển thị product nếu index của nó vẫn còn trong mảng products;
if ($productIndex < ($totalProducts - 1)) {
$product = $products***91;$productIndex***93;;
echo '
<a href="showProduct.php?id=' . $product***91;'id'***93; . '">' . $product***91;'name'***93; . '</a><br />
<img src="' . $product***91;'image'***93; . '" />';
} else {
echo ' ';
}
echo '</td>';
} // lặp các cột
echo '</tr>';
} // lặp qua các dòng
echo '</table>';
}
?>
<!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>Untitled Document</title>
<style type="text/css">
<!--
#item {
list-style-type: none;
}
#item li {
float: left;
height: 100px;
width: 100px;
background-color: #FFFF66;
border: 1px solid #330066;
}
-->
</style>
</head>
<body>
<div style="width:400px; display:block; background:#330066">
<ul id="item">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
<br clear="all" />
</div>
</body>
</html>
Nên kiểm tra trên các trình đuyệt để dảm bảo layout không loạn lên .
Tôi đã thử làm nhiều site với CSS và Table tuy nhiên cứ nhìn IE ngon mắt rồi chuyển sang Firefox là ý như rằng lại bị vỡ và ngược lại.
Cứ như kiểu tính kích thước của 2 thằng nó không khớp nhau hay sao đó.