2012-10-17 101 views
0

我試過搜索,但沒有找到我的問題的好答案。我有以下代碼爲一個循環:php從一個表循環,然後從另一個表循環

<?php 
$i=0; 
while ($i < $num) { 

$f0=mysql_result($sql,$i,"id"); 
$f1=mysql_result($sql,$i,"title"); 
$f2=mysql_result($sql,$i,"post"); 
?> 

<p><?php echo $f1; ?></p> 
<p><?php echo $f2; ?></p> 
<p>Categories:</p> 

<?php 
$i++; 
} 
?> 

<?php 
$i=0; 
while ($i < $num1) { 
$f3=mysql_result($sql1,$i,"category"); 
?> 

<?php echo $f3; ?> 

<a href="edit.php?id=<?php echo $f0; ?>"><button>Edit</button></a> 

<?php 
$i++; 
} 
?> 

的問題是,它只是循環可達<p>Categories</p>。它不循環類別和編輯零件,它是$f3變量和編輯按鈕。分類表是一個單獨的表,所以我設置了一個不同於查詢表的查詢($sql1)。我如何將這些部分包含到循環中以便它們顯示每個帖子?我試圖將$i++部分移到底部,但這只是向我展示了無限的同一個帖子。感謝您的幫助。

+0

$ num1的值是多少?迴應它。 –

+0

它顯示1,因爲循環中的第一篇文章有​​1個類別分配給它。第二個有2個,這就是我想要顯示的但不工作的。 – robk27

+0

你的第一個循環使用$ num,第二個循環使用$ num1。在使用它之前,你實際上是否回顯$ num1?如果是這樣,它的價值是什麼? –

回答

1

嵌入式循環

<?php 
    $i=0; 
    while ($i < $num) { 

    $f0=mysql_result($sql,$i,"id"); 
    $f1=mysql_result($sql,$i,"title"); 
    $f2=mysql_result($sql,$i,"post"); 
?> 

    <p><?php echo $f1; ?></p> 
    <p><?php echo $f2; ?></p> 
    <p>Categories:</p> 

<?php 
    $j=0; 
    while ($j < $num1) { 
     $f3=mysql_result($sql1,$j,"category"); 
     echo $f3; 
     $j++; 
} 
?> 

<a href="edit.php?id=<?php echo $f0; ?>"><button>Edit</button></a> 

<?php 
$i++; 
} 
?> 
+0

這是有效的,但只有當第一篇文章有​​一個類別分配給它,或者如果$ num1 = 1或更多。如果第一篇文章沒有分配任何類別並且$ num1 = 0,該怎麼辦?我怎樣才能讓第二個循環仍然顯示編輯按鈕? – robk27

+0

我編輯了代碼,以便編輯按鈕可見。 – Udan

+0

謝謝,這使編輯按鈕可見,但它顯示爲第一篇文章所有職位相同的類別。它不檢查每個帖子的類別。 – robk27

0

Udan的答案是正確的,但通過我的類別爲每個職位某種原因,沒有循環。我決定使用不同的循環,並使其工作。如果其他人遇到同樣的問題,請在這裏發帖。

echo "<h2>Posts</h2>"; 
$sql = mysql_query("SELECT id, title, post FROM posts") or die(mysql_error()); 
while ($test = mysql_fetch_array($sql)) {?> 
<table><tr><td><input type="hidden" name="id" value="<?php echo $test['id']; ?>" /></td></tr> 
<tr><td><?php echo $test['title']; ?></td></tr> 
<tr><td><?php echo nl2br($test['post']); ?></td></tr></table> 
<?php 
echo "Categories:"; 
$sql1 = mysql_query("SELECT categories.* FROM categories INNER JOIN post_category ON categories.id=post_category.cat WHERE post_category.post='".$test['id']."'") or die(mysql_error()); 
while ($test1 = mysql_fetch_array($sql1)) {?> 
<table><tr><td><?php echo $test1['category']; ?></td></tr></table> 
<?php 
} 
?> 
<a href="edit.php?id=<?php echo $test['id']; ?>"><button>Edit</button></a> 
<?php 
} 
?>