打开颜色框时运行MySql查询

时间:2014-03-03 21:16:21

标签: php mysql colorbox

我在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

我只想更新弹出窗口数据的记录

4 个答案:

答案 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>