2012-10-17 100 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 
} 
?>