Autor Zpráva
ondrej_zodreva
Profil
Ahoj,

z eshopu exportuji na heuréku pomocí xml. Vše OK.
Máme ještě web s ceníkama a chtěl bych si tam zobrazit některé položky z eshopu.
XML si načtu a zobrazí se mi, ale teď je problém, že nechci načíst vše.
Odkaz na XML: eshop-stasa.cz/heureka.xml
A chtěl bych si načíst jen položky co mají v <CATEGORYTEXT> = Nářadí | Aku nářadí SAS+ALL a nebo jen Aku nářadí SAS+ALL.
POložky načítám pomocí FOREACH:
<?php

$xml = simplexml_load_file("https://eshop-stasa.cz/heureka.xml");

?>
   
    <table class="table table-striped table-bordered table-responsive align-middle">

<?php

foreach($xml as $dedra)
{
  echo "<thead class=\"table-dark\"><tr><td colspan=\"3\"><a href='" . htmlspecialchars($dedra->URL, ENT_QUOTES) . "' class=\"text-light\">" . htmlspecialchars($dedra->PRODUCTNAME) . "</a> <- Kliknutím si můžete objednat na eshopu</td></tr></thead>";
  echo "<tr><td class=\"w-25\"><img class=\"img-fluid\" src='" . htmlspecialchars($dedra->IMGURL, ENT_QUOTES) . "' style=\"height:200px;width:200px;\"></td><td> " . htmlspecialchars($dedra->DESCRIPTION) . "</td><th class=\"w-25\">Cena s DPH: " . htmlspecialchars($dedra->PRICE_VAT) . " Kč</th></tr>";
}

?>
</table>

Výsledek je zde: stasa.cz/stasa2023/aku-naradi-dedra.html
weroro
Profil
Ak nebude mať PHP vyslovene problém s českými háčky/čárky a máte podporu PHP8, tak ja by som šiel touto cestou.

$stringToFind = 'Aku nářadí SAS+ALL';
if (str_contains($dedra->CATEGORYTEXT, $stringToFind)) {
    echo "Obsahuje zadaný výraz";
}

Pokiaľ nemáte podporu PHP8, tak v oficiálnej dokumentácii je polyfill, ktorý viete použiť www.php.net/manual/en/function.str-contains.php#126277
ondrej_zodreva
Profil
Děkuji, ale nějak se nedokáži probojovat kam tu podmínku dát a co dát do echo?


Tak jsem se do toho znovu ponořil a již to funguje. děkuji moc. ❤️👌✔️😊
Keeehi
Profil
Filtrovat se dá přímo to XML s pomocí metody xpath. Pak už by stačilo jen ty vrácené prvky vypsat. Ale mám takový pocit, že tohle by bylo asi nad vaše síly. Tak to sem píšu spíš jen pro budoucí generace.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0