Icecat XML verwerken deel 2, de array weergeven

Door 22 januari 2013Tips & Trucs

Hierbij het vervolg op mijn eerste bericht hoe een Icecat XML verwerkt kan worden. Het uitlezen is het “moeilijkste” stuk, het weergeven is gewoon een mooie layout maken en daar de uitgelezen waardes in zetten.

Foutafhandeling

Om te beginnen, eerst maar even kijken of er geen fouten zijn.

<?php
// No icecat ID present?
if(!isset($data['id']))
{
	// Check for each error number and show the error
	if(isset($data[1]))
	{
		echo 'Error 1: '.$data[1];

	} elseif(isset($data[2]))
	{
		echo 'Error 2: '.$data[2];

	} elseif(isset($data[3]))
	{
		echo 'Error 3: '.$data[3];
	}
}
?>

Product informatie

Zoals je hier al ziet wordt er elke keer gerefereerd naar $data, om dit niet steeds te hoeven doen is het meest makkelijke extract te gebruiken voor het weergeven van de product informatie. Wanneer er geen fouten zijn kunnen we verder:

<? extract($data); ?>
<h1><?=$title;?></h1>
<table>
	<tr>
		<th>SKU</th>
		<td><?=$sku;?></td>
	</tr>
	<tr>
		<th>EAN</th>
		<td>
			<? foreach($ean as $e): ?>
				<?=$e;?><br />
			<? endforeach; ?>
		</td>
	</tr>
	<tr>
		<th>URL</th>
		<td><a href="<?=$url;?>" target="_blank"><?=$url;?></a></td>
	</tr>
</table>

Zo kan ik nog wel even doorgaan, dit spreekt voor zich natuurlijk. Hierna komen we de product afbeeldingen tegen, dit is uiteraard door een simpele foreach te gebruiken, weer te geven. Nog wel een opmerking hierbij. Op het moment van schrijven geeft Icecat niet altijd alle formaten afbeeldingen mee aan producten. De thumbnail en de grote afbeeldingen worden altijd meegegeven, de kleine en middelmatige missen soms wel eens.

Product specificaties

Het gebruik van een “foreach” geldt ook voor de product specificaties maar laat ik daar wel een voorbeeldje voor maken gezien dit meestal het belangrijkste is:

<h2>Product Specifications</h2>
<table>
<? foreach($spec as $id=>$s): ?>
	<tr>
		<th title="Icecat specification category ID: <?=$id;?>"><?=$s['name'];?></th>
		<td></td>
	</tr>
	<? foreach($s['features'] as $id=>$f): ?>
		<tr>
			<td title="Icecat specification feature ID: <?=$id;?>"><?=$f['name'];?></td>
			<td><?=$f['pres_value'];?></td>
		</tr>
	<? endforeach; ?>
<? endforeach; ?>
</table>

Alles kan natuurlijk uitgebreid en veel mooier gemaakt worden. Zo ook mijn kleine demo voor bij dit artikel:

Klik hier voor een online demo

Als laatste nog even wat “sluikreclame” om een idee te geven wat er mogelijk is met de gegevens van Icecat. Bijvoorbeeld een computer en toebehoren webshop of website waar je tablets kan vergelijken (inmiddels offline maar de code staat op Github).