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

PHP PHP import dat z XML do databáze pomocí PHP American English version English version

Aktivity (1)
Avatar
Petr Mezera
Člen
Avatar
Petr Mezera:6. září 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. září 17:38
 
Odpovědět 6. září 17:35
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:6. září 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. září 20:12
Avatar
Petr Mezera
Člen
Avatar
Odpovídá na Šimon Rataj
Petr Mezera:6. září 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. září 21:07
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:6. září 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 6. září 21:13
Avatar
Petr Mezera
Člen
Avatar
Odpovídá na Šimon Rataj
Petr Mezera:7. září 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. září 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.