[英]automatically update xml feed from mysql db without refresh the page
我必須使用php代碼從mysql數據庫開發一個xml提要。在這里,我必須在mysql數據庫中插入或更新任何數據,這意味着插入和更新的數據會自動更改並插入到xml提要中,而無需刷新頁面。我發展這個。請幫助我。
我用下面的代碼:
$catname=func_query_first_cell("select status from $sql_tbl[orders] where status='Q'");
$file= fopen("orderdetails1.xml", "w");
$_xml ="<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\r\n";
$_xml .="\t<Feed>\r\n";
$_xml .="\t<order>\r\n";
$_xml .="\t<status>" .htmlspecialchars($catname,ENT_QUOTES). "</status>\r\n";
$page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
$limit = 2;
$startpoint = ($page * $limit) - $limit;
$statement = "`xcart_orders` where `active` = 1";
$counterr=0;
$r=func_query("select * from $sql_tbl[orders] LIMIT {$startpoint}, {$limit}");
foreach($r as $n)
{
$products=func_query_first("select * from $sql_tbl[orders] where status='Q'");
$products=func_query_first("select product from $sql_tbl[order_details] where orderid=$n[orderid]");
$infeed_counter++;
echo $manufacturer."=====";
if($row[avail]>0)
$avail='Y';
else
$avail='N';
$_xml .="\t<Order>\r\n";
$_xml .="\t<orderid>" .$n[orderid]. "</orderid>\r\n";
$_xml .="\t<login>" . htmlspecialchars(strip_tags(substr($n[login],0,50)) , ENT_QUOTES ). "</login>\r\n";
$_xml .="\t<total>" . $n[total]. "</total>\r\n";
$_xml .="\t<product>" . $products[product]. "</product>\r\n";
$_xml .="\t</Order>\r\n";
}
$_xml .="\t</order>\r\n";
$_xml .="\t</Feed>\r\n";
fwrite($file, $_xml);
fclose($file);
echo "XML version of products available here with $infeed_counter products. <a href=\"orderdetails1.xml?page=$page\">View the XML.</a>";
exit;
?>
現在我得到了下面的XML提要:
<Feed>
<order>
<status>Q</status>
<Order>
<orderid>1</orderid>
<login>krishna</login>
<total>399.99</total>
<product>Designing Web Usability</product>
</Order>
<Order>
<orderid>65</orderid>
<login>krishna</login>
<total>399.99</total>
<product>Three Stone Princess Cut Diamond Ring</product>
</Order>
<Order>
<orderid>2</orderid>
<login>krishna</login>
<total>34.65</total>
<product>Three Stone Princess Cut Diamond Ring</product>
</Order>
現在我想將我的mysql數據庫上的orderid = 1的總數從399.99更改為500.00,這意味着必須刷新頁面。然后,這里只更改了我的xml feed。但是我希望解決方案是數據庫更改會自動更新xml提要,但不刷新頁面。請幫助我。我該如何開發它。
嘗試這樣:feed.php
$catname = func_query_first_cell("select status from $sql_tbl[orders] where status='Q'");
$file = fopen("orderdetails1.xml", "w");
$_xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
$_xml .= "<Feed>";
$_xml .= "<order>";
$_xml .= "<status>" . htmlspecialchars($catname, ENT_QUOTES) . "</status>";
$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]);
$limit = 2;
$startpoint = ($page * $limit) - $limit;
$statement = "`xcart_orders` where `active` = 1";
$counterr = 0;
$r = func_query("select * from $sql_tbl[orders] LIMIT {$startpoint}, {$limit}");
foreach ($r as $n)
{
$products = func_query_first("select * from $sql_tbl[orders] where status='Q'");
$products = func_query_first("select product from $sql_tbl[order_details] where orderid=$n[orderid]");
$infeed_counter++;
// echo $manufacturer."=====";
if ($row[avail] > 0)
$avail = 'Y';
else
$avail = 'N';
$_xml .= "<Order>";
$_xml .= "<orderid>" . $n[orderid] . "</orderid>";
$_xml .= "<login>" . htmlspecialchars(strip_tags(substr($n[login], 0, 50)), ENT_QUOTES) . "</login>";
$_xml .= "<total>" . $n[total] . "</total>";
$_xml .= "<product>" . $products[product] . "</product>";
$_xml .= "</Order>";
}
$_xml .= "</order>";
$_xml .= "</Feed>";
header ("Content-Type:text/xml");
echo $_xml;
在XML feed URL訪問中,如下所示:
您需要使用一種稱為長輪詢的技術。 長輪詢使連接在一定時間內保持打開狀態。 在此期間,它將檢查數據庫中是否有任何更改。 如果是,它將斷開連接並將這些更改發送到前端。 然后立即啟動另一個連接。 您將在此處找到更多信息。 http://techoctave.com/c7/posts/60-simple-long-polling-example-with-javascript-and-jquery
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.