2017-10-07 125 views
-1

我试图将HTML表单的结果保存到XML文件中以供以后处理。表单有不幸的是,它看起来像我一次只能保存一个答案,但我想写所有的答案在XML文件中。这里是我的尝试:将HTML表单数据保存到XML文件

<?php 
 
if(isset($_POST['submit'])) 
 
{ 
 
    $mileage = $_POST['form']; 
 
    $file = fopen("data.xml","r+"); 
 
    fwrite($file,$mileage); 
 
    fclose($file); 
 
    print_r(error_get_last()); 
 
} 
 
?> 
 

 
<form action= "" method="post" name="form"> 
 
<input type="hidden" value = "<?xml version='1.0' encoding='UTF-8'?>"/> 
 
<input type="hidden" value="<miles>"/> 
 
<span class="XMLsimpleType" onclick="selectelm(this, event);" ondblclick="selectelm(this, event);"> 
 
<label>Car: </label> 
 
<input type="text" class="car" name="car" value="" onfocus="focusGained(this)" onchange="textChanged(this)" /></span> 
 
<br/></span> 
 
<br> 
 
<span class="XMLsimpleType" onclick="selectelm(this, event);" ondblclick="selectelm(this, event);"> 
 
<span class="bike"> 
 
<label>Bike: </label> 
 
<input type="text" class="bike" name="bike" value="" onfocus="focusGained(this)" onchange="textChanged(this)" /></span> 
 
<br/></span> 
 
<br> 
 
<input type="hidden" value="</miles>"/> 
 
<input type="submit" name="submit" value="submit"><br> 
 
</form>

的形式应该创建一个类似如下的格式正确的简单的XML文件:

<?xml version='1.0' encoding='UTF-8'?> 
 
<miles> 
 
<car>123</car> 
 
<bike>245</bike> 
 
</miles>

我已经花了四个小时看着这个,我知道我可以简化它,但首先我想只是让它工作。我可以编写一个表单条目,但不能包含带有XML信息的整个表单。我做错了什么?

+0

你无法按照您尝试执行的方式处理表单。首先,您的$ _POST数组只包含具有name属性的输入元素(即汽车,自行车并在您的表单中提交)。答案是将您的$ _POST数组转换为有效的XML结构,使用SimpleXMLElement,请参阅链接[link] https://stackoverflow.com/questions/1397036/how-to-convert-array-to-simplexml – lovelace

+0

I试图将所有输入元素合并到一个$ _Post中,使用句点,逗号和空格,但都不起作用。我会研究SimpleXMLElement,除非有更简单的方法来组合东西。 –

回答

0

这应该工作(我已在形式和处理分成两个单独的文件):

yourform.php(简体):

<form action='showXML.php' method='POST'> 
car <input type='text' name='car'> 
<br /> 
bike <input type='text' name='bike'> 
<input type='submit' name='submit' value='submit'> 
</form> 

showXML.php:

<?php 
if(isset($_POST['submit'])) 
{ 
$xml = new SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\" ?><miles></miles>"); 

    $xml->addChild('car', $_POST['car']); 
    $xml->addChild('bike', $_POST['bike']); 

    $asXML = $xml->asXML(); 
    $file = fopen("data.xml","w+"); 
    fwrite($file,$asXML); 
    fclose($file); 
    print_r(error_get_last()); 

    if(file_exists('./data.xml')) 
    { 
     $myXML = file_get_contents('./data.xml'); 
     $xml = new SimpleXMLElement($myXML); 
     $xmlpretty = $xml->asXML(); 

     // pretty print the XML in browser 
     header('content-type: text/xml'); 
     echo $xmlpretty; 
    } 

} 
?> 
+0

工作。我正在接近SimpleXMLElement,但我无法弄清楚如何在数组中使用$ _Post。我正准备试着将$ asXML写入一个文件,这就是你所做的。非常好,工作,谢谢。 –

+0

感谢Harold,很高兴我能帮上忙 – lovelace