Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP + XML parse ongelma

hellekim [11.10.2005 15:04:43]

#

No niin... Ensinnäkin en ole tämän asian kanssa alkuunkaan sujut, joten koettakaa ymmärtää sekavaa sepustustani. Tarkoituksena olisi saada XML feedistä purettua auki mainoksia tuotteista. Kyseinen XML feed löytyy osoitteesta täältä.

Olen koittanut saada sen purettua käyttämällä hyväksi tätä koodia, joka löytyy tästä tutoriaalista.

Olen päässyt näin pitkälle siinä mitä tulostuu. Tämä on mielestäni ihan kohtalaisesti, kun ottaa huomioon, ettei kokemusta lainkaan ole.

Nyt ongelmia on oikeastaan kaksi:
1) Otsikon yllä oleva linkki on oikeaa hölynpölyä, vaikka ihmetyksekseni viekin oikeaan paikkaan. Siinä on peräkkäin url oikeaan osoitteeseen ja kaikki XML feedissä kyseiseen tuotteeseen liittyvien tuotekuvien linkit.
2) Kuva ei näy - olen yrittänyt saada sujautetuksi keskelle linkkiä tuotteen Product ID:n, mutta huonosti on onnistunut.

Nykyinen koko sivun koodini löytyy tästä - luonnollisesti siinä on mukana varmaankin paljon turhaa ja monia virheitä, mutta tämmöistä se on newbien elämä :) :

<?php

$counter = 0;
$type = 0;
$tag = "";
$itemInfo = array();
$channelInfo = array();

function opening_element($xmlParser, $name, $attribute){

global $tag, $type;

$tag = $name;

if($name == "PRODUCT-LIST"){
$type = 1;
}
else if($name == "PRODUCT"){
$type = 2;
}

}//end opening element


function closing_element($xmlParser, $name){

global $tag, $type, $counter;

$tag = "";
if($name == "PRODUCT"){
$type = 0;
$counter++;
}
else if($name == "PRODUCT-LIST"){
$type = 0;
}
}//end closing_element

function c_data($xmlParser, $data){

global $tag, $type, $channelInfo, $itemInfo, $counter;

$data = trim(htmlspecialchars($data));

if($tag == "NAME" || $tag == "DESCRIPTION" || $tag == "URL" || $tag =="PRICE" || $tag =="PRODUCT ID"){
if($type == 1){

$channelInfo[strtolower($tag)] = $data;

}//end checking channel
else if($type == 2){

$itemInfo[$counter][strtolower($tag)] .= $data;

}//end checking for item
}//end checking tag
}//end cdata funct

$xmlParser = xml_parser_create();

xml_parser_set_option($xmlParser, XML_OPTION_CASE_FOLDING, TRUE);
xml_parser_set_option($xmlParser, XML_OPTION_SKIP_WHITE, TRUE);

xml_set_element_handler($xmlParser, "opening_element", "closing_element");
xml_set_character_data_handler($xmlParser, "c_data");

$fp = file("http://www.supportersplace.com/shop/web_site_5.php?page=xml&action=get_category_products&
category_id=872&mac=b63f4e42862a3646d9db87689c3ecf0b");

foreach($fp as $line){
if(!xml_parse($xmlParser, $line)){
die("Could not parse file.");
}
}

?>
<html>
<head>
<title>Mainos</title>
</head>
<body>
<?php
foreach($itemInfo as $items){
echo "<a href='".$items["url"]."'>".$items["name"]."</a><br /><br />";
echo "<img src='http://shop.paitsio.com/shop/db_images/products/".$items["product id"]."_150x150.jpg' height='150' width='150' alt='".$items["name"]."'/><br>";
echo "Hintaan ".$items["price"]." euroa<br>";
}
?>

</body>
</html>

ipe [13.10.2005 22:49:29]

#

Tuota.. Jos nyt käsitin oikein mitä tarkoitit, niin tuo linkin url on pitkä, koska siinä käytetään montaa eri Get metodilla poimittavaa "juttua" (mikä niitten oikea nimi on?!?).

Se miksi kuvat eivät näy taas johtuu siitä ettei niitä ole olemassa. Tuossa koodissa yritetään laittaa img tagin src:ksi tämmöinen url shop.paitsio.com/shop/db_images/products/".$items["product id"]."_150x150.jpg
Ja jos käyt katsomassa niin hakemisto shop.paitsio.com/shop/db_images/products/ on tyhjä, eli siellä ei ole kuvia tai siellä olevilla kuvilla ei ole oikeuksia.

Toivottavasti tajusin nyt oikein, ettei mennyt näin pitkä teksti ihan susille :P

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta