10/10/2018, 09:54

[HELP] Giúp mình cách hiển tin ra index PHP

Giúp mình hướng giải quyết để hiện tin ra trang index như của thanhnien, tuoitre,...

+ Liệt kê tất cả các chuyên mục ra index & Ở mỗi chuyên mục:

++ Hiện 1 tin mới nhất gồm: (Phần này m biết)
+++ Tiêu đề
+++ Hình ảnh
+++ Tóm tắt

++ Limit 4 tin liên quan đến chủ đề đó (Phần này m biết)
Giờ làm sao để query ra như vậy được nhỉ!?
thuyduongcd viết 11:54 ngày 10/10/2018
Dùng câu truy vấn:
Code:
$sql="SELECT id, title, cat,image,desc FROM  tbl_news ORDER BY date DESC LIMIT 0,1"
Sau khi thực hiện câu truy vấn sẽ được 1 mẩu tin là 1 mảng
$record (id, title, cat, image,desc)
Code:
<?php
echo '<a href="readnews.php?id='.$record['id'].'">'.$record['title'].'</a><br />';// hiện tiêu đề
echo '<img src="'.$record['image'].'" align="left" />'; // hiện hình ảnh
echo $record['desc']; // hiện tóm tắt
// hiện tin cùng loại
$sql="SELECT * FROM tbl_news WHERE cat=".$record['cat']." LIMIT 0,4";
//thực hiện câu truy vấn
//dùng while để lặp và echo như trên
?>
hoichobiet2212 viết 12:10 ngày 10/10/2018
Được gửi bởi thuyduongcd
Dùng câu truy vấn:
Code:
$sql="SELECT id, title, cat,image,desc FROM  tbl_news ORDER BY date DESC LIMIT 0,1"
Sau khi thực hiện câu truy vấn sẽ được 1 mẩu tin là 1 mảng
$record (id, title, cat, image,desc)
Code:
<?php
echo '<a href="readnews.php?id='.$record['id'].'">'.$record['title'].'</a><br />';// hiện tiêu đề
echo '<img src="'.$record['image'].'" align="left" />'; // hiện hình ảnh
echo $record['desc']; // hiện tóm tắt
// hiện tin cùng loại
$sql="SELECT * FROM tbl_news WHERE cat=".$record['cat']." LIMIT 0,4";
//thực hiện câu truy vấn
//dùng while để lặp và echo như trên
?>
Cách này nó đâu lặp các chuyên mục đâu thuyduong

Ý mình là ở trang Index nó hiện thế này nè:

Tên chuyên mục 1
++ Hiện 1 tin mới nhất gồm:
+++ Tiêu đề
+++ Hình ảnh
+++ Tóm tắt
++ Limit 4 tin liên quan đến chuyên mục đó

Tên chuyên mục 2
++ Hiện 1 tin mới nhất gồm:
+++ Tiêu đề
+++ Hình ảnh
+++ Tóm tắt
++ Limit 4 tin liên quan đến chuyên mục đó

Tên chuyên mục 3
++ Hiện 1 tin mới nhất gồm:
+++ Tiêu đề
+++ Hình ảnh
+++ Tóm tắt
++ Limit 4 tin liên quan đến chuyên mục đó

...........
Vấn đề là làm sao WHILE được chuyên mục từ table tbl_catalog, mà trong tbl_news không có tên chuyên mục mà chỉ có id_catalog được lấy từ table tbl_catalog qua.
anhtuannd viết 12:06 ngày 10/10/2018
Trong tbl_news nên có cả tên chuyên mục. Cái này bạn nên nghiên cứu về CSDL theo dạng chuẩn 3 để tối ưu hóa số lượng câu truy vấn.
hoichobiet2212 viết 12:04 ngày 10/10/2018
Được gửi bởi anhtuannd
Trong tbl_news nên có cả tên chuyên mục. Cái này bạn nên nghiên cứu về CSDL theo dạng chuẩn 3 để tối ưu hóa số lượng câu truy vấn.
Vậy nếu ko có tên chuyên mục thì ko hiển thị như ý mình được àh bạn !? :-/
thuyduongcd viết 12:10 ngày 10/10/2018
À hiểu sai ý. Ý bạn muốn hiển thị tất cảc các chuyên mục, mỗi chuyên mục hiện 1 tin mới nhất

Dùng câu truy vấn sau để lấy danh sách các chuyên mục có bài viết:
Code:
$sql="SELECT DISTINCT catid FROM tbl_news";
Truy vấn xong sẽ được 1 mảng (giả sử là $row)
Code:
foreach ($catid as $row){
    $sql="SELECT * FROM tbl_news WHERE catid=$catid LIMIT 0,1";
    //thực hiện truy vấn và echo ra
}
hoichobiet2212 viết 12:08 ngày 10/10/2018
Được gửi bởi thuyduongcd
À hiểu sai ý. Ý bạn muốn hiển thị tất cảc các chuyên mục, mỗi chuyên mục hiện 1 tin mới nhất

Dùng câu truy vấn sau để lấy danh sách các chuyên mục có bài viết:
Code:
$sql="SELECT DISTINCT catid FROM tbl_news";
Truy vấn xong sẽ được 1 mảng (giả sử là $row)
Code:
foreach ($catid as $row){
    $sql="SELECT * FROM tbl_news WHERE catid=$catid LIMIT 0,1";
    //thực hiện truy vấn và echo ra
}
duong ơi nói rõ hơn giúp mình với, m làm mà nó chẳng hiện j cả
anhtuannd viết 11:55 ngày 10/10/2018
Được gửi bởi hoichobiet2212
Vậy nếu ko có tên chuyên mục thì ko hiển thị như ý mình được àh bạn !? :-/
Nếu không có tên chuyên mục, thì mỗi mục sẽ tốn thêm 1 query
thuyduongcd viết 12:09 ngày 10/10/2018
Giả sử
tbl_news gồm (id, title, catid, image, desc) : catid chính là id của chuyên mục tương ứng bên tbl_category
tbl_category gồm (id, name)

Code:
<?php
$result=mysql_query("SELECT DISTINCT catid FROM tbl_news"); // truy vần để lấy danh sách các chuyên mục có bài viết
while ($row=mysql_fetch_array($result)){
    $category=$row[0];
    $sql="SELECT *,name FROM tbl_news, tbl_category WHERE tbl_news.catid=$category AND tbl_category.id=$category LIMIT 0,1";
    $subresult=mysql_query($sql);
    $subrow=mysql_fetch_array($subresult);
    echo "<b>Categroy: ".$subrow['name']."</b><br />";// Tên chuyên mục
    echo '- '.$subrow['title'].'<br />';
    echo '- '.$subrow['image'].'<br />';
    echo '- '.$subrow['desc'].'<br />';
}

?>
hoichobiet2212 viết 12:03 ngày 10/10/2018
Ok là theo cách này mới được hi. Thank thuyduong nhiều nha!!!!!

Mà sao mình đưa thêm code limit 4 bài viết liên quan vào vòng WHILE của code này thì nó chỉ hiện ra 1 chuyên mục thôi mà ko lặp cho hết chuyên mục nhỉ!??

PHP Code:
<?php
$result
=mysql_query("SELECT DISTINCT catid FROM tbl_news"); // truy vần để lấy danh sách các chuyên mục có bài viết
// Bắt đầu lặp lấy chuyên mục
while ($row=mysql_fetch_array($result)){
    
$category=$row***91;0***93;;
    
$sql="SELECT *,name FROM tbl_news, tbl_category WHERE tbl_news.catid=$category AND tbl_category.id=$category LIMIT 0,1";
    
$subresult=mysql_query($sql);
    
$subrow=mysql_fetch_array($subresult);
    echo 
"<b>Categroy: ".$subrow***91;'name'***93;."</b><br />";// Tên chuyên mục
    
echo '- '.$subrow***91;'title'***93;.'<br />';
    echo 
'- '.$subrow***91;'image'***93;.'<br />';
    echo 
'- '.$subrow***91;'desc'***93;.'<br />';

    echo 
'Tin bài liên quan';
    
// Hiện các bài liên quan 
    // Thực hiện truy vấn
    // Lấy ra 4 bản tin khác với tin đang xem bằng cách dùng $subrow***91;'catid'***93; 
    // $subrow***91;'catid'***93; lấy ở trên xuống là id của tin hiện tại khi thực hiện xong truy vấn trên.
    
$query "SELECT * FROM tbl_news WHERE (catid =".$subrow***91;'catid'***93;." AND (".$subrow***91;'newsid'***93;." < newsid OR ".$subrow***91;'newsid'***93;." > newsid)) ORDER BY ngaydang DESC LIMIT 0,5";
    
$result mysql_query($query);
    
$record mysql_fetch_assoc($result);
    
$i=1;
    
// Bắt đầu lặp lấy tin bài liên quan
    
while ($record mysql_fetch_assoc($result)) {    
?>
        <a href="index.php?trang=viewnews&id=<?php echo $record***91;'newsid'***93;; ?>"> <?php echo $record***91;"tieude"***93;; ?></a> (<?php echo $record***91;"ngaydang"***93;; ?>)
<?php 
        $i
++;
        
    } 
// While lặp tin liên quan
    
// While lặp chuyên mục
?>
Kô biết mình viết như vậy đã đúng chưa!? ^^
Bài liên quan
0