Laravel 8 реализует XML-функции PHP DOM для вывода XML

Я новичок в PHP-фреймворке Laravel, поэтому я не очень с ним знаком. Мне нужна помощь в реализации примера кода из 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;
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 461
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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>

Другие вопросы по теме