【问题标题】:javascript lightbox causes error when updating mysql table更新mysql表时javascript灯箱导致错误
【发布时间】:2014-01-14 17:47:38
【问题描述】:

我用 php 为我的博客创建了一个评论回复系统。评论存储在一个名为 cmets(cmets_id, comment, comment_date, user, flag) 的表中。我使用了一个显示 cmets 的脚本,并且在每个评论附近都有一个名为“delete”的链接,以便用户删除自己的评论以防万一。

我用于显示 cmets 的 php 脚本是:

<?php

// ... above code

$comments .= $row['comment']; // comment printed succesfully here

if($comment_user_id == $session_user_id){

$comments .="<table border='1' style='display:inline-table;'><td><h2><font size='2'>

    <form action='deletepost.php' method='post'>
        <input type='hidden' name='var' value='$comment_id;'>
        <input type='submit' value='delete'>
    </form>

</h2></font></td></table>";                 
}
?>

为了删除评论,我更新了表 cmets 并设置了 flag=1,因此我的脚本不会在表中显示其 flag=1 的 cmets。为了做到这一点,我使用脚本 deletepost.php

<?php  

$comment = mysql_real_escape_string($_POST['var']);

if(isset($comment) && !empty($comment)){
    mysql_query("UPDATE `comments` SET `flag`=1 WHERE (`user`='$session_user_id' AND `comments_id`='$comment')");
    header('Location: wall.php');
}           

?>

到目前为止,我的脚本完美无缺,发表评论的用户可以删除自己的评论而不会出现任何错误。当我决定在 javascript 中插入一个灯箱时,问题就开始了,这样在删除评论之前会询问用户。所以我将我的第一个脚本更改为以下内容:

<?php
// ... above code

$comments .= $row['comment']; // comment printed succesfully here

if($comment_user_id == $session_user_id){
  $comments .="<table border='1' style='display:inline-table;'><td><h2><font size='2'>

// at this point problem occurs when inserting javascript lightbox

  <a href = javascript:void(0) onclick = document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'><h2><font color=green size=3>Delete All</font></h2></a>
  <div id=light class=white_content>DELETE THIS COMMENT?

  <form action='deletepost.php' method='post'>
    <input type='hidden' name='var' value='$comment_id;'>
    <input type='submit' value='delete'>
  </form>

<a href = javascript:void(0) onclick = document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'><div id=pading><button>Cancel</button></div></a></div>
<div id=fade class=black_overlay></div>         

</h2></font></td></table>";

}
?>

通过使用如上所示的javascript灯箱,当用户按下删除时,灯箱会启动并询问用户是否要删除评论。问题是现在当用户按下删除按钮时,它不是删除某个评论,而是在 cmets 表 中找到的最后一条评论。可能我需要在我的 javascript 中编写其他内容来更正此问题,以便知道要删除哪个评论(将其标志设置为 1)。知道如何解决吗?

【问题讨论】:

    标签: javascript php


    【解决方案1】:

    确保“deletepost.php”获得了您想要删除的正确评论 id($comment)。

    这可能是原因。

    【讨论】:

    • 如果我不在 javascript 中使用灯箱,它会成功运行。我已经测试过了。当我使用 javascript 时,问题就开始了。
    • 可能需要在我的 javascript 中定义其他内容以免混淆
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2013-11-09
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多