如何在PHP中显示多级动态表单字段?
我的HTML表单,由PHP从MySQL数据库生成: `如何在PHP中显示多级动态表单字段?,php,arrays,forms,multidimensional-array,Php,Arrays,Forms,Multidimensional Array,我的HTML表单,由PHP从MySQL数据库生成: ` 在生成表单时,应该确保尽可能接近所需的数组结构,而不是试图在提交时重新格式化。您无法准确获取所需内容,但会在名称中显式生成密钥,如下所示: : : : : : : : : : 将生成如下所示的数组: 数组( “产品”=>阵列( 0=>数组( '姓名'=>'发言人', “组件名称”=>数组( 0=>“颜色”, 1=>“直径”, 2=>“品牌”, ), “组件_值”=>数组( 0=>“黑色”, 1 => '10', 2=>
在生成表单时,应该确保尽可能接近所需的数组结构,而不是试图在提交时重新格式化。您无法准确获取所需内容,但会在名称中显式生成密钥,如下所示:
:
:
:
:
:
:
:
:
:
将生成如下所示的数组:
数组(
“产品”=>阵列(
0=>数组(
'姓名'=>'发言人',
“组件名称”=>数组(
0=>“颜色”,
1=>“直径”,
2=>“品牌”,
),
“组件_值”=>数组(
0=>“黑色”,
1 => '10',
2=>Pokijan',
),
),
1=>数组(
“名称”=>“桌面电脑”,
“组件名称”=>数组(
0=>“品牌”,
1=>“操作系统”,
2=>“处理器”,
3=>“RAM”,
4=>“硬盘驱动器”,
5=>“SSD”,
),
“组件_值”=>数组(
0=>Tulkiyem',
1=>“Linux”,
2=>“英特尔”,
3=>“16 GB”,
4 => '-',
5=>“1600 GB”,
),
),
),
)
现在执行输出变得更加容易:
因为我们已经明确定义了键,所以我们知道与组件名称对应的值将位于'component\u values'
下的同一个键上
还请注意,我使用了输出HTML,因为这允许IDE和高级文本编辑器正确突出显示HTML元素并为它们提供自动完成值,而不是将HTML打印为字符串。什么是“正确数组”?您希望输出什么?编辑的问题。谢谢,
颜色
,品牌
等都是输入,这似乎很奇怪。它们不应该硬编码,只创建作为输入的值吗?是的,这些变量是动态的,所以值是动态的。谢谢你的解决方案,它工作得更好。
<!-- 1st product -->
<input name="product[]" value="Speaker" />
<!-- 3 components & its values of 1st product -->
<input name="component_name[]" value="Color" />: <input name="value_name[]" value="Black" />
<input name="component_name[]" value="Diameters" />: <input name="value_name[]" value="10" />
<input name="component_name[]" value="Brand" />: <input name="value_name[]" value="Pokijan" />
<!-- 2nd product -->
<input name="product[]" value="Desktop PC" />
<!-- 6 components & its values of 2nd product -->
<input name="component_name[]" value="Brand" />: <input name="value_name[]" value="Tulkiyem" />
<input name="component_name[]" value="OS" />: <input name="value_name[]" value="Linux" />
<input name="component_name[]" value="Processor" />: <input name="value_name[]" value="Intel " />
<input name="component_name[]" value="RAM" />: <input name="value_name[]" value="16 GB" />
<input name="component_name[]" value="HDD" />: <input name="value_name[]" value="-" />
<input name="component_name[]" value="SSD" />: <input name="value_name[]" value="1600 GB" />
<input type="submit" value="Send" />
</form>`
$cid=$_POST['cid'];
$komponen=$_POST['komponen'];
$opsi=$_POST['opsi'];
echo "<ul>";
$jb=count($cid);
for($i=0; $i<$jb;$i++)
{
if($cid[$i]<>"")
{
$jk=count($komponen);
echo "<li>Product-$i: $cid[$i]
<ol>";
for($x=0;$x<$jk; $x++)
{
echo "<li>$komponen[$x]: $opsi[$i][$x]</li>";
}
echo "</ol></li>";
}
}
echo "</ul>";
?>`