NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: import dat z XML do databáze pomocí PHP

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr Mezera
Člen
Avatar
Petr Mezera:6.9.2018 17:35

Ahoj, měl bych dotaz, jak získat data z XML a pak je vložit do databáze. V PHP ještě nejsem tak zaběhlýa vím že na internetu je toho spousta ale nepodařilo se mi nikde najít postup, kde by byla stejná struktura XML souboru, jakou mám k dispozici.

Většinou jsem našel struktury typu:

<xml>
        <jmeno>TEXT</jmeno>
        <auto>TEXT</auto>
        <misto>TEXT</misto>
</xml>

XML, ze kterého však potřebuji získat data má následující strukturu (jakoby nepárový tag):

<vypis>
        <jmeno id="1" jmeno="text1" />
        <jmeno id="2" jmeno="text2" />
        <jmeno id="3" jmeno="text3" />
</vypis>

Zkusil jsem: Podle různých návodů jsem sesmolil následující kód, bohužel se mi nepodařilo získat data.

<?php

// načtení dokumentu XML
$xml = simplexml_load_file("soubor.xml");

foreach ($xml ->vypis->jmeno as $polozka)
{

  $intId   = $polozka -> id;
  $strJmeno = $polozka -> jmeno;

        $query="UPDATE games SET place='$strJmeno' WHERE id_import='$indId'";
        echo $query;
}
echo "done";
?>

Chci docílit: Jednoduše bych potřeboval v databázi vložit hodnotu jedné proměnné do tabulky na základě id v XML, které je shodné s id v databázi.

Předem moc díky!

Editováno 6.9.2018 17:38
 
Odpovědět
6.9.2018 17:35
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:6.9.2018 20:12

Jaký máš začátek xml? Já například používám:

<?xml version="1.0" ?>
<rss version="0.91">
        <!-- Sem vlož své informace -->
</rss>
 
Nahoru Odpovědět
6.9.2018 20:12
Avatar
Petr Mezera
Člen
Avatar
Odpovídá na Šimon Rataj
Petr Mezera:6.9.2018 21:07

xml mi začíná takto:

<?xml version="1.0" encoding="utf-8"?>
<Schedule tournamentId="683" tournamentType="regular">
        <Game tnId="683" id="78428" arena="arena1"/>
        <Game tnId="683" id="78429" arena="arena2"/>
        <Game tnId="683" id="78430" arena="arena3"/>
</Schedule>

Do toho SQL, co je uvedené výše bych potřeboval dostat proměnné „id“ a „arena“. Jestli to je takto srozumitelné?

 
Nahoru Odpovědět
6.9.2018 21:07
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:6.9.2018 21:13

Místo $polozka->id použij $polozka->attributes()['id'].
Jestli ti to nepůjde, zkus vložit Schedule ještě do <rss version="0.91"></rss>
Často se také vyplatí vypsat si hodnoty proměnných. Jestli ti to teď nepůjde, zkus si vypsat $xml pomocí print_r($xml).

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
6.9.2018 21:13
Avatar
Petr Mezera
Člen
Avatar
Odpovídá na Šimon Rataj
Petr Mezera:7.9.2018 0:25

Děkuju moc!
Pomohlo přidat $polozka->attributes()['id'] a potom u for loop namísto Schedule volat Game :)

 
Nahoru Odpovědět
7.9.2018 0:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.