【问题标题】:PHP form into mySql db. Array formatting questionPHP 形式进入 mySql 数据库。数组格式问题
【发布时间】:2010-12-16 17:21:33
【问题描述】:

我正在开发一种允许用户复制表单输入组的表单(参见此处:http://jsfiddle.net/Sd9Ag/5/)。

我想将数据插入到具有两个表的数据库中:“question”(包含列:“QID”、“text”)和“answer”(包含列:“AID”​​、“QID”、“text” ”)。

当我提交表单时,信息是这样发布的(在这个例子中,表单有 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 )

我的问题是:在循环通过 post 变量将它们插入数据库时​​,将这些问题与其答案联系起来的最佳方法是什么?

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

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

【问题讨论】:

    标签: php mysql forms


    【解决方案1】:

    我过去曾使用日程安排小部件做过类似的事情,该小部件可让您将日期添加到日程安排中,就像您有问题的答案一样。我处理它的方式是通过 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] 中。

    【讨论】:

    • 在我的示例中,我将其拆分为 $questions 和 $answers 数组。例如,你会说 $questions = $_POST['question']。
    【解决方案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][]">
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 2010-11-25
      • 2021-10-03
      • 2013-06-25
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多