Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
discount week 80

Diskuze: čítanie xml dát z url adresy

Aktivity
Avatar
Peter Večera
Brigádník
Avatar
Peter Večera:16.5.2020 10:17

Za použití jazyka PHP vytvořte:

  1. formulář pro zadávání IČO
  2. formulář bude napojen na ARES (https://wwwinfo.mfcr.cz/…_xml.html.cz)
  3. po odeslání formuláře bude kontaktována služba ARES a z této služby budou získané údejo o firmě podle zadaného IČO
  4. použít composer pro nainstalování nějakého balíčku pro práci s databázi
  5. vyhledané údaje společne se zadaným hledaným ICO a datumem vyhledání uložit do databáze
  6. vytvořit stránku, na které se budou propisovat vyhledané ICO výrazy a jejich výsledky z databáze s možnosti řazení dle názvu firmy a data vyhledání vzestupně a sestupně a přidat stránkování po 3
  7. nasadit hotovou práci na libovolný hosting pod libovolnou adresu, která ale musí být pro nás přistupná

Zkusil jsem: body 1,2,3 som ako tak zvladol bod 4. ignorujem ale problem mam s bodom 5.
Na riešenie som sa rozhodol použiť tento kód:
<?php
$xml=simplexml_lo­ad_file("note­.xml");
echo $xml->to . "
";
echo $xml->from . "
";
echo $xml->heading . "
";
echo $xml->body;
?>
odpoved z ares servera je ale v tvare :
<are:Odpoved>
<D:PID>0</D:PID>
<D:VH>
<D:K>1</D:K>
</D:VH>
....
a ked pouzijem tento kod na citanie xml
<?php
$xml=simplexml_lo­ad_file("note­.xml");
echo $xml->to . "
";

a
na miesto $xml->to použujeme $xml->are:Odpoved
tak mi php vyhodi chybu :
Parse error: syntax error, unexpected ':', expecting ',' or ';' in C:\xampp\htdoc­s\inizio\index3­.php on line 8

ako sa zbavím tejto chyby alebo ako mam načítať tag ktorý obsahuje ":" <are:Odpoved>

Chci docílit: 5. vyhledané údaje společne se zadaným hledaným ICO a datumem vyhledání uložit do databáze
6. vytvořit stránku, na které se budou propisovat vyhledané ICO výrazy a jejich výsledky z databáze s možnosti řazení dle názvu firmy a data vyhledání vzestupně a sestupně a přidat stránkování po 3

 
Odpovědět
16.5.2020 10:17
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:16.5.2020 14:13

google = simplexml_load_file php get tag
google = simplexml_load_file php ARES
google = simplexml_load_file php element name
https://webtrh.cz/…pt-prikladek - reseno pres js
posledni te odkaza na manual, getName a tam je odkaz na basic example, v textu, ktery vede sem
https://www.php.net/…es-basic.php

Example #2 Getting <plot>
<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie[0]->plot;
?>

Example #3 Getting <line>
<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie->{'great-lines'}->line;
?>

Nebo tam najdes pouziti foreach
Example #4 Accessing non-unique elements in SimpleXML
<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

/* For each <character> node, we echo a separate <name>. */
foreach ($movies->movie->characters->character as $character) {
   echo $character->name, ' played by ', $character->actor, PHP_EOL;
}

?>

Zabralo mi googlovani asi 5 min. Jak dlouho cekas na odpoved? :) Ja jen, ze spousta lidi tu se ani nepokusi googlovat.

Editováno 16.5.2020 14:14
 
Nahoru Odpovědět
16.5.2020 14:13
Avatar
Martin Kašpar:16.5.2020 14:55

Ahoj, nad validním XML můžeš pracovat s namespace, viz:

if (($response = @file_get_contents('https://wwwinfo.mfcr.cz/cgi-bin/ares/darv_std.cgi?ico=27074358')) !== false) {
    $xml = new SimpleXMLElement($response);
    $ns = $xml->getNamespaces(true);

    $are = $xml->children($ns['are']);
    $dtt = $are->Odpoved->Zaznam->Identifikace->Adresa_ARES->children($ns['dtt']);

    echo 'IČO: ' . $are->Odpoved->Zaznam->ICO . '<br/>';
    echo 'PSČ: ' . $dtt->PSC;
  }
 
Nahoru Odpovědět
16.5.2020 14:55
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Peter Večera
Roman Müller:7. června 13:36

Ahoj, dostal jsem stejné zadání vytvořil v bootstrap formulář ale vevim jak ho napojit na (https://wwwinfo.mfcr.cz/…_xml.html.cz) jak to napíšu?

 
Nahoru Odpovědět
7. června 13:36
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8. června 8:01
  1. zaloz si vlastni tema
  2. v tom odkaze mas GET a POST (je to psano z hlavy, takze tam muzou byt preklepy)
get odkazem
<a href="program.php?typ=auto">odkaz</a>

get formularem
<form method=get action="program.php">
  <input type=text name=typ value=auto>
  <input type=submit>
</form>

<form method=get action="program.php">
  <input type=hidden name=typ value=auto>
  <input type=submit>
</form>

Odpovedi je XML, takze bys mel data odesilat a prijimat requestem. Nebo preposilat pres php. Priklad

<?php
$auto = isset($_GET['auto']) ? $_GET['auto'] : '';
if (!empty($auto))
    {
    $url = 'http...ciziprogram.php?auto='.urlencode($auto);
    $content = file_get_contents($url); // get pomoci php, pro post se podivej do dokumentace
    }
?>

<form method=get action="">
  <input type=text name=typ value=auto>
  <input type=submit>
</form>
<?php var_dump($content); ?>
 
Nahoru Odpovědět
8. června 8:01
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8. června 8:18

Muzes pouzit ajax, ale ten ma bezpecnostni opatreni proti vykradani obsahu jinych webu a tim zahlcovani cizich serveru. Takze to musis delat stejne pres php (jakoze ajaxem odeslat na php a php odeslat na ares, prijmout data a poslat je zpet do ajaxu). Ale, zkusit to muzes, traba ares ma povolene vykradani obsahu, kdyz je verejna sluzba :)
https://bootsnipp.com/tags/ajax
https://bootsnipp.com/snippets/REvdr - preview / css / html / js (modra tlacitka na strance)

/* Send the data using post with element id name and name2*/
var posting = $.post(url, { ... data ...
});

/* Alerts the results */
posting.done(function (data) {
    if (data.success === true) {
        $('#feedbackFormTitle').html(data.message); // zobrazeni prijatych dat -- data.message
    } else {
        $("#feedbackFormTitle").html("Failed! Try again"); // zobrazeni failed
    }
});
 
Nahoru Odpovědět
8. června 8:18
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 6 zpráv z 6.