#php #mysql #xml #google-maps-markers #laravel-8
#php #mysql #xml #google-карты-маркеры #laravel-8
Вопрос:
Я новичок в фреймворке Laravel PHP, поэтому я не очень хорошо знаком с ним. Мне нужна помощь в реализации примера кода из Google Maps. Для получения широты и долготы. А также некоторую информацию из базы данных, которую я создал локально в phpMyAdmin для маркеров. Проблема, с которой я сталкиваюсь, заключается в том, что Laravel не распознает функции MySQL (неопределенные функции). Я видел в документации, что он использует фасады DB::raw(your SQL)
, но я попытался реализовать это безрезультатно. Я не загружаю никакого кода, потому что я только что создал скелет и взял код из Google Maps API. Я обнаружил, что MySQLi заменил функции MySQL, поэтому я изменил код, но я все еще не разобрался domxml_new_doc("1.0")
.
$host = "127.0.0.1";
$username = "user";
$password = "";
$database = "db";
$con = mysqli_connect($host, $username, $password, $database);
// Start XML file, create parent node
$doc = domxml_new_doc("1.0"); //Undefined function
$node = $doc->create_element("markers");
$parnode = $doc->append_child($node);
// Opens a connection to a MySQL server
$connection = mysqli_connect('localhost', $username, $password);
if (!$connection) {
die('Not connected : ' . mysqli_error($con));
}
// Set the active MySQL database
$db_selected = mysqli_select_db($database, $connection);
if (!$db_selected) {
die ('Can't use db : ' . mysqli_error($con));
}
// Select all the rows in the markers table
$query = "SELECT * FROM gasstations WHERE 1";
$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)) {
// Add to XML document node
$node = $doc->create_element("marker");
$newnode = $parnode->append_child($node);
$newnode->set_attribute("id", $row['id']);
$newnode->set_attribute("name", $row['name']);
$newnode->set_attribute("address", $row['address']);
$newnode->set_attribute("lat", $row['lat']);
$newnode->set_attribute("lng", $row['lng']);
$newnode->set_attribute("type", $row['type']);
}
$xmlfile = $doc->dump_mem();
echo $xmlfile;
Ответ №1:
domxml_new_doc()
является старой функцией PHP 4 и не существует в текущем PHP. Используйте DOMDocument
класс и его методы.
Вот пример:
$records = [
['id' => 'id42', 'name' => 'foo']
];
$document = new DOMDocument('1.0', 'UTF-8');
$document->appendChild(
$markers = $document->createElement('markers')
);
foreach ($records as $row) {
$markers->appendChild(
$marker = $document->createElement('marker')
);
$marker->setAttribute('id', $row['id']);
$marker->setAttribute('name', $row['name']);
}
$document->formatOutput = TRUE;
echo $document->saveXML();
Вывод:
<?xml version="1.0" encoding="UTF-8"?>
<markers>
<marker id="id42" name="foo"/>
</markers>