2016-01-23 50 views
0

我有兩個表「類別」和「帖子」,我試圖創建一個category.php頁面,顯示不同類別的帖子標題作爲原始帖子的鏈接。我嘗試過不同的循環變化,但似乎無法做到。我希望有人能指出我的方向。正確的PHP循環顯示帖子類別

$query = "SELECT post_id, title, body, category_id, posted 
     FROM posts 
     INNER JOIN categories ON categories.category_id = posts.category_id"; 

$result = mysqli_query($dbc, $query) 
     or die('Error querying database.'); 

while ($row = mysqli_fetch_array($result)){ 
      <a href='index.php?id=<?php echo $post['post_id']; ?>' ><?php echo $post['title']; ?></a></h2> 
<p> 
    Posted on <?php echo date('d-m-y h:i:s',strtotime($post['date_posted'])); ?> 
    In <a href='category.php?id=<?php echo $post['category_id']; ?>' ><?php echo $post['name']; ?></a> 
</p> 
    echo "<hr />"; 
} 

謝謝你的任何輸入

+0

你得到什麼輸出的權利嗎? – mjk

+0

'while($ row = mysqli_fetch_array($ result)){'但訪問'$ post'。你確定? –

+0

PHP中的Html – devpro

回答

-1

有HTML代碼中<?php ?>試試這個:

<?php $query = "SELECT post_id, title, body, category_id, posted 
     FROM posts 
     INNER JOIN categories ON categories.category_id = posts.category_id"; 

$result = mysqli_query($dbc, $query) 
     or die('Error querying database.'); 

while ($row = mysqli_fetch_array($result)){ ?> 
      <a href='index.php?id=<?php echo $post['post_id']; ?>' ><?php echo $post['title']; ?></a></h2> 
<p> 
    Posted on <?php echo date('d-m-y h:i:s',strtotime($post['date_posted'])); ?> 
    In <a href='category.php?id=<?php echo $post['category_id']; ?>' ><?php echo $post['name']; ?></a> 
</p> 
    echo "<hr />"; 
<?php } ?> 
+0

錯了我的朋友 – devpro

+0

有什麼不對? – YounesM

+0

兄弟這是$行不是$ post ....以及我不是downvoter。 :) – devpro

0

請原諒我的語法(這可能是斷位),但是這應該給你一個好主意:

$categories = array(
    'sports' => array(
     post1, 
     post2, 
    ), 
    'weather' => array(
     post1, 
     post2, 
    ), 
); 

先取得你所有的類別,然後循環遍歷每一個,與該類別相關的職位。然後,您可以像平常一樣循環訪問陣列:

foreach($categories as $category){ 
    //display category title 
    foreach($category['posts'] as $post){ 
     //display post info 
    } 
} 
0

您的代碼中存在一些問題。

修改後的代碼:

$query = "SELECT post_id, title, body, category_id, posted FROM posts INNER JOIN categories ON categories.category_id = posts.category_id"; 

$result = mysqli_query($dbc, $query) or die('Error querying database.'); 

while ($row = mysqli_fetch_array($result)){ 
?> 

<a href="index.php?id=<?php echo $row['post_id']; ?>" > 

<?php echo $row['title']; ?></a></h2> <p> 
Posted on 
<?php 
echo date('d-m-y h:i:s',strtotime($row['date_posted'])); 
?> 

In 
<a href="category.php?id=<?php echo $row['category_id']; ?>"> 

<?php 
echo $row['name']; 
?></a> </p> 
<hr /> 
<?php } ?> 

問題:用單引號內的單引號使用

  • 數組索引。
  • 使用信息的錯誤變量。
  • 的PHP
+0

在這種情況下,您可以使用單引號。您每次打開和關閉php標記...不影響... – guillemp

1

裏面的html標記您使用的是被稱爲$post while循環中的變量,但您檢索在while循環每一行成一個變量,名爲$行。

解決這個問題,你的許多問題將會消失。

您還需要當你想在你已經在這裏做的方式輸出HTML停止和啓動PHP解釋器,請注意?><?php我addded

$query = "SELECT post_id, title, body, category_id, posted 
     FROM posts 
     INNER JOIN categories ON categories.category_id = posts.category_id"; 

$result = mysqli_query($dbc, $query) 
     or die('Error querying database.'); 

// change this to use a variable called $post 
while ($post = mysqli_fetch_array($result)){ 
?> 

    <a href='index.php?id=<?php echo $post['post_id']; ?>' ><?php echo $post['title']; ?></a> 

    <!-- Dont think this should be here --> 
    </h2> 

    <p>Posted on <?php echo date('d-m-y h:i:s',strtotime($post['date_posted']));?>In <a href='category.php?id=<?php echo $post['category_id']; ?>' ><?php echo $post['name']; ?></a> 
    </p> 

<?php 
    echo "<hr />"; 
} 
?> 
+0

感謝您的幫助和更正,我已經修復了您建議的代碼,但現在我得到了通知:未定義索引:類別 – Solano

+0

什麼是error_reporting設置在... http:// stackoverflow。com/q/4465728 – Drew

+0

我看不到任何地方在這個代碼中'類別'的數組索引正在使用你的意思是'category_id' – RiggsFolly