【问题标题】:how to save hide/show attribute to database?如何将隐藏/显示属性保存到数据库?
【发布时间】:2014-07-23 09:45:14
【问题描述】:

我正在尝试在我的网站中创建一个 cmets 部分。并且用户 cmets 存储在数据库中。下面是我的数据库结构:

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(128)     | YES  |     | NULL    |                |
| comment  | text             | NO   |     | NULL    |                |
| post_id  | int(10)          | NO   |     | NULL    |                |
| status   | tinyint(1)       | NO   |     | NULL    |                |
| created  | datetime         | YES  |     | NULL    |                |
| modified | datetime         | YES  |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

如何在我的数据库中保存评论被隐藏或显示?

为了清楚起见,这里是场景和我想要实现的目标:

用户:输入评论然后提交,评论然后保存。 status 值为 1 表示显示评论。

管理员(决定评论不合适):隐藏评论状态值应该是0意味着评论现在被隐藏了。

我该怎么做?目前我所能做的就是 jquery.hide() 和 .show(),但是当页面重新加载或刷新时会显示?任何帮助建议都非常感谢

jQuery

$(".hide_comment").click(function() {
    var id = $(this).data('id');
    console.log($(this).data('id'));
    $('#comment-' + id).hide();
});

$(".show_comment").click(function() {
    var id = $(this).data('id');
    console.log($(this).data('id'));
    $('#comment-' + id).show();
});

【问题讨论】:

  • 当用户提交评论和管理员更改时更新数据库。你为什么使用 jQuery?
  • 请告诉我确切的要求。如果评论状态被管理员禁用,你想隐藏评论吗?如果您想在禁用状态时隐藏 cmets,那么在迭代 cmets 时您应该检查您是否可以显示评论的状态。如果您想从管理员端更改状态,那么您必须使用 jquery ajax 来更改评论状态。让我清楚地知道

标签: jquery html mysql database show-hide


【解决方案1】:

例如:

添加一个新字段

`is_visible` tinyint(1) not null default 1

然后使用服务器端脚本生成 html:

// PHP Example
foreach($db_results as $each) {
    echo '<div data-comment-id="' . $each->id . '" class="comment-box"' . ($each->is_visible?' style="display: block;"':'') . '>';
    echo $each->comment;
    echo '</div>';
}

然后对于使用 jQuery 的客户端脚本:

$('.comment-box').click(function(e){
    e.preventDefault();
    $(this).toggle();
    // Also you can make an ajax request to server to save visibility status and send id of comment by reading data as:
    console.log($(this).data('comment-id'));
});

【讨论】:

    【解决方案2】:

    您可以修改表以接受新列 - IsHidden 或 smth

    alter table comments add column ishidden bool;
    

    并通过 ajax 调用处理状态变化:

    $(".hide_comment").click(function() {
            var id = $(this).data('id');
            console.log($(this).data('id'));
    
            var currentData = {
                   id : id,
                   isHidden: true
                 };
    
            $.ajax({
               url: "some.php",
               data: currentData,
               success: function(response){
                            if(response.itHasBeenSaved){
    
                              $('#comment-' + id).hide();
                                 }
                     }
                 });
    
        });
    

    你也可以为表演做同样的事情。您将尝试更改服务器上数据库中的状态(这就是您使用 ajax 调用的原因),然后如果 ajax 调用成功,您将相应地更改状态。

    【讨论】:

      猜你喜欢
      • 2015-02-27
      • 1970-01-01
      • 2017-06-09
      • 2018-06-27
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多