我在while循环中从MySQL获取数据。当用户点击任何记录时,我在颜色框中显示其细节,即id = 2.现在在这个颜色框中,我想运行一个查询,即WHERE id = 2。我面临的问题是我的代码一次执行所有查询,因为颜色框在while循环中。如何在while循环之外运行MySQL查询,因为我无法在循环外访问id。请检查下面的代码,
<?php
$sql_msg = "SELECT * FROM messages";
$res_msg = mysql_query($sql_msg);
while($row = mysql_fetch_array($res_msg))
{
$id = $row['id'];
$title = $row['title'];
echo "<a href='#$id'><li>$title</li></a>";
?>
<div style='display:none'> // Color box popup window
<div id='<?php echo $id; ?>'>
<?php
$Update_msg = mysql_query("UPDATE `messages` SET `read` = 1 WHERE `id` = $id AND `read` = 0");
?>
</div>
</div>
<?php } ?> // While Loop End
我只想更新弹出窗口数据的记录
答案 0 :(得分:5)
把:
$Update_msg = mysql_query("UPDATE `messages` SET `read` = 1 WHERE `id` = $id AND `read` = 0");
在while循环之外。单击时,使用ajax调用php文件并进行更新。
答案 1 :(得分:1)
这样可行。但它会重新加载整个页面,只是概述你应该/可以做什么。
请勿在您的系统中使用未经审核的此代码,如果它是公共可访问的。
您还应该考虑使用mysqli并根据需要更改代码以获取ajax请求。 如果文件以某种方式公开,您还应确保更新数据库的文件得到妥善保护。
messages.php (假设您的文件名称相同):
<ul>
<?php
$sql_msg = "SELECT * FROM messages";
$res_msg = mysql_query($sql_msg);
// Using ":" syntax is common practice while mashing up
// php and html source code.
while ($row = mysql_fetch_assoc($res_msg)):
$id = $row['id'];
$title = $row['title'];
// I only assume, that this column contains
// your details.
$detail = $row['detail'];
// Update the message and mark it as read. The update query runs
// against the server anyway, so the "`read` = 0" is unncessary
// in terms of performance.
$update_msg = mysql_query("UPDATE `messages` SET `read` = 1 WHERE `id` = " . $id);
?>
<li>
<a href="#<?php echo $id; ?>"><?php echo $title; ?></a>
</li>
<div style='display:none'><!-- Color box popup window -->
<div id='<?php echo $id; ?>'>
<?php
echo $detail;
?>
<a href="mark_as_unread.php?id=<?php echo $id; ?>">Mark as unread</a>
</div>
</div>
<?php
endwhile; // While Loop End
?>
</ul>
_mark_as_unread.php:
<?php
$id = isset($_GET['id']) ? intval($_GET['id']) : NULL;
if (!$id) {
echo 'Bad request.';
exit;
}
$sql = "UPDATE `messages` SET `read` = 0 WHERE `id` = " . $id;
$result = mysql_query($sql);
echo ($result ? 'Success.' : 'Error.');
?>
答案 2 :(得分:0)
看看它:
将post变量$ id发送到php文件
https://api.jquery.com/jQuery.post/
php文件从页面获取$ id,然后在mysql数据库中更新并从文件返回true http://pl1.php.net/manual/en/reserved.variables.get.php
并从php文件更新类CSS
返回结果数据时api.jquery.com/addclass /
祝你好运答案 3 :(得分:0)
我在另一个页面中运行查询并通过ajax传递ID并获得我的解决方案
<script>
function myFunction(msg)
{
$.ajax
({
type: "POST",
url: "updatefile.php?id="+msg
});
}
</script>