在文本框组中输入数组

时间:2011-04-26 17:07:48

标签: php

我使用JavaScript创建了一个文本框组,即单击“添加”按钮时,新的文本框将添加到页面中。

var newTextBoxDiv = $(document.createElement('div'))
                 .attr("id", 'TextBoxDiv' + counter);

newTextBoxDiv.after().html('<label>Track #'+ counter + ' : </label>' + 
               '<input type="text" name="textbox1[]' + counter + '" value="" >' + 
               '<input type="text" name="textbox2[]' + counter + '" value="" >' );

newTextBoxDiv.appendTo("#TextBoxesGroup");

我的PHP页面的DIV类是..

    <div id='TextBoxesGroup'> <div id="TextBoxDiv1"> <label>Track #1 : </label>
    <input name="textbox1[]" type='textbox' ><input name="textbox2[]" type='textbox'>
    </div>
    </div>

现在我想创建一个数组,以便轻松地将这组文本框的值输入到数据库中。而不是使用多维数组,我想使用单个数组,因此textbox1#集的值存储为数组的关键,textbox2#存储的值存储为数组的相应值。

4 个答案:

答案 0 :(得分:2)

当您通过POST提交表单时,它不会创建输入字段的多维数组。相反,它使用字段的name属性作为$ _POST数组中的键。

因此,当您制作文本框时,请将textbox2设为数组名称,以便您可以拥有多个字段,如下所示:

var newTextBoxDiv = $(document.createElement('div'))
                 .attr("id", 'TextBoxDiv' + counter);

newTextBoxDiv.after().html('<label>Track #'+ counter + ' : </label>' + 
               '<input type="text" name="textbox1[]' + counter + '" id="textbox1' + counter + '" value="" >' + 
               '<input type="text" name="textbox2[]' + counter + '" id="textbox2' + counter + '" value="" >' );

newTextBoxDiv.appendTo("#TextBoxesGroup");

然后您可以使用 $ _ POST ['textbox1'] 获取密钥,这些值将存储在 $ _ POST ['textbox2'] 中。

然后使用它,假设您想获得第一个textbox1 / textbox2对,您可以使用 $ _ POST ['textbox1'] [0] $ _ POST来访问该值[ 'TextBox2中'] []

要循环遍历两个数组并提取所有值(假设textbox1和textbox2字段的数量相同),您可以执行以下操作:

$inputs;
$length = count($_POST['textbox1']);
for($i=0; $i< $length; $i++){
$inputs[$_POST['textbox1'][$i]] = $_POST['textbox2'][$i];
}

答案 1 :(得分:0)

我认为你不能直接这样做。您必须处理HTML将表单传递给PHP的方式。您不应对所有文本框使用相同的名称。我认为最简单的方法是使用'textbox1 []'和'textbox2 []'作为名称,这样你就可以从所有文本框中获得一个数组。然后,使用循环,您可以使用textbox1和textbox2数组以您希望的方式构建新数组。

答案 2 :(得分:0)

我制作了一些示例代码,向您展示如何使用复选框的不同属性将键映射到复选框数组中的值:

因此,您可以控制映射到哪个键的值...如果您希望将某个内容作为值插入复选框数组中的键,请执行以下操作:

<input type="checkbox" id="somewhat1" name="checkboxes[key1]" value="value1"/> 其中“checkboxes”将是一个包含key1的值为1的数组

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
</head>
<body>

    <?php
    echo print_r($_POST) . "<br/>";
    $checkboxvalues = $_POST['checkboxes'];
    echo "key1 = " . $checkboxvalues["key1"] . "<br/>";
    ?>

    <form action="index.php" method="post">
        asd1<input type="checkbox" id="somewhat1" name="checkboxes[key1]" value="value1"/><br/>
        asd2<input type="checkbox" id="somewhat2" name="checkboxes[key2]" value="value2"/><br/>
        asd3<input type="checkbox" id="somewhat3" name="checkboxes[key3]" value="value3"/><br/>
        <input type="submit" value="ok">
    </form>

</body>

答案 3 :(得分:0)

  

(文档)$。就绪(函数(){

var counter = 5;

$("#addButton").click(function () {

if(counter>50){
        alert("Only 50 textboxes allow");
        return false;
}   

var newTextBoxDiv = $(document.createElement('div'))
     .attr("id", 'TextBoxDiv' + counter);

newTextBoxDiv.after().html('<div class="form-group" id="TextBoxesGroup" ><div class="col-md-5" id="TextBoxDiv'+ counter + '"><input type="text" name="Features['+ counter + ']" id="textbox' + counter + '" placeholder="Features type" class="form-control " value="" ></div> ' +
      '<div class="col-md-6" id="TextBoxDiv'+ counter + '"><input type="text" name="Features_v[' + counter + 
      ']" id="textbox' + counter + '" <input type="textbox" placeholder="Features description" class="form-control " value="" ></div>'+ '<div class="col-md-1" id="TextBoxDiv'+ counter + '"><i class="fa fa-trash btn" id="removeButton" ></i></div></div>');

newTextBoxDiv.appendTo("#TextBoxesGroup");


counter++;
 });

});