Dobrý den,
poradil by mi prosím někdo, jak pomocí PHP zobrazit na stránkách údaje z xml? Potřebuju zobrazit název, popis a obrázek. Moc díky
http://php.net/manual/en/book.dom.php
Script na google pocasi
<?php
//http://www.google.com/ig/api?weather=opava,cz
//http://www.exorithm.com/algorithm/view/weather_forecast
function att($att,$type,$row=0)
{
global $xml;
switch ($type)
{
case 1 : return $xml->weather->current_conditions->{$att}['data'];
case 2 : return $xml->weather->forecast_conditions->$row->{$att}['data'];
default: return $xml->weather->forecast_information->{$att}['data'];
}
}
function img($url,$width=35,$title)
{
//return '<img src="http://www.google.com/'.$url.'"/>';
$name = substr($url,strrpos($url,'/')+1,-4);
$images = array(
'cloudy' => 'cloudy',
'mostly_cloudy' => 'partly_cloudy',
'chance_of_rain' => 'light_rain',
'chance_of_storm'=> 'tstorms',
'mostly_sunny' => 'partly_cloudy',
'mist' => 'light_rain',
'sunny' => 'sun'
);
$name = isset($images[$name]) ? $images[$name] : $name;
$name = $name.'.png';
$url_folder = $width==60 || $width==35 ? $width : 35;
return '<img src="http://ssl.gstatic.com/onebox/weather/'.$url_folder.'/'.$name.'" alt="'.$name.'" width="'.$width.'" title="'.$title.'">';
}
header('content-type: text/html; charset: utf-8');
$data = file_get_contents('http://www.google.com/ig/api?weather=opava,cz&hl=cs');
$data = iconv("iso-8859-2", "UTF-8", $data );
$xml = simplexml_load_string($data);
$loc = str_replace(',',', ',att('city',0));
$date = att('forecast_date',0);
$t = '°C';
$html = '
<head>
<title>PoÄŤasĂ</title>
<style type="text/css">
html, body {margin:0;padding:0;}
.f1, .f2 {border-collapse:collapse; border-spacing:0;}
.f1 caption {font-weight:bold;text-align:left;}
.f1 caption:first-letter {text-transform:uppercase;}
.f2 {color:#666;}
.f1 .temp {font-size:125%;}
.f2 .temp {font-size:85%;}
</style>
</head>
<body>
';
$html .= "
<table class=\"f1\" summary=\"Aktuálnà počasà pro ".$loc."\">
<caption>".$loc."</caption>
<tr>
<td width=\"35\">".img(att('icon',1),35,att('condition',1))."</td>
<td><div class=\"temp\">".att('temp_c',1).$t."</div></td>
</tr>
<tr>
<td colspan=\"2\">
<div class=\"wind\">".preg_replace('/\ss.*?rychlostĂ/',',',att('wind_condition',1))."</div>
<div class=\"hum\">" .att('humidity',1)."</div>
</td>
</tr>
</table>";
$html .= "
<table class=\"f2\" summary=\"PĹtedpovÄ>ÄŹ poÄŤasĂ\">";
for ($i=0;$i<4;$i++)
{
$html .= "
<tr>
<td>".img(att('icon',2,$i),16,att('condition',2,$i))."</td>
<td><div class=\"temp\">".att('high',2,$i).$t.', '.att('low',2,$i).$t."</div></td>
<td> ".att('day_of_week',2,$i)."</td>
</tr>";
}
$html .= "
</table>
</body>
";
echo $html;
?>
peta: Můžeš nám vysvětlit, proč ty stringy tak šmudlíš do nepřehledných stringů s hromadou \", když můžeš použít daleko přehlednější heredoc? Jak se v tom pak začátečník má vyznat?
Nevim, co je here-doc. Nevim, proc bych ti mel neco vysvetlovat. Nevim, proc bych k jednoduchemu prikladu mel pridavat slozite komentare, proc je to delane takto a ne jinak. Tvou reakci povazuji za off-topic, jako i tuto mou. Proste dej vlastni lepsi priklad a moji smaz, kdyz se ti nelibi. Kdyz nedas vlastni priklad a to smazes, tak si o tobe myslim sve. Totez, jako kdyz to zkritizujes. Jedinou vytku, ze jsem si nevsiml, ze to mam v UTF a kopiroval jsem to pres Far z defaulniho win1250, to by mohlo delat problem.
Ja tvuj prispevek take nezpochybnuji. Osobne povazuji priklady prave v php dokumentaci za jedny z nejlepsich navodu.
"..." pouzivam pro bezny string $str = "neco";
'...' pouzivam pro nazvy $arr = array('index' => "hodnota")
Prijde mi, ze neni dobre stridat uvozovky jen za cenu zjednoduseni html kodu. Dvojite uvozovky se pouzivaji prave bezne.
Mozna by spis stalo za to prepsat to do nejakeho xml-html kodu a pak nejakou funkci prelozit na html a vypsat. Treba nejaky pristi experiment.
Peta: S off-topicem jsi začal ty, když jsi uvedl příklad. K čemu to, když dotaz zněl úplně jinak? Z tvého paskvilu stačilo jen napsat:
Třeba pomoci simplexml_load_string();
>> Nevim, proc bych k jednoduchemu prikladu mel pridavat slozite komentare, proc je to delane takto a ne jinak.
A myslíš si, že by začátečník pochopil ten tvůj příklad?
Uvozovky. Je to věc názoru. Někdo může tvrdit, že jednoduché uvozovky jsou častější. Jinak máš pravdu. Neměly by se míchat. To platí i pro indexy.
Tomík (tom.czweb.org)
Ptas se vzhledem k poctu uvedenych prikladu celkem 1? :)
Ja proste vzal, co prakticky pouzivam na strance http://webapp.fpf.slu.cz/gmapa/. Coz je naprosto funkcni, az na to utf zmrsene :)
Pulka prikladu je html kod. Zbytek jsou 2 petiradkove funkce a 5 radku php kodu. Myslim, ze to je pochopitelne pro zacatecnika.
<HTML>peta: ad tvůj příspěvek 04. 10. 2011 14:40. To, že máš na jpw ban (který ani nedokážeš dodržet) neznamená, že budeš chodit psát své radoby chytré příspěvky sem a k tomu se ještě chovat arogantně. Taky tu umíme dát ban. Takže se kroť a odpovídej jen tam, kde jsi si jistý (což je jen málo oblastí, tak doufám, že těch příspěvků od tebe tu bude co nejmíň).
<em>moji smaz, kdyz se ti nelibi. Kdyz nedas vlastni priklad a to smazes, tak si o tobe myslim sve.</em><br>
O smazání příspěvku jsem přemýšlela, hned jak jsi ho sem dal, ale říkala jsem si, uvidíme, co se z toho vyvine. No... měla jsem ho smazat. A myslet si můžeš, co chceš.</HTML>
Možná jsem se také mohl krotit, ale při pohledu na nával nepřehledného kódu jsem si v tu chvíli připadal jako býk před červeným hadrem. Jsem toho názoru, že ukázky mají být co nejjednodušší, aby byly co nejlépe pochopitelné.
Tohle není wiki, zde může příspěvky editovat a mazat pouze moderátor(ka).
Funkce SimpleXML jsem kdysi vyzkoušel a pro jednodušší případy je to velmi dobře použitelná a rychlá knihovna. Dobré příklady jsou např. na
http://www.php.net/manual/en/simplexml.examples.php
Peta: Můžeš si vzít příklad z Kita, který podal v posledním příspěvku jednoduchou výstižnou odpověď, jež má stejnou, ne-li lepší, formulaci odpovědi jako ta tvoje. Ale každý člověk je jiný a každý má jiný styl psaní odpovědi. U tebe je tak nějak problém pochopit ty tvé odpovědi.
>> Pulka prikladu je html kod. Zbytek jsou 2 petiradkove funkce a 5 radku php kodu.
He? (toto je reakce úplného začátečníka, který má vykulené oči, vo čem to vlastně meleš :) )
Já ten tvůj kód chápu. Dokázal jsem přečíst i horší kódy. Ale vezmi si to z pohledu úplného začátečníka, který neví vo co go. Myslíš, že by se v tom vyznal a pochopil funkčnost?
Tomík (tom.czweb.org) Mno, rekneme, ze ten kod obsahuje ruzne pikantnosti, ktere se v dokumentaci nebo v googlu tezko hledaji. Aspon mi to trvalo pres hodinu. takze nejde o to, jak to funguje, ale jak zapsat urcite slozitejsi veci, na ktere muze narazit.
Thalia (moderátor) Odpovedi jsem si naprosto jisty, ze se mu muze hodit.