为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用PHP在数据库中插入多个附加/嵌套数组元素

如何使用PHP在数据库中插入多个附加/嵌套数组元素

一只斗牛犬 2021-03-30 13:14:17
我有一个页面,其中包含一些用户可以填写的字段。在主选择器中,用户只能选择一些预定义的选项,在自定义选择器中,用户可以使用其他选项填充其他字段。有一个按钮可以追加一层,并再次具有所有这些选项,还有一个保存按钮,将保存所有已填充的内容。像这样的东西:Main Selector|_SelectorCustom Selector|_Name|_Type|_Attribute|_numOfOptions (When selected, opens a number of fields related to number)  |_value  |_color(New Layer button)(Save Button)现在它们都具有相同的名称,并将数据保存为数组(例如:)<input name="color[]">。当我将数据保存在页面中时,在追加一些元素之后,我会同时获得所有数据并进行混合。我知道为什么会这样,并且我想有一种解决方法,但是我不确定是否正确。我想我可以从JavaScript的一层中获取全部元素,然后将此数字传递给PHP,然后可以仅将该值重复此次数。在下一个循环中,我可以在上一个循环停止的地方开始。极端简化的PHP代码,无需任何查询:$nomeCamada = $_POST['nomeCamada'];$attrName = $_POST['attrName'];$tipoSelector = $_POST['tipoSelector'];foreach($nomeCamada as $value2) {    $key = array_search($value2, $nomeCamada);    echo "Saving in DB...  CustomSelector: " . $value2 . " | Attr name: " . $attrName[$key] . " | Type: " . $tipoSelector[$key] . "<br>";    $attrValue = $_POST['attrValue'];    $color = $_POST['color'];    foreach ($attrValue as $value3) {        $key2 = array_search($value3, $attrValue);        echo "____Class name " . $value2 . " | Attr name: " . $attrName[$key] . " | Attr value: " . $value3 . " | Attr color: " . $color[$key2] . "<br>";    }}输出(显示1个主要元素和2个自定义,第一个具有2个属性,最后一个具有3个属性。已刮擦的元素是那些保存不正确的元素。):Saving in DB... Selector: MainSaving in DB... CustomSelector: CustomLayer1 | Attribute: attr1 | Type: type1____Class name: CustomLayer1 | Attr name: attr1 | Attr value: 2 | Attr color: #ff0000____Class name: CustomLayer1 | Attr name: attr1 | Attr value: 4 | Attr color: #000000____Class name: CustomLayer1 | Attr name: attr1 | Attr value: 10 | Attr color: #ffff00____Class name: CustomLayer1 | Attr name: attr1 | Attr value: 20 | Attr color: #800040____Class name: CustomLayer1 | Attr name: attr1 | Attr value: 30 | Attr color: #8000ff正如我所说,我不知道这是否是理想的方法。我也可以一次解决此节省一层的问题,但是我真的希望如此同时保存。让我知道这篇文章是否需要任何版本。
查看完整描述

1 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

我通过前面提到的JS方法进行了修复。我得到了用户以JS var形式生成的属性数量,并以hidden inputde形式传递给PHP文件。在PHP文件中,我将此值用作范围进行迭代。在下一次迭代中,我获得了上一次迭代的最后一个值,以定义新的起始范围。


if (isset($lastValue)) {

        foreach (range($lastValue+1, $lastValue+$classNumber[$x]) as $indexValue) {

            $key2 = array_search($indexValue, $attrValue);

            echo "____Nome da Classe " . $value2 . " | Nome do atributo: " . $attrName[$key] . " | Valor do Atributo: " . $attrValue[$indexValue] . " | Cor do Atributo: " . $color[$indexValue] . "<br>";              

        }

        $lastValue = $lastValue+$classNumber[$x];


} else {

        foreach (range(0, $classNumber[$x]-1) as $indexValue) {

            $key2 = array_search($indexValue, $attrValue);

            echo "____Nome da Classe " . $value2 . " | Nome do atributo: " . $attrName[$key] . " | Valor do Atributo: " . $attrValue[$indexValue] . " | Cor do Atributo: " . $color[$indexValue] . "<br>";

        }

        $lastValue = $classNumber[$x]-1;

}


$x++;


查看完整回答
反对 回复 2021-04-08
  • 1 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号