【问题标题】:How to Set a MYSQL Variable Value to 1 when text is clicked in php?在php中单击文本时如何将MYSQL变量值设置为1?
【发布时间】:2012-09-28 01:55:54
【问题描述】:

首先,我对 php 知之甚少,并且仍在学习,所以请对我进行简单的回答。基本上我正在开发一个功能类似于社交网站的项目,用户能够发送和接收私人消息等。我已经让这一切都很好,当你设置变量时,消息甚至会进入 messages_deleted.php 页面数据库中从 '0' 到 '1' 的值。

有没有办法让用户自己做,通过点击一段文字来删除他们自己的消息?

我正在使用 php,所以如果有人有任何想法,我需要一段 php 代码来让我这样做?

这是我当前正在使用的 php 脚本:

<?php


    $page_title = "Messages";
        include('includes/header.php'); 

        confirm_logged_in();

        include ('includes/mod_login/login_form.php');  
    ?>

<div class="modtitle">
  <div class="modtitle-text">Inbox</div>
</div>

<div class="modcontent">

<strong>Inbox</strong> | <a href="messages_sent.php">Sent Messages</a> | <a href="messages_deleted.php">Deleted</a>
<br /><br />
<table width="100%" border="0" cellpadding="5" cellspacing="0">
  <tr bgcolor="#CCCCCC">
    <td width="30%"><strong>Recieved</strong></td>
    <td width="20%"><strong>From</strong></td>
    <td width="28%"><strong>Subject</strong></td>
    <td width="0%"><strong>Read/Unread</strong></td>
      <td width="0%"><strong>Delete</strong></td>
  </tr>
<?php
        $inbox_set = get_inbox();
        while ($inbox = mysql_fetch_array($inbox_set)) {

?>

<?php
 if ($inbox['read'] == 0) { ?>
  <tr bgcolor="#6666B3">
<?php }
 if ($inbox['read'] == 1) { ?>
    <tr>

<?php }  ?>



    <td><?php 



    $datesent1 = $inbox['date_sent'];


    echo "$datesent1"; ?></td>


    <a href="profile.php?id={$inbox['from_user_id']}"><td><?php echo "<a href=\"profile.php?id={$inbox['from_user_id']}\">{$inbox['display_name']}"; ?></td></a>

    <td><?php echo "<strong><a href=\"read_message.php?msg={$inbox[0]}\">{$inbox['subject']}</a></strong>"; ?></td>

    <td><?php   if ($inbox['read'] == 0)  {
                echo "Unread"; 
                }
                if ($inbox['read'] == 1)  {
                echo "Read";
                }
                ?></td>
                <td>
                <?php 
                if ($inbox['delete'] == 0)  {
                echo "Delete";


                }
                 if ($inbox['delete'] == 1)  {
                echo "$deleted_set;";
                }   


                    ; ?></td>



                </td>

<?php
}


?>

</tr>
</table>

</div>

<?php include('includes/footer.php'); ?>

我真正需要的是一种使“删除”行可点击的方法,这样当用户点击它时,它会将值设置为“1”。如果可以那样做,我想对我来说会容易得多。

【问题讨论】:

  • 如果您知道如何将消息存入数据库,那就没什么不同了。如果您仅限于使用 PHP(没有 JavaScript),那么我会将消息列表视图包装在一个表单中,在每条消息前面放置一个复选框,添加一个删除按钮,就像提交一样,用户基本上将此发布到页面,然后循环浏览每条提交的消息并将其删除。

标签: php mysql private messages


【解决方案1】:

是的。这很简单。您可以查看一些在页面上运行的基本 jQuery 和 AJAX。这是 API 的documentation 的链接。

【讨论】:

  • 好的,谢谢。这已经设置好了,所以当用户删除一条消息时,它会被提交到 messages_delete.php 页面,您可以转到已删除的消息以在他们的页面中查看它。但是只有在 mysql 数据库中它们的值设置为 1 时,这些消息才会被删除,我正在寻找一个代码,允许用户在单击删除文本时将此值从 0 设置为 1。谢谢
【解决方案2】:

假设

如果您可以将 jQuery 包含到您的项目中,那么您可以使用 PHP + AJAX 来处理它。假设您有一个 PHP 文件,该文件将消息删除为messages_deleted.php。要删除一条消息,我假设您需要将参数id 传递给脚本,最终以这种方式出现:messages_deleted.php?id=5

还假设您的 PHP 文件中的代码是:

<?php
    mysql_connect();
    if (mysql_query("UPDATE `messages` SET `deleted` = 1 WHERE `id` = " . mysql_real_escape_string($_GET["id"])))
        die ("deleted");
    else
        die ("error");
?>

代码

您可以使用 jQuery 的$.getScript() 为您完成这项工作。

如果消息有效且已删除,您的 PHP 脚本应为die("deleted");。相应调整。

$(document).ready(function(){
    $("table tr").click(function(){
        $.getScript("messages_deleted.php", function(data){
            if (data == "deleted")
                alert("Message Deleted");
        });
    });
});

【讨论】:

  • 我附上了代码,因为它可能会有所帮助。这与您示例中的代码兼容吗?或者你能告诉我需要去哪里吗?谢谢。
  • @MarkTanner 如果您不使用多个&lt;table&gt;,请在几分钟内查看更新的答案。 :)
【解决方案3】:

如果你不想使用 Ajax,你应该创建一个链接,将用户重定向到一个页面,例如 delete_message.php?mid=16 其中 mid 是用户想要删除的消息 id,

然后在服务器端首先检查该消息是否属于要删除它的用户,因此用户无法删除其他人的消息,

然后运行 ​​mysql 代码,应该如下所示:UPDATEmessagesSETdeleted= '1' WHEREid= '16'

希望对您有所帮助,如果您还有其他问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多