Я пытаюсь сделать мой URL-адрес XML-файла динамическим, так что несколько человек могут использовать мой сайт и запрашивать данные одновременно. Я приказываю сделать это, я вставляю переменную php случайного числа перед моим xml-файлом. По какой-то причине у меня возникают проблемы с созданием и записью xml-файлов при попытке использовать эту переменную. Когда я использую статический URL-адрес, например, «wine.xml», он работает нормально.
$fp = fopen($randnumb.'wine.xml', 'w'); fwrite($fp, $string); fclose($fp);
Возможно, я ошибаюсь (поэтому кто-нибудь позволяет мне поправить меня), если у вас есть xml и вы хотите, чтобы многие люди его читали, почему вам нужно сделать несколько копий?
Разве сервер не должен выполнять эту работу, подавая файл на многие пэбли? Если я ошибаюсь, и вы пытаетесь сделать что-то еще, то этот php работает нормально. Таким образом, вам не нужно искать ошибки в php.
<?php $fileName = rand().'file.xml'; $fp = fopen($fileName, 'w'); fwrite($fp, 'Hello!'); fclose($fp); ?> <?php $handle = fopen($fileName, "rb"); $contents = fread($handle, filesize($fileName)); print_r($contents); fclose($handle); ?>
var winexml=loadXMLDoc("<?=$randnumb?>wine.xml");
<?
работа для вас? заставляет wamp запрашивать <?PHP
(должен быть php.ini)
Почему у вас есть секунда = в параметрах loadxmldoc ?! Это работает:
<?PHP $dbq="\""; echo 'var winexml=loadXMLDoc(',$dbq,$randnumb,'wine.xml',$dbq,');'; ?>
Хорошо, я вижу. Я не знаю, каково вам предпочтение окончательного отображения XML-файлов, однако в этих сценариях есть вещи, которые могут позволить вам выполнить свою работу, просто приспособив ее к вашим потребностям.
index.html и getXml.php
<html> <head> <script type="text/javascript"> var request = false; try { request = new XMLHttpRequest(); } catch (trymicrosoft) { try { request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (othermicrosoft) { try { request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed) { request = false; } } } if (!request) alert("Error initializing XMLHttpRequest!"); </script> <script type="text/javascript"> var fileOption; var fileName; function runPhp(makeFile) { var url = "getXml.php"; fileOption = makeFile; var params = "makeFile=" +makeFile+""; request.open("POST", url, true); //Some http headers must be set along with any POST request. request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf-8"); request.setRequestHeader("Content-length", params.length); request.setRequestHeader("Connection", "close"); request.onreadystatechange = updatePage; request.send(params); }//////////////////// function getXml( ) { if(fileName==null){alert('please click create file first');return;} var url = fileName; var params = null; request.open("POST", url, true); request.setRequestHeader("Connection", "close"); request.onreadystatechange = displayFile; request.send(params); }//////////////////// //You're looking for a status code of 200 which simply means okay. function updatePage() { if (request.readyState == 4) { if (request.status == 200) { if(fileOption==1) {fileName=request.responseText; return;} document.getElementById('divResults').innerHTML=request.responseText; document.getElementById('textareaResults').innerHTML=request.responseText; } else{ //alert("status is " + request.status); } } } function displayFile() { if (request.readyState == 4) { if (request.status == 200) { document.getElementById('textareaResults').innerHTML=request.responseText; document.getElementById('divResults').innerHTML='File loaded in text area above.'; } else{ //alert("status is " + request.status); } } } </script> </head> <body > <span style="background-color:blue;color:yellow;" onClick="runPhp(0)"/> Click for Xml Results.<br> (<font color=pink>I prefer this one!!!</font>) </span><br><br> <span style="background-color:blue;color:yellow;" onClick="runPhp(1)"/> Click to create an xml file.<br> </span> <span style="background-color:blue;color:yellow;" onClick="getXml(1)"/> Click to read the xml file.<br> </span> <textarea rows="10" cols="88" id="textareaResults"> </textarea> <br><br> <pre><div id="divResults"></div></pre> <br><br> </body> </html> <?PHP mysql_connect('localhost', 'root',''); mysql_select_db("mysql"); $query="select * from help_category;"; $resultID = mysql_query($query ) or die("Data not found."); $xml_output = "<?xml version=\"1.0\"?>\n"; $xml_output .= "<records>\n"; for($x = 0 ; $x < mysql_num_rows($resultID) ; $x++){ $row = mysql_fetch_assoc($resultID); $xml_output .= "\t<record>\n"; $xml_output .= "\t\t<help_category_id>" . $row['help_category_id'] . "</help_category_id>\n"; $xml_output .= "\t\t<name>" . $row['name'] . "</name>\n"; $xml_output .= "\t\t<parent_category_id>" . $row['parent_category_id'] . "</parent_category_id>\n"; $xml_output .= "\t</record>\n"; } $xml_output .= "</records>"; if($_POST['makeFile']==0) echo $xml_output; else { $fileName = rand().'file.xml'; $fp = fopen($fileName, 'w'); fwrite($fp, $xml_output); fclose($fp); $dbq="\""; echo $fileName; } ?>