从可变数量的表单中将数据插入到mysql中

时间:2013-12-10 09:08:52

标签: php mysql

从输入页面我有可更改的表格数量发送数据。我这样做,每个新表格都有下一个号码。

name2
date3
name4
date5
name6
date7
etc...

当我尝试在我的Db表中捕获它们时,问题就出现了,其中有两列“name”和“date”。 这是我使用的代码:

$i = 1;
while(isset($_POST["name".$i]))
{
    $cantidad = $_POST["name".$i];
    $value = $_POST["date".($i+1)];
    $query = "INSERT INTO `tickets` SET `name` = $cantidad, `date` = $value";
    mysql_query($query);
    $i += 2;
}

基本上,由于表单包含了pares(名称和日期),我需要它们以正确的顺序插入“name”和“date”列。事情是出于某种原因,代码不是惰性的。

我做错了什么? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

确保在某个实例之后断开循环,否则它将是无限循环。

$i = 1;
while(true)
{
    if(isset($_POST["name".$i])) {
        $cantidad = $_POST["name".$i];
        $value = $_POST["date".($i+1)];
        $query = "INSERT INTO `tickets` SET `name` = $cantidad, `date` = $value";
        mysql_query($query);
        $i += 1;
    } else {
        continue;
    }
}

答案 1 :(得分:0)

lznogud,

我对你的代码做了一些修改,因此你需要在php文件中做一些修改,即testProces.php

http://jsfiddle.net/mNkub/

$('#addScnt').live('click', function() {
            $('<label for="ticketCantidad"><input type="text" id="ticketCantidad" size="20" name="ticketCantidad[' + i +']" value="" placeholder="Valor de Tickets" /></label>').appendTo(scntDiv);
            //i++;
            $('<label for="ticketValue"><input type="text" id="ticketValue" size="20" name="ticketValue[' + i +']" value="" placeholder="Cantidad de Tickets" /></label><p></p>').appendTo(scntDiv);
            i++;
            return false;
    });

现在你得到的html结构将是

<input type="text" id="ticketCantidad" size="20" name="ticketCantidad[2]" value="" placeholder="Valor de Tickets">
<input type="text" id="ticketValue" size="20" name="ticketValue[2]" value="" placeholder="Cantidad de Tickets">

然后下一个将是:

<input type="text" id="ticketCantidad" size="20" name="ticketCantidad[3]" value="" placeholder="Valor de Tickets">
<input type="text" id="ticketValue" size="20" name="ticketValue[3]" value="" placeholder="Cantidad de Tickets">

等等

现在在php文件中,你将获得两个数组,其中两个字段数据都在POST中的相同键中。然后你可以按如下方式进行编码:

if(isset($_POST["ticketCantidad"]) && count($_POST['ticketCantidad'])>0) {

    foreach($_POST["ticketCantidad"] as $key => $value) {
        $cantidad = $value;
        $value = $_POST["ticketValue"][$key];
        $query = "INSERT INTO `tickets` SET `name` = $cantidad, `date` = $value";
        mysql_query($query);
    }     

}

希望这会清除图片。

PS:您可能需要在上面的代码中进行一些调整,因为我还没有测试过,只需一次性编写。