-2

我需要有关如何从动态创建的文本框中收集数据的帮助。我正在提供我的 html 代码。我为文本框添加和删除代码工作正常。我想知道在定义文本框数组时我在哪里做错了。我是否没有正确收集文本框值。另一个问题是在提交页面以插入数据库后,我应该如何将此数组值传递到另一个页面。

此代码用于为旅行社的旅行取值。

这是我的html表单`输入行程详细信息名称(类别)Days City Itinerary Night Stay -->

            <div id="TextBoxesGroup">

              <div id="TextBoxDiv1">

                <label></label>

                <input type='text'  id='dayNo'  name="itinerary[]" >
                <input type="text"  id='cityName'  name="itinerary[]">
                <input type='text'  id='schedule'  name="itinerary[]">
                <input type='text'  id='nightStay'  name="itinerary[]">

              </div>

            </div>

            <input type='button' value='Add Button' id='addButton'>
            <input type='button' value='Remove Button' id='removeButton'>
            <input type='button' value='Get TextBox Value' id='getButtonValue'>     
            <input type="submit" name="submit" id="submit" value="Submit" />

            </td>
        </tr>
      </table>
    </form>`

我想知道我是否定义了正确的数组名称“itinerary []”。如果有 10 天的游览,那么将有 10 行包含 4 个字段。我应该如何收集这些行并发送到另一个页面进行插入。请让我在收集到数组后应该如何编写 VALUES () 部分。我可以使用会话发送 10 行的数据吗?我可以将此数据作为参数发送吗?我很抱歉在一篇文章中有这么多问题。我已经尝试了所有这些方式,但没有成功,或者很可能我在某个地方错了请帮助我这是现场网站。卡在这部分提前感谢数百万。


很抱歉延迟回复您的回答。实际上我真的不知道我应该如何清除数组。老实说,这让我非常沮丧。并浪费我的时间。如果可以,请指导我。我提供了用于动态添加文本框的 JS 代码,在我之前的帖子中,我提供了 HTML 代码。你能检查一下我是否在做正确的清除数组的命名约定。请对我的代码进行必要的更改并粘贴到这里。

这是我动态添加文本框的 JS 代码

$(document).ready(function(){

var counter = 2;

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

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

var newTextBoxDiv = $(document.createElement('div')).attr("id", 'TextBoxDiv' + counter + ' ' + 'style="width:750px;"');

newTextBoxDiv.html(
      '<input type="text" name="itinerary[dayNo]'+ counter + '" id="dayNo'+ counter + '" value="'+ counter + '" >' +
      '<input type="text" name="itinerary[cityName]'+ counter + '" id="cityName'+ counter + '" value="" >'+
      '<input type="text" name="itinerary[schedule]'+ counter + '" id="schedule'+ counter + '" value="" >'+
      '<input type="text" name="itinerary[nightStay]'+ counter + '" id="nightStay'+ counter + '" value="" >' );

newTextBoxDiv.appendTo("#TextBoxesGroup");
counter++;
 });

不,我再次给出我的 HTML 代码。你能检查我是否正确地给出了名称。这对我来说是最大的帮助。

这是我的 HTML 代码

 <div id='TextBoxesGroup'>

              <div id="TextBoxDiv1">

                <label></label>

                <input type='text'  id='dayNo'  name="itinerary[dayNo][]" >
                <input type="text"  id='cityName'  name="itinerary[cityName][]">
                <input type='text'  id='schedule'  name="itinerary[schedule][]">
                <input type='text'  id='nightStay'  name="itinerary[nightStay][]">
              </div>
            </div>

            <input type='button' value='Add Button' id='addButton'>
            <input type='button' value='Remove Button' id='removeButton'>
            <input type='button' value='Get TextBox Value' id='getButtonValue'>     
            <input type="submit" name="submit" id="submit" value="Submit" />              

现在告诉我应该如何将数组中收集的值传递给会话或通过 URL,如 ---action="savedata.php?arr=...."

请在我的代码中进行更正。我是新手,最近几天感觉很迷茫。

我这样写了关于将值传递给数组

<?php

   $totalArray = itinerary;

   $_session['tArray'][]=$totalArray;

?>

这是通过会话发送的正确方法吗?预先感谢数百万

4

1 回答 1

0

我不确定是否能很好地理解您的问题,我将尝试解释步骤。

  • 不要将通用 ID 用于动态输入。
  • PHP 与 id 无关
  • 如果你想匹配一个“块”的日程安排,并将其与 jQuery 匹配,请为每个甚至一个类设置一个适当的 data-*。

这是一个例子:

<div class="TextBox" data-formNum="0">
   <input type='text' name="itinerary[dayNo][]">
   <input type='text' name="itinerary[cityName][]">
   <input type='text' name="itinerary[schedule][]">
   <input type='text' name="itinerary[nightStay][]">
</div>

当你想用 jQuery 添加一个表单块时,使用:

var idToAdd = $(".TextBox:last").attr("data-formNum")+1;

当您将此表单发送到 PHP 时,所有内容都将被格式化为:

Array
(
    [intinerary] => Array
        (
            [dayNo] => Array
                (
                    [0] => 15
                    [1] => 14
                )

            [cityName] => Array
                (
                    [0] => London
                    [1] => Prague
                )
               ...

INSERT INTO然后你可以在这个数组上编写一个循环函数,例如:

for ($i=0; $i < count($_POST['itinerary']['dayNo']);$i++)
{
     $day = $_POST['itinerary']['dayNo'][$i];
     $cit = $_POST['itinerary']['cityName'][$i];
}

希望这有帮助。
如果我误解了,请告诉我。

于 2012-08-30T15:02:17.977 回答