0

我有以下代码:

while ($content = mysql_fetch_array($content2)){  
    echo $content[0];  
    session_start();  
    $_SESSION['content'] = $content[0];  
    ?>  
    <br />    
    <a href="edit.php"> Edit post. </a>  
    <br /> <br />  
    <?php  
}

它从博客系统数据库中获取并显示所有帖子,您可以单击“编辑”。在每个帖子下方。我想要做的是将该帖子的内容传递给我的 edit.php 脚本。
问题是,无论我点击哪个“编辑”按钮,这将始终传递我上一篇文章的内容,而不是那个“编辑”按钮上方的帖子内容。
现在,我明白为什么会这样了:整个循环将在我单击任何按钮之前执行,并且存储在 $_SESSION['content'] 中的值将始终是循环最后一次迭代的值。我对吗?

也许我不应该使用 SESSION。有更好的方法吗?如何将 $content[0] 的“正确”值传递给我的 edit.php 脚本?

4

3 回答 3

2

编辑按钮总是获得最后一篇文章的原因是因为您在每个循环的会话中都覆盖了内容变量。

我不确定您从数据库中获得了哪些信息,但是对于您在数组中抓取的每个帖子,您应该在数据库中拥有一个唯一的 ID。如果这不存在,我强烈建议在您的表格中进行更改,因为它会简化您的流程。

while ($content = mysql_fetch_assoc($content2))
{  
    echo $content['postText'] . "<br />";  
    echo '<a href="edit.php?postId=' . $content['postId'] . '"> Edit post. </a><br /><br />';  
}

然后,您必须设置编辑页面以获取 id$_GET['postId']并从数据库中获取正确的内容。

于 2012-06-24T17:00:58.897 回答
1

你的代码必须改进,你的逻辑不好。首先,您不需要使用会话 var,另一种方法是使用 GET 参数传递帖子 ID,如下所示:

while ( $content = mysql_fetch_array($content2) )
{  
    $post_content = $content[0];
    $post_id      = $content[1];

    echo $post_content . '<br /> <a href="edit.php?postId=' . $post_id . '"> Edit post. </a> <br /> <br />';
}

然后,edit.php您将检索$_GET['postId']并加载要更新的帖子内容。

于 2012-06-24T17:06:32.163 回答
0

如果您准备好使用 GET 命令,这将是您最好的选择。请参阅下面的代码:

$content = mysql_fetch_array($content2);
foreach($content as $key => $val) {
echo "<a href=edit.php?id=$val['id']>$val['name']</a>";
}

只是一个快速修复。

将 $val['id'] 替换为 uniqueID 的列名,将 $val['name'] 替换为帖子的列名。

于 2012-06-24T17:04:00.603 回答