2014-02-10 97 views
0

我使用的XML文件顯示在谷歌地圖的畫布標記點,想實現一個網頁,我可以將數據輸入格式並保存它作爲中新的標記我data.xml文件。我試圖按照PHP手冊,但似乎無法讓它工作,所以想知道你是否能夠幫助我。表單提交,但似乎沒有進入XML文件。我在PHP裏面做錯了什麼?我錯過了什麼是實際將數據發送到我的XML文件?下面的代碼我到目前爲止:將表單數據發送到XML

HTML:

<form name="input" action="map.php" method="post"> 
     <p>Name</p> 
     <input type="text" name="name" placeholder="Name of road/junction"/> 
     <p>Latitude</p> 
     <input type="text" name="lat" placeholder="Latitude (should start with 54)"/> 
     <p>Longitude</p> 
     <input type="text" name="lng" placeholder="Longitude (should start with -2)"/> 
     <p>Image</p> 
     <input type="text" name="img" placeholder="include - images/"/> 
     <p>Custom Marker</p> 
     <input type="text" name="custommarker" placeholder="car.png"/> 
     <p>Description</p> 
     <input type="text" name="description" placeholder="Description of junction with tips"/> 
     <input type="submit" value="send"/> 
    </form> 

PHP:

$sxe = new SimpleXMLElement($xmlstr); 
$xmldoc->load('../data.xml'); 


$name = $_POST['name']; 
$lat = $_POST['lat']; 
$lng = $_POST['lng']; 
$img = $_POST['img']; 
$custommarker = $_POST['custommarker']; 
$description = $_POST['description']; 

$root = $xmldoc->firstChild; 

$marker = $sxe->addChild('marker'); 
$root->addAttribute('name', $name); 
$root->addAttribute('lat', $lat); 
$root->addAttribute('lng', $lng); 
$root->addAttribute('img', $img); 
$root->addAttribute('custommarker', $custommarker); 
$root->addAttribute('description', $description); 

echo $sxe->asXML(); 
$xmldoc->save('../moredata.xml'); 

然後我的XML佈局爲如下:

<markers> 
    <marker name="" lat="" lng="" img="" custommarker="" description "" /> 
</markers> 
+0

你不解釋你的代碼是如何失敗的,以滿足您的期望。事實上,你甚至不會提出問題。你能編輯這個問題並解決這個問題嗎? –

回答

0

我不瞭解PHP的第一行,但我這樣做,它的工作。 您使用$ sxe添加一個子對象,然後將其打印出來並將xmldoc保存到文件中。

data.xml中

<?xml version="1.0" encoding="utf-8"?> 
<markers/> 

map.php

$xmldoc = simplexml_load_file('data.xml'); 

$name = $_POST['name']; 
$lat = $_POST['lat']; 
$lng = $_POST['lng']; 
$img = $_POST['img']; 
$custommarker = $_POST['custommarker']; 
$description = $_POST['description']; 

$marker = $xmldoc->addChild('marker'); 
$marker->addAttribute('name', $name); 
$marker->addAttribute('lat', $lat); 
$marker->addAttribute('lng', $lng); 
$marker->addAttribute('img', $img); 
$marker->addAttribute('custommarker', $custommarker); 
$marker->addAttribute('description', $description); 

echo $xmldoc->asXML(); 
$xmldoc->asXML('moredata.xml'); 

moredata.xml包含

<?xml version="1.0" encoding="utf-8"?> 
<markers> 
<marker name="[[$name]]" lat="[[$lat]]" lng="[[$lng]]" img="[[$img]]" custommarker="[[$custommarker]]" description="[[$description]]"/> 
</markers> 

所以區別在於。 您可以創建名爲$ marker的變量,而不是將屬性添加到$ xmldoc-> firstChild。

$marker = $xmldoc->addChild('marker'); 
$marker->addAttribute('name', $name); 
$marker->addAttribute('lat', $lat); 
$marker->addAttribute('lng', $lng); 
$marker->addAttribute('img', $img); 
$marker->addAttribute('custommarker', $custommarker); 
$marker->addAttribute('description', $description); 

您的代碼:

$marker = $sxe->addChild('marker'); 
$root->addAttribute('name', $name); 
$root->addAttribute('lat', $lat); 
$root->addAttribute('lng', $lng); 
$root->addAttribute('img', $img); 
$root->addAttribute('custommarker', $custommarker); 
$root->addAttribute('description', $description); 
+0

太棒了。謝謝你的幫助。現在已經開始工作了,PHP一定不會喜歡那些開頭的幾行。 – Bic1245