2011-07-04 14 views
0

thisチュートリアルに従っています。私は、XML形式でデータを見ることができないため、期待される出力を見ることができません。私は設定データを少し変更しました、それが誤動作の原因であるかどうかわかりませんでしたか?PHPを使用してmysqlからXMLデータを表示することができません

<?php 

// 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); 

// Opens a connection to a mySQL server 
$connection=mysql_connect (localhost, 'root', '12345678'); 
if (!$connection) { 
    die("Not connected : " . mysql_error()); 
} 

// Set the active mySQL database 
$db_selected = mysql_select_db('demo', $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 HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    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()); 
} 

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

// Iterate through the rows, adding XML nodes for each 
while ($row = @mysql_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(); 
?> 

私はこのhttp://gmaps-samples.googlecode.com/svn/trunk/articles-phpsqlsearch/phpsqlsearch_expectedoutput.xmlのような同様の結果を期待していますが、何も表示されません。それはどのようなデータも持っていないようですが、私はすでにmysqlにデータをインポートしています。

+1

「私のデータをxml形式で見ることができません」というエラーを見つけるのに十分ではありません。エラーメッセージを含め、出力のために得られるものと実際の結果が何であるかを説明してください。すべてのエラー抑制演算子を削除してください。また、XMLをapplication/xmlとして扱うことを検討することもできます。 – Gordon

+0

@Gordon私は最後の部分にある質問を編集しました – woninana

+0

エラーログを確認し、[エラー報告を有効にする](http://stackoverflow.com/questions/1824282/php-production-server-turn-on-エラーメッセージ)、すべてのエラー抑制演算子を削除してください。 $行を 'var_dump'してコンテンツがあるかどうかを確認します – Gordon

答えて

1

問題については、最初のパス:

<?php 

// Get parameters from URL 
$center_lat = (isset($_GET["lat"]) ? $_GET["lat"] : 0); # You could replace these "0"s with the 
$center_lng = (isset($_GET["lng"]) ? $_GET["lng"] : 0); # Lat/Lng of a default location. 
$radius  = (isset($_GET["radius"]) ? $_GET["radius"] : 10); # Again, default 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 
if(!($connection = mysql_connect('localhost' , 'root' , '12345678'))) # The SQL Server address must be a string or IP address 
    die("MySQL Error - Failed to connect to Server : " . mysql_error()); 

// Set the active mySQL database 
if(!mysql_select_db('demo' , $connection)); 
    die("MySQL Error - Failed to connect to Database : " . 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 HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    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("MySQL Error - Invalid query: " . mysql_error() . ' "'.$query.'"'); # During debugging, echo the SQL Statement on Error 

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

// Iterate through the rows, adding XML nodes for each 
if(mysql_num_rows($result)){ 
    while ($row = @mysql_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']); 
    } 
}else 
    die('MySQL Error - No Records Returned "'.$query.'"'); 

echo $dom->saveXML(); 
?> 

は行くことを与える、と私たちはあなたが見ている任意の更なるエラーメッセージをお知らせください。

+0

警告:ヘッダー情報を変更することはできません。ヘッダー(「Content-type:text/xml」);「 – woninana

+1

」がある行に、既に送信されたヘッダーは変更できません。あなたがcontent-typeを設定する前に、ページを表示することができます。コンテンツタイプを設定する前に、スペース、タブ、または何かをエコーアウトすることができます。 <?php?の前に空白がありません。あなたのファイルに? – Benno

+0

@ Stupefy101によって報告された問題を避けるために、 'header()'コールの前にすでに送られているヘッダのチェックを追加しました –

0

私は同じ問題を抱えているが、データがそこにいるん、エラー

MySQLのエラーをhere'is - 情報はありませんが3959の* ACOS(COS(ラジアン((、緯度住所、名前、LNGをSELECT」が返さラジアン(ラジアン))))AS(ラジアン(ラジアン)))AS距離<距離LIMIT 0 BY '25' のORDERを有するマーカーからの距離は20"

データベースが移入され、私はこのように、VARSを送ってもらう: http://localhost/superga/lib/phpsqlsearch_genxml.php?lat=37&lng=-122&radius=25

おかげ

0

私は同じチュートリアルに従っており、同じポイントで道路の曲がり角を打っています。 私は上記のすべての提案に従っていますが、依然として解決策はありません。 私のエラーは次のとおりです。

このページには以下のエラーが含まれています。 1行目のエラー:1の文書が空です。 以下は最初のエラーまでのページのレンダリングです。

誰でも手に入りますか?

ポーラ

+0

25の半径を使って結果が得られない人は25000に増やしてください。私はその1つを理解しようと多くの時間を無駄にした。うまくいけばそれはあなたの残りの人のいくつかを救うでしょう。 – Phughes

関連する問題