2016-04-23 5 views
-1

Ich habe ein Problem mit XML-Daten aus MySQL zu erzeugen, die auf den Nachrichtenkopf header ("Content-type: text/xml") verwandt zu sein scheinen;This link bezieht sich auf dieses Problem aber nicht das Problem in meinem Fall lösen. Der Beitrag bezieht sich auf die 2007 GMap Beispiel nicht the updated 2009 versionMySQL XML-Message-Header Problem

Hier ist der Code vollständig ist ...

$center_lat = $_GET["lat"]; 
$center_lng = $_GET["lng"]; 
$radius = $_GET["radius"]; 
// Start XML file, create parent node 
$dom = new DOMDocument("1.0"); 
$node = $dom->createElement("markers"); 
$parnode = $dom->appendChild($node); 

// Opens a connection to a mySQL server 
$connection=mysql_connect ("99.99.99", "abcdefg", "zzzzzz"); 
if (!$connection) { 
    die("Not connected : " . mysql_error()); 
} 

// Set the active mySQL database 
$db_selected = mysql_select_db("xxxxxxx", $connection); 
if (!$db_selected) { 
    die ("Can\'t use db : " . mysql_error()); 
} 

// Search the rows in the markers table 
$query = sprintf("SELECT address, name, lat, lng, (3959 * acos(cos(radians('%s')) * cos(radians(lat)) * cos(radians(lng) - radians('%s')) + sin(radians('%s')) * sin(radians(lat)))) AS distance FROM markers ", 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($center_lng), 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($radius)); 
$result = mysql_query($query); 

if (!$result) { 
    die("Invalid query: " . mysql_error()); 
} 
// - !!!! This is the problem line !!!!! 
//header("Content-type: text/xml"); 

// Iterate through the rows, adding XML nodes for each 
$i = 1; 
while ($row = mysql_fetch_assoc($result)){ 
    echo $i.$row['name']."<br>"; // names correctly displayed 
    $node = $dom->createElement("marker"); 
    $newnode = $parnode->appendChild($node); 
    $newnode->setAttribute("name", $row['name']); 
    $newnode->setAttribute("address", $row['address']); 
    $newnode->setAttribute("lat", $row['lat']); 
    $newnode->setAttribute("lng", $row['lng']); 
    $newnode->setAttribute("distance", $row['distance']); 
    $i = $i + 1; 
} 

echo $dom->saveXML(); 
echo "done ".$i; // Script ends ok $i = 16 

Alles scheint wie durch die Echo Aussagen gezeigt zu arbeiten - jedoch aufgrund des Fehlens In der Kopfzeile der Nachricht wird kein xml auf dem Bildschirm angezeigt.

Was mache ich falsch?

+0

prüft diese Frage über den PHP-End-Tag „?>“ Bei der Ausgabe über http senden. Kann das wird – ahPo

+0

Dank user2340218 helfen - nach oben, was Sie führte die mir über die deprecation Warnung zu fragen. – PeterK900

+0

Sie haben im Grunde etwas Code und sagte "funktioniert nicht". Wir können den Code nicht selbst ausführen, da wir Ihren Server und Ihre Datenbank nicht haben. Würde es Ihnen etwas ausmachen, die Frage zu bearbeiten und zu erklären, warum Ihr Code Ihren Erwartungen nicht entspricht? –

Antwort

-1

Die Antwort scheint nicht zu ignorieren die Warnungen über veralteten Code zu sein - das heißt verwenden mysqli_ mysql_ nicht! Dies ist der Grund, warum ich vermute, dass das XML als schlecht formatiert angesehen wurde.

Hier ist Code, der keinen Fehler geben ..

$con=mysqli_connect("servername","user","pwd","database"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

// Get parameters from URL 
$center_lat = $_GET["lat"]; 
$center_lng = $_GET["lng"]; 
$radius = $_GET["radius"]; 

// Start XML file, create parent node 
$dom = new DOMDocument("1.0"); 
$node = $dom->createElement("markers"); 
$parnode = $dom->appendChild($node); 

// Search the rows in the markers table 
$query = sprintf("SELECT address, name, lat, lng, (3959 * acos(cos(radians('%s')) * cos(radians(lat)) * cos(radians(lng) - radians('%s')) + sin(radians('%s')) * sin(radians(lat)))) AS distance FROM markers", // HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    mysqli_real_escape_string($con, $center_lat), 
    mysqli_real_escape_string($con, $center_lng), 
    mysqli_real_escape_string($con, $center_lat), 
    mysqli_real_escape_string($con, $radius)); 
//$result = mysql_query($query); 
$result=mysqli_query($con,$query); 

if (!$result) { 
    die("Invalid query: " . mysqli_error($con)); 
} 

header("Content-type: text/xml"); 

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysqli_fetch_assoc($result)){ 
    $node = $dom->createElement("marker"); 
    $newnode = $parnode->appendChild($node); 
    $newnode->setAttribute("name", $row['name']); 
    $newnode->setAttribute("address", $row['address']); 
    $newnode->setAttribute("lat", $row['lat']); 
    $newnode->setAttribute("lng", $row['lng']); 
    $newnode->setAttribute("distance", $row['distance']); 
} 

echo $dom->saveXML();