Autor Zpráva
tomasš
Profil *
Dobrý den (večer),
chtěl bych Vás poprosit, jestli by mě mohl někdo trošku nakopnout co se týká XML s PHP. Věty ve stylu prošel jsem všechno možné atd. si odpustím. Na fóru jsem si našel jistý příklad, který jsem si trošku transformoval, protože vypadal tak jak xml zatím chápu. bohužel to nic provede. Takže mám MySQL databázi, kde mám informace o dodavatelích, pokusil jsem se tedy vytvořil jednoduchý XML dokument pouze s jednou položkou,ktera obsahuje id_dodavatel a nazev_dodavatel. A pomocí souboru ecxport.php tyho hodnoty načíst do databáze, bohužel hodnoty se tam neuloží. Mohl by někdo poradit jak na to?Popřípadě jestli jdu správným směrem.Předem moc díky

soubor export.ph
<?php
include "connect.php";

$xml = simplexml_load_file("prvni.xml");

if(isset($_POST['submit']))
{
    foreach ($xml->dodavatel as $value) 
    {
    $id_dodavatel = $value->id_dodavatel;
    $nazev_dodavatel = $value->nazev_dodavatel;
    mysql_query("INSERT INTO dodavatel(id_dodavatel, nazev_dodavatel) VALUES ($id_dodavatel, $nazev_dodavatel)");
    } 
}
?>
<form method="post">
<input type="submit" name="submit" value="načti">
</form>


soubor prvni.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<dodavatel>
<id_dodavatel>78</id_dodavatel>
<nazev_dodavatel>GSS</nazev_dodavatel>
</dodavatel>
Mike8748
Profil
uprav xml soubor. tak jak to mas ted se totiz odkazujes na neexistujici elementy

<?xml version="1.0" encoding="iso-8859-2"?>
<dodavatele>
<dodavatel>
<id_dodavatel>78</id_dodavatel>
<nazev_dodavatel>GSS</nazev_dodavatel>
</dodavatel>
</dodavatele>


xml soubor musi mit vzdy jeden korenovy element, ktery pri pristupu pomoci simplexml odpovida prave objektu $xml.
xml soubor jak ho mas ty by na $xml->id_dodavatel vracel 78, ale pak by to neslo prochazet cyklem, a ani pridat dalsiho dodavatele
tomasš
Profil *
Děkuji za radu, upravil jsem XML soubor podle Vás, ale bohužel po stisku tlačítka submit se nic neprovede a do databáze se nic nenahraje:-/. Nevíte, kde jinde by mohla být chyba?
Kajman_
Profil *
$id_dodavatel = mysql_real_escape_string($value->id_dodavatel);
$nazev_dodavatel = mysql_real_escape_string($value->nazev_dodavatel);
mysql_query($q="INSERT INTO dodavatel(id_dodavatel, nazev_dodavatel) VALUES ('$id_dodavatel', '$nazev_dodavatel')") or echo "<br>Dotaz:$q<br>Chyba:".mysql_error();
tomasš
Profil *
Moc díky...už to krásně frčí.
tomasš
Profil *
Mohl bych se zeptat, dá se někde v tom xml udělat php kde budu přes while cyklus načítat jednotlivé položky?
Kajman_
Profil *
XML samozřejmě můžete generovat dynamicky - třeba i díky php. Otázkou je, proč to tedy nedávat přímo while cyklem do db.
tomasš
Profil *
už se mi to podařilo rozchodit, jen mi to tu házi jednu chybu. Vytvořil jsem si input na procházení soubory a soubor který si vyberu si ložím do proměnné a tu použiji v $xml = simplexml_load_file("$_POST['open']"), soubor se mi načte, stejně tak i data se nahrají, jen to píše tuho chybu.

Chyba:
Warning: simplexml_load_file() [function.simplexml-load-file.html]: I/O warning : failed to load external entity "" in C:\ComplexWebServer\http_docs\lekarna\export.php on line 6


Kód:
<?php
include "connect.php";

$open=isset($_POST['open']);

$xml = simplexml_load_file("$open");

if(isset($_POST['submit']))
{
    foreach ($xml->dodavatel as $value) 
    {
$id_dodavatel = mysql_real_escape_string($value->id_dodavatel);
$nazev_dodavatel = mysql_real_escape_string($value->nazev_dodavatel);
mysql_query($q="INSERT INTO dodavatel(id_dodavatel, nazev_dodavatel) VALUES ('$id_dodavatel', '$nazev_dodavatel')") or mysql_error();
    } 
}
?>
<form method="post">
<input type="file" name="open">
<input type="submit" name="submit" value="načti">
</form>
tiso
Profil
tomasš: funkcia isset() na riadku 4 vracia true alebo false, a to nie je názov súboru...
tomasš
Profil *
odstanil jsem tedy isset, nicméně, při startu to píše to samé, ale tentokrát se mu nelíbí asi ta proměnná $open na řádku 6. Asi neexistuje nějaký jednoduší způsob jak se vyhnout těmto problémům?

Warning: simplexml_load_file() [function.simplexml-load-file.html]: I/O warning : failed to load external entity "" in ... at line 6
Chamurappi
Profil
Reaguji na tomasše:
<input type="file" name="open">“ … „$_POST['open']
Nepracuje se s uploadovanými soubory náhodou jinak?

<form method="post">
Nepíše se všude, kde se povídá o uploadu souborů, že formulář musí mít atribut enctype="multipart/form-data"?
tomasš
Profil *
S tím enctype="multipart/form-data máte pravdu to by v tom formu být mělo, asi jsem koukal na špatný zdroj:-(. Jinak já jsem tu práci se soubory pochopil, že pokud dám echo "$_POST['open']" tak se mi vypíše jméno souboru, protože původně v tom $xml = simplexml_load_file("soubor.xml"); byl daný natvrdo název toho souboru který se má načíst do databáze, no a pokud teda vím jméno souboru, který chci načíst tak to nacpu do toho $xml? jestli se mílím tak mě podle názvů topicku Nakopněte a to doslova. děkuji

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: