【问题标题】:JQuery Datatables serialized data into mysql databaseJQuery Datatables 将数据序列化到mysql数据库中
【发布时间】:2012-11-11 23:12:48
【问题描述】:

我是 javascript 和 JQuery 的新手,我正在使用 JQuery 数据表。我已经阅读了该页面 100 次并比较了 html 源代码,我设法弄清楚如何将唯一选中的字段传递到 sData 数组中......无论如何......

我有这个数组:

var sData

当我提交表单时,它会提醒我选择了哪些行,它会给出如下内容:

1=1&2=2&10=10&18=18

在此之前,我使用简单的表格,每行都有一个按钮,为我保留了我选择的按钮,所以这一步对我来说真的很困惑......

我使用这个查询将它们添加到数据库中:

if (isset($_POST['addtolist']) ) 
{
    $itemid=mysql_real_escape_string($_POST['itemid']);
    $AddToListQuery = "
                    INSERT INTO
                    reservelist
                   (itemid, projectid)
                    VALUES
                   ('$itemid', '" . mysql_real_escape_string($_SESSION['projectidtoreserve']) . "')
                   ";      
    mysql_query($AddToListQuery, $conn);
    header('Location: pm_reserving.php');
    exit();
}

并且每次点击指定表格行的按钮后都会执行。

但现在我不知道如何将这个 sData 数组传递给查询...

我不能像现在这样使用sData 将其输入数据库,因为它没有任何意义:/...我与这个 sData 有什么关系?

编辑
我现在的 JQuery 代码:

        $('#form').submit( function() {
            var sData = $('input', oTable.fnGetNodes()).serialize();
            alert( "The following data would have been submitted to the server: \n\n"+sData );

        } );

        oTable = $('#table1').dataTable();

我的表格:

<form id="form" action="" method="post">
<button type=submit name=addtolist>Button</button>

当我提交表单时,我会收到上面提到的警报(但现在是 id1=1&id2=2 等)。

PHP:

if (isset($_POST['addtolist']) ) 
{
    $x=1;
    $values=array('+sData');
    while(isset($_POST['id'.$x]))
    {
        $values[$x-1]=$_POST['id'.$x];
        $AddToListQuery = "
                        INSERT INTO
                        reservelist
                       (itemid, projectid)
                        VALUES
                       ('". mysql_real_escape_string($_POST['id'.$x]) ."', '" . mysql_real_escape_string($_SESSION['projectidtoreserve']) . "')
                       ";
        $x++;
    }
    mysql_query($AddToListQuery, $conn);
    header('Location: pm_reserving.php');
    exit();
}

这个 PHP 循环可能是一个很大的失败......但我需要这个 sData 变量来放入 PHP 变量......哦,天哪,我在这方面太蹩脚了。

【问题讨论】:

    标签: php jquery mysql serialization datatable


    【解决方案1】:

    如果你使用 GET 或 POST 传递sData,恢复它的方法是这样的:

    如果 URL 是(例如在 GET 中):www.url.com?key=value&amp;key2=value2

    在 PHP 中你可以这样理解:

    $value=$_GET['key'];  // if you used POST it's $value=$_POST['key'];
    $value2=$_GET['key2'];
    

    所以在你的例子中应该是:

    $id1=$_GET['1'];
    $id2=$_GET['2'];
    ....
    

    如您所见,这并不理想,因为您需要知道 id 才能读取 id...sData 的更好格式是:

    id1=1&id2=2&id3=10&id4=18
    

    你会读到的:

    $id1=$_GET['id1']; //gets a 1
    $id2=$_GET['id2']; //gets a 2
    $id3=$_GET['id3']; //gets a 10
    $id4=$_GET['id4']; //gets a 18
    

    一个简单的阅读方法是:

    $x=1;
    $values=array();
    while(isset($_GET['id'.x])){
         $values[$x-1]=$_GET['id'.x];
         $x++;
    }
    
    echo "Number of Ids=".($x-1);
    print_r($values);
    

    编辑:如果您提交表单,这一切如何运作。

    <form id="form" action="example.php" method="post">
    <input type="text" id="id1" name="id1" value="1" />
    <input type="text" id="id2" name="id2" value="2" />
    <button type=submit name=addtolist>Button</button>
    

    如果您只是提交这个,变量id1id2 将使用POST 提交到example.php。现在这个 PHP 应该这样做:

    example.php

    $x=1;
    $values=array();
    while(isset($_POST['id'.x])){
         $values[$x-1]=$_POST['id'.x];
         $x++;
    }
    
    echo "Number of Ids=".($x-1);
    print_r($values);
    

    即使您使用更多变量,如果它们都被命名为 id+number,这将起作用,其中 number 在每个新变量(id1、id2、id3、id4 ....)中不断增加 1

    在此之后,$values 数组包含所有传递的变量!您可以在查询中或任何您需要的地方使用它们。

    【讨论】:

    • 好的,关于 ID1=1 等,我按照您所说的做了。如何将此 sData 数组传递到 $values 数组?
    • 哦,你的意思是如何从 Jquery 传递到 PHP 文件?那是一个 AJAX 调用。您基本上需要触发一个将启动 javascript/Jquery 函数的事件(例如按钮中的 onclick="something()")然后执行 $.post("example.php",{$("#Form").serialize()}, function(data){alert("OK");});
    • 哈哈...我不确定。编辑了我的帖子也许现在更清楚了?
    • 啊,您只是在提交表单!这也有效,np!让我编辑我的答案以解释它是如何工作的
    • 如果您有 firebug 或 chrome 开发工具,您可以准确检查 POST 将哪些变量和值传递给 PHP。那会有所帮助。如果这不能解决任何问题,请尝试仅使用 $val1=$_POST['id1'];$val2=$_POST['id2'] 获取值。如果这也不起作用,则 javascript 部分存在问题
    猜你喜欢
    • 2012-09-07
    • 2012-02-09
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多