10/10/2018, 13:33
xem giúp mình đoạn code nho nhỏ này với GẤP LẮM
Mục đích của mình như sau:
- Trong CSDL có rất nhiều bài viết
- chỉ hiện ra danh sách 5 tin bài mới nhất cho người xem trên giao diện
mình có đoạn code sau, nhưng khi chạy thì nó lại hiện thị tới 6 tin bài (mặc dù câu lệnh sql mình đã limit là 5), trong đó bản ghi cuối cùng (tin số 6) toàn hiện thị trắng tinh, không có giá trị gì cả, Giúp mình xem lỗi ở đâu nhé, tìm đủ kiểu mà không biết sai ở đâu
<?php
$sql_3hotnews = "select * from articles where approved=1 order by timestamp DESC limit 5";
$childResult_3hotnews = general_query($sql_3hotnews);
while ($row_3hotnews= mysql_fetch_row($childResult_3hotnews))
{
echo $row_3hotnews[1]; //tiêu đề tin bài
}
?>
- Trong CSDL có rất nhiều bài viết
- chỉ hiện ra danh sách 5 tin bài mới nhất cho người xem trên giao diện
mình có đoạn code sau, nhưng khi chạy thì nó lại hiện thị tới 6 tin bài (mặc dù câu lệnh sql mình đã limit là 5), trong đó bản ghi cuối cùng (tin số 6) toàn hiện thị trắng tinh, không có giá trị gì cả, Giúp mình xem lỗi ở đâu nhé, tìm đủ kiểu mà không biết sai ở đâu
<?php
$sql_3hotnews = "select * from articles where approved=1 order by timestamp DESC limit 5";
$childResult_3hotnews = general_query($sql_3hotnews);
while ($row_3hotnews= mysql_fetch_row($childResult_3hotnews))
{
echo $row_3hotnews[1]; //tiêu đề tin bài
}
?>
Bài liên quan
Mình không chắc chắn nhưng thử xem trong bảng articles có trường trắng đó không, xóa đi rồi chạy thử lại
Hoặc mình có thể dùng giải pháp tình thế là cho vòng lặp chạy đến 5 thôi
Cho nên, chỉ cần chỉnh lại chút xíu:
DESC limit 5 => DESC LIMIT 0, 5
Thực ra thì DESC limit 5 không hề sai. Nhưng tốt hơn hết là test câu Query ở command line của MySQL hoặc dùng phpMyAdmin kiểm tra thử thế nào.
Không có bản ghi trắng trong csdl và câu lệnh DESC limit 5 là cú pháp MYsql.
và nguyên bản câu lệnh mình là:
<div id="slideShow">
<div id="slideShowItems">
<?php
$sql_3hotnews = "select * from articles where approved=1 order by timestamp DESC limit 5";
$childResult_3hotnews = general_query($sql_3hotnews);
while ($row_3hotnews= mysql_fetch_row($childResult_3hotnews))
{
$image_hotnews=resizeImage($row_3hotnews[6],305,240);
$summary=overview_after_remove_image($row_3hotnews[6]);
$summary = trim(strip_tags($summary,'<p><a>')); // loai bo cac ky tu la the HTML
if ($image_hotnews!="") $summary = substr($summary,0,600); // lay 500 ky tu dau tien cua summary
else $summary = substr($summary,0,1000); // lay 1000 ky tu dau tien cua summary
$summary = substr($summary, 0, strrpos($summary, ' ')). '...'; // lay nguyen chu cho day du y nghia
?>
<div align="justify" style="position:relative; left:4px;right:3px;top:8px;">
<a class="content_1" href=?NewsId=<?php echo $row_3hotnews[0];?>&CatId=<?php echo $row_3hotnews[5];?>>
<?php echo $row_3hotnews[1]; //tieu de tin ?>
</a>
<p align="justify">
<a class="content_1" href=?NewsId=<?php echo $row_3hotnews[0];?>&CatId=<?php echo $row_3hotnews[5];?>>
<?php echo $image_hotnews ?>
</a>
<?php echo $summary;//summary ?>
</p>
</div>
<?php
}
free_result_mysql($childResult_3hotnews);
?>
</div>
</div>
select * from articles where approved=1 order by timestamp DESC limit 5
Túm lại là general_query nên được trình bày code lên đây để xem, hẳn nó có vấn đề.
Hoặc bạn giữ lại câu query ban đầu và dùng dòng for cho chạy từ 0 -> 4 để show kết quả