从远程XML

时间:2017-08-07 20:20:42

标签: php xml forms

我有一个用户提交开始/结束日期的PHP表单。然后,表单需要从托管在不同URL上的.xml中提取结果。 URL根据用户输入的日期而有所不同 - 日期将成为URL的一部分,如下所示。

所以,简单地说......用户输入日期。它通过URL调用xml文件(随着日期输入到该URL中稍有变化),它会在新页面上显示结果。

如果可能的话,我宁愿通过PHP而不是AJAX来做。

这是我表格的前端:

<html>
<body>

<form action="test_get.php" method="get">
Start Date: <input type="text" id="start" name="start"><br>
End Date: <input type="text" id="end" name="end"> <br>
<input type="submit">
</form>

</body>
</html>

这是&#39; test_get.php&#39;:

<html>
<body>

<form onSubmit="return process();">
Start Date: <?php echo $_GET["start"]; ?><br>
End Date: <?php echo $_GET["end"]; ?>
    </form>
</body>

<script>
function process()
{
var url="http://99.999.999.999:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug," + document.getElementById("start").value + "," + document.getElementById("end").value;
location.href=url;
return false;
}
</script>

</html> 

但它不起作用。我也试过这个:

<html>
<body>

<?php
$xml=simplexml_load_file("http://99.999.999.999:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug," + document.getElementById("start").value + "," + document.getElementById("end").value"); or die("Error: Cannot create object");
echo $xml->field . "<br>";
echo $xml->data . "<br>";
?> 
</body>
</html> 

但是,再一次,没有运气。任何人都能看到我失踪的东西吗?

如果需要,我还可以分享我的.xml表单。非常感谢任何帮助 - 我已经解决了这几天!谢谢! :)

更新:这是我更新的test_get.php代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>

<?php
$url = '"http://69.239.118.197:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug,'.$_GET['start'].','.$_GET['end'].'"';
$xml = simplexml_load_file($url);
echo $xml->field . "<br>";
echo $xml->data . "<br>";
echo var_dump($xml). "<br />";
?> 


</body>
</html> 

1 个答案:

答案 0 :(得分:1)

在您发布的最后一段代码中,您使用的是脚本标记之外的JavaScript,因此这绝对不会起作用。您是否尝试过将$ _GET变量放入查询字符串?

注意*我提取了查询字符串以提高可读性。

我很难在你的环境之外验证这对你有用

你有这个:

$xml=simplexml_load_file("http://99.999.999.999:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug," + document.getElementById("start").value + "," + document.getElementById("end").value"); or die("Error: Cannot create object");

我推荐这个:

$url = '"http://99.999.999.999:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug,'.$_GET['start'].','.$_GET['end'].'"';
$xml = simplexml_load_file($url);

************* EDIT *****************

因此,在尝试操作simplexml_load_file返回的数据后,我决定尝试file_get_contents。下面的解决方案以字符串格式返回xml文件中的数据值。

$_GET['start'] = '08/30/2017';
$_GET['end'] = '08/31/2017';

$xml = file_get_contents("http://69.239.118.197:81/fmi/xml/fmresultset.xml?-db=Front_Desk&-lay=WebRoomQuery&-findany&-script=WebQueryPSOS&-script.param=snug,".$_GET['start'].','.$_GET['end'].'"');

echo $xml;