使用PHP从HTML表单创建XML结构
我正在创建一个系统,用户可以在其中输入配料,然后保存其数量,我使用PHP将其保存为XML 它现在这样保存使用PHP从HTML表单创建XML结构,php,html,xml,Php,Html,Xml,我正在创建一个系统,用户可以在其中输入配料,然后保存其数量,我使用PHP将其保存为XML 它现在这样保存 <ingredients> <ingredient quantity="2">Apple</ingredient> <ingredient quantity="4">Banana</ingredient> </ingredients> 苹果 香蕉 相反,我想这样保存它,但我不知道如何保存
<ingredients>
<ingredient quantity="2">Apple</ingredient>
<ingredient quantity="4">Banana</ingredient>
</ingredients>
苹果
香蕉
相反,我想这样保存它,但我不知道如何保存
<ingredient>
<quantity_amount>2</tns:quantity_amount>
<quantity_name>teaspoons</tns:quantity_name>
<ingredient_name>baking powder</tns:ingredient_name>
</ingredient>
2.
茶匙
发酵粉
对于添加的每种成分
这是我目前使用的PHP和HTML
HTML
PHP
//循环的开始,从0到IngreditName
对于($i=0;$i$element,'label'=>$element,'image'=>images/products/default.jpg');
}
//选择当前物料数量
$qty=$qty[$i];
//创建成分元素并填充$element
$Component=$xml->createElement('Component',$element);
//将数量属性设置为$qty值
$component->setAttribute('quantity',$quantity);
//将其附加到元素中
$Components->appendChild($Components);
}
要根据所需的XML结构创建新配料:
// creating the document and its root
$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('ingredients','');
$dom->appendChild($root);
// create new ingredient and link it to root
$ingredient = $dom->createElement('ingredient','');
$root->appendChild($ingredient);
// create children and link them to ingredient
$q_amount = $dom->createElement('quantity_amount',"1");
$q_name = $dom->createElement('quantity_name',"spoon");
$i_name = $dom->createElement('ingredient_name',"PHP");
$ingredient->appendChild($q_amount);
$ingredient->appendChild($q_name);
$ingredient->appendChild($i_name);
echo $dom->saveXML();
看到它工作了吗
在将表单插入XML之前,请确保清除表单中的用户输入 哦,对不起,忽略tns。这只是一种粗略的方式来展示我希望它如何以xml的形式出现。每种成分都有自己的成分,它们都在下面,如何创建XML<代码>simplexml或
DOM
或??我通过DOM创建它,是否可以循环使用多种成分?我已经尝试按照您的方式进行工作,但是我得到了这个xml jhk hey x skxs,成分只会自动关闭,然后我的其他元素会在结束时跟随xml@NickPocock看见我不知道代码中的搜索
功能是什么,也不知道如何从表单中读取。但是这个示例展示了如何在循环中添加元素。
// Start for loop, from 0 to ingredientName
for ($i = 0; $i < count($ingredientName); $i++) {
// Select current item
$element = $ingredientName[$i];
// Updated used ingredients list ONLY
// if the ingredient wasn't added yet
$temp = search($upIngreds, 'value', $element);
if (empty($temp)) {
$upIngreds[] = array('value' => $element, 'label' => $element, 'image' => 'images/products/default.jpg');
}
// Select current item quantity
$qty = $quantity[$i];
// Create ingredient element and fill with $element
$ingredient = $xml->createElement('ingredient', $element);
// Set quantity attiribute to $qty value
$ingredient->setAttribute('quantity', $qty);
// Append it to ingredients element
$ingredients->appendChild($ingredient);
}
// creating the document and its root
$dom = new DOMDocument('1.0', 'utf-8');
$root = $dom->createElement('ingredients','');
$dom->appendChild($root);
// create new ingredient and link it to root
$ingredient = $dom->createElement('ingredient','');
$root->appendChild($ingredient);
// create children and link them to ingredient
$q_amount = $dom->createElement('quantity_amount',"1");
$q_name = $dom->createElement('quantity_name',"spoon");
$i_name = $dom->createElement('ingredient_name',"PHP");
$ingredient->appendChild($q_amount);
$ingredient->appendChild($q_name);
$ingredient->appendChild($i_name);
echo $dom->saveXML();