dragon5006 2013-05-01 17:58
浏览 62
已采纳

jquery序列化和使用php获取值

May be it would be an easy question but I did not manage it. Here is my checkboxes like this:

<input name="msg_id[]" type="checkbox" id="msg3" value="3" />
<input name="msg_id[]" type="checkbox" id="msg2" value="2" />
<input name="msg_id[]" type="checkbox" id="msg1" value="1" />
<input name="msg_id[]" type="checkbox" id="msg15" value="15" />
<input name="msg_id[]" type="checkbox" id="msg14" value="14" />

And I am posting values with $.post method like this:

$('body').on('click', '#not_read', function () {
    var inputs = $("input[name='msg_id[]']").serialize();
    $.post("user.php", {"not_read":1,"message_ids":inputs}, function(z) {$("#result").html(z)});
});

I want to send checked values to the user.php and with foreach loop I want to update reading status which checked messages. Like below..

  if (isset($_POST['not_read'])):
    if (intval($_POST['not_read']) == 0 || empty($_POST['not_read'])):
    redirect("index.php");
  endif;     

    /* I don't know what I must write here.
    $values = $_POST['message_ids'];
    foreach($values as $row):
    mysql_query("UPDATE messages SET read='0'WHERE id='".$row["id"]."'");
    endforeach;

    # Sure, it is not working...

 */
  endif;

Kind regards...

  • 写回答

1条回答 默认 最新

  • douchungu0859 2013-05-01 20:30
    关注

    If there will be more checkboxes it would be better to separate them with class names.

    <input name="msg_id[]" type="checkbox" id="msg3" value="3" CLASS="msg_ids" />
    <input name="msg_id[]" type="checkbox" id="msg2" value="2" CLASS="msg_ids" />
    <input name="msg_id[]" type="checkbox" id="msg1" value="1" CLASS="msg_ids" />
    <input name="msg_id[]" type="checkbox" id="msg15" value="15" CLASS="msg_ids" />
    <input name="msg_id[]" type="checkbox" id="msg14" value="14" CLASS="msg_ids" />
    

    if you set up data, you do not need to serialize it. Especially when you send some data without serializing.

    $('body').on('click', '#not_read', function () {
        var inputs = [];
        $(".msg_ids").filter(':checked').each(function(){
            inputs.push($(this).val()); //creates array of selected boxes values
        });
        $.post("user.php", {"not_read":1,"message_ids":inputs}, function(z) {$("#result").html(z)});
    });
    

    In php, as your id's are integers, make sure they are for sql. Allso mysql_* functions are deprecated. You should use mysqli* functions.

    $values = $_POST['message_ids'];
        foreach($values as $row):
        mysql_query("UPDATE messages SET read='0'WHERE id='".intval($row)."'");
        endforeach;
    

    or you could allso do:

    $values = $_POST['message_ids'];
    if (is_array($values)) {
    function make_safe(&$item, $key)
    {
        $item = intval($item);
    }
    array_walk($values, 'make_safe');
    if (count($values)>0) mysql_query("UPDATE messages SET read='0'WHERE id IN (".implode(', ',$values).")" );
    else echo 'empty array';
    }
    else echo 'was not an array';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀