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
}
?>
hithere viết 15:39 ngày 10/10/2018
Chạy limit 1, hoặc 6, ... xem có trường trắng ở cuối không
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
Vô Thin viết 15:44 ngày 10/10/2018
Chủ topic hình như quên mất trong toán học và tin học người ta thường bắt đầu từ zero (số không) thay vì 1.

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.
test0101 viết 15:44 ngày 10/10/2018
các hàm general_query, resizeImage, overview_after_remove_image mình viết sẵn.
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>
Vô Thin viết 15:47 ngày 10/10/2018
test0101 có chạy thử câu lệnh:

PHP Code:
select from articles where approved=1 order by timestamp DESC limit 5 
trong phpMyAdmin không? Nó ra được bao nhiêu biểu ghi, 5 hay 6?

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 đề.
vchweb viết 15:36 ngày 10/10/2018
Bạn có thể chỉnh từ câu query, kiểm ra kỹ lại kết quả ra bao nhiêu.
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ả
Bài liên quan
0