2012-10-04 68 views
0

我遇到的问题是我的电子商务脚本允许人们将产品添加到他们的商店。然而,这些产品可以有变体......就像Color一样,这些变体可以有选项,例如黑色,白色和蓝色。我遇到的问题是如何确定他们输入了多少个选项。最后,我将有一个JavaScript函数添加一个新的输入字段,如果他们点击“添加选项”,但现在我只是做了类似的3个输入字段,以便:用codeigniter处理多个输入字段?

Variant Title:<input type="text" name="variant_title"><br> 
Variant Option: <input type="text" name="variant_option_1"><br> 
Variant Option: <input type="text" name="variant_option_2"><br> 
Variant Option: <input type="text" name="variant_option_3"><br> 

现在我不知道该怎么做的是循环通过所有的variant_options,如果它们不是空的,则将它们添加到数据库中。我不想用名字对其进行硬编码,因为我不知道他们会为每个变体选择多少个选项。

我试着这样做:

$i = 1; 
      while($this->input->post('variant_option_$i') != '') 
      { 
       $variant_options[] = $this->post->input('variant_option_$i'); 
       $i++; 
      } 

但是,这似乎并没有工作,因为变异的标题被添加到数据库中,但是选项不。

我需要一个解决方案的唯一方法就是如何一次抓取所有这些字段。我正在考虑一个foreach循环,但我不知道。

谢谢。

回答

2

我会用的输入区域,而不是一个数组:

Variant Title:<input type="text" name="variant_title"><br> 
Variant Option: <input type="text" name="variant_option[]"><br> 
Variant Option: <input type="text" name="variant_option[]"><br> 
Variant Option: <input type="text" name="variant_option[]"><br> 

然后检查类似的值:

if (is_array($this->input->post('variant_option')): 
    foreach ($this->input->post('variant_option') as $value): 
     $variant_options[] = $value; // loop through... 
    endforeach; 
endif; 
+0

有趣,不知道你能做到这一点。如果你不介意,我可以通过表单本身将更多选项传递给variant_option数组吗? – user1701398

+0

@ user1701398你是什么意思更多选择?您可以根据需要添加尽可能多的,然后它们将张贴到表单处理程序...但每个ONE输入字段当然只能包含一个值。 – jtheman

+0

那么最终我想让更多的一个变体标题,每个标题将有我的选择...像大小将有尺寸和颜色将有颜色。我的意思是name =“variant_option [title_id = 1]”这可能吗? – user1701398