JQuery Datatables将数据序列化到mysql数据库中

时间:2012-11-23 15:04:50

标签: php jquery mysql serialization datatable

我是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&amp; 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变量中......哦,上帝,我对此非常蹩脚。

1 个答案:

答案 0 :(得分:1)

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

如果网址是(例如在GET中):www.url.com?key=value&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,其中数字在每个新变量(id1,id2,id3,id4 ......)中保持增加1,这将有效。

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