2010-12-16 76 views
1

我正在处理允许用户复制表单输入组的表单(请参见此处:http://jsfiddle.net/Sd9Ag/5/)。 “问题”(包含列:“QID”,“文本”)和“答案”(包含列:“AID”​​,“QID”,“文本”)。PHP表单到mySql数据库中。数组格式化问题

当我提交表单,该信息发布像这样(在这个例子中,表单有2个问题,既具有3个答案):


问题:

Array ([0] => question 1 [1] => question 2) 

答案:

Array ([0] => q1 answer 1 [1] => q1 answer 2 [2] => q1 answer 3 [3] => q2 answer 1 [4] => q2 answer 2 [5] => q2 answer 3) 

我的问题是:什么是最好的方式来保持这些问题链接到他们的答案时循环后变量插入到数据库中?

我是否应该为每个表单输入组的name脚本编写脚本的方式不同?

有没有办法将这些输入“集”中的每一个分组到数组中?

回答

2

我已经做了,在过去类似的东西与允许你添加天调度部件到一个时间表,就像你有问题的答案一样。我处理它的方式是通过javascript添加额外的行,增加计数器来命名字段。

事情是这样的:

<input type="text" name="question[1]"> 
<input type="text" name="answer[1][1]"> 

现在你保留一个计数器中有多少答案有问题的JavaScript,所以当你添加一个新的答案,你只是增加该计数器。举例来说,如果你开始用1个回答默认:

var count = 1 
//creating new answer field logic 
count++; 
answer_name = 'answer[' + question + '][' + count + ']'; 

当然,比这更复杂一些,但希望你我本要去的地方的想法。

然后当你提交时,你抓住你的问题数组,然后只是查询答案数组来获得所有问题的答案。问题1的答案将以$ answers [1]作为数组。

+0

谢谢詹姆斯,那么什么是'问题'var设置为? – superUntitled 2010-12-16 22:46:18

+0

在我的例子中,我把它分成$ questions和$ answers数组。所以你会说例如$ questions = $ _POST ['question']。 – 2010-12-22 18:33:44

2

我想有这样一个最后的阵列,在单个阵列一切,所以,很容易遍历同时处理: -

array([0] => array([0] => question 1, 
        [1] =>array([0] => q1 answer 1, [1] => q1 answer 2)), 
     [1] => array([0] => question 2, 
        [1] => array([0])), 
     ... 

检查以这种格式具有输入名称产生以上帖子数据阵列: -

//Question 1 
<input type="input" name="question[0][0]"> 

//Answers to 1 
<input type="input" name="question[0][1][]"> 
<input type="input" name="question[0][1][]"> 

//Question 2 
<input type="input" name="question[1][0]"> 

//Answer to 2 
<input type="input" name="question[1][1][]"> 

我不知道这是否会按照上面给出的格式发布值。如果它可以工作,而且你更喜欢这种格式,那么在你的代码中这样生成。

为了保持它的可读性,您可以分配这样

//Question 1 
<input type="input" name="qa[0][question]"> 

//Answers to 1 
<input type="input" name="qa[0][answer][]"> 
<input type="input" name="qa[0][answer][]"> 

//Question 2 
<input type="input" name="qa[1][question]"> 

//Answer to 2 
<input type="input" name="qa[1][answer][]"> 

希望这有助于