XML данните не могат да се показват от mysql с помощта на php

Следвам този урок, когато разбрах, мога Не виждам очаквания резултат, защото не мога да видя данните си в 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.


person woninana    schedule 04.07.2011    source източник
comment
Не мога да видя данните си в xml формат, който не е достатъчно описателен, за да открия грешката. Моля, обяснете какво очаквате да получите за изход и какъв е действителният резултат, включително всички съобщения за грешка. Уверете се, че сте премахнали всички оператори за потискане на грешки. Може също така да помислите за обслужване на XML като приложение/xml.   -  person Gordon    schedule 04.07.2011
comment
@Gordon Редактирах въпроса, той е в последната част   -  person woninana    schedule 04.07.2011
comment
Проверете регистъра на грешките си и/или разрешете докладването на грешки и се уверете, че премахнете всички оператори за потискане на грешки. var_dump реда $, за да видите дали има съдържание в него   -  person Gordon    schedule 04.07.2011
comment
Опитайте да коментирате заглавката (Content-type: text/xml), след това първо премахнете @ от началото на @mysql_fetch_assoc (тъй като @ потиска грешките) и след това в този while цикъл добавете echo '<pre>'.print_r($row,true).'</pre>'; Това просто ще види дали вашият заявката всъщност връща всякакви данни. Също така се уверете, че сте задали lat/lng/radius като $_GET променливи в URL адреса, напр. page.php?lat=27.3748&lng=127.7475&radius=50   -  person Benno    schedule 04.07.2011
comment
@Gordon Получих тази грешка за активиране на доклад за грешка Undefined index: lat in C:\xampp\htdocs\demo\map\phpsqlsearch_genxml.php on line 4 три от тази грешка.   -  person woninana    schedule 05.07.2011
comment
@Benno какъв URL имаш предвид?   -  person woninana    schedule 05.07.2011
comment
Ако се опитвате да изхвърлите xml данните на страницата, на която се намирате (phpsqlsearch_genxml.php), трябва да посочите $_GET параметри, защото подавате $_GET променливи (ред 4-6) към заявката за търсене (ред 27- 30). Така E.G. Ако отваряте тази страница на /demo/map/phpsqlsearch_genxml.php, трябва вместо това да заредите този URL адрес: /demo/map/phpsqlsearch_genxml.php?lat=127.4364636&lng=26.23523&radius=50 (с изключение на промяна на други параметри за ширина/дължина, които са във вашата база данни). напр. $_GET['radius'] тук е 50. Това ще зададе параметрите за широчина, дължина и радиус, които заявката ви използва, за да върне информацията.   -  person Benno    schedule 05.07.2011


Отговори (3)


Първо преминаване за проблеми:

<?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();
?>

Пробвайте и ни уведомете за всички допълнителни съобщения за грешка, които виждате.

person Luke Stevenson    schedule 05.07.2011
comment
Има това предупреждение: Warning: Cannot modify header information - headers already sent by на линия, където има header( "Content-type: text/xml" ); - person woninana; 05.07.2011
comment
Това просто означава, че нещо е било изведено на страницата, преди да зададете типа на съдържанието... Може да е интервал, табулация или нещо друго, което извеждате чрез ехо, преди да зададете типа съдържание. Нямате интервал преди ‹?php ? във вашия файл? - person Benno; 05.07.2011
comment
Добавена проверка за вече изпратени заглавки преди header() повикване, за да се избегнат проблеми, докладвани от @Stupefy101 - person Luke Stevenson; 06.07.2011

Имам същия проблем, няма данни, тук е грешката

Грешка в MySQL - Няма върнати записи "ИЗБЕРЕТЕ адрес, име, ширина, lng, ( 3959 * acos( cos( radians('37') ) * cos( radians( lat) ) * cos( radians( lng) - radians('- 122') ) + sin( радиани('37') ) * sin( радиани( lat) ) ) ) КАТО разстояние ОТ маркерите, ИМАЩИ разстояние ‹ '25' ПОРЪЧКА ПО ГРАНИЦА за разстояние 0 , 20"

базата данни е попълнена и изпращам get vars, като това: http://localhost/superga/lib/phpsqlsearch_genxml.php?lat=37&lng=-122&radius=25

Благодаря

person Fulvio Futre Corsini    schedule 26.04.2012

Следвам същия урок и попаднах на завой на пътя в същата точка. Следвах всички предложения по-горе и все още не намирам решение. Моята грешка е;

Тази страница съдържа следните грешки: грешка на ред 1 в колона 1: Документът е празен По-долу е рендиране на страницата до първата грешка.

Някой да го накара да работи?

Паула

person Phughes    schedule 14.04.2014
comment
Ако някой все още не получава резултати, използвайки радиус от 25, увеличете го до 25 000 и трябва да работи. Загубих много дни, опитвайки се да разбера това. Надяваме се, че ще спаси част от вас. - person Phughes; 16.04.2014