如何根据用户点击的按钮在$ _SESSION中存储正确的值?

时间:2012-06-24 16:43:04

标签: php mysql html

我有以下代码:

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脚本?

3 个答案:

答案 0 :(得分: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']并从数据库中获取正确的内容。

答案 1 :(得分: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']并加载要更新的帖子内容。

答案 2 :(得分: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']替换为帖子的列名。