XML probleem
Ik laad met de volgende script producten uit een XML feed.
Alles laad hij nu prima maar het is een grote lijst.
Nu is mijn vraag hoe je maakt dat hij een maximaal aantal producten mag laden?
Thanks
$xml = simpleXML_load_file($urlproducten);
foreach ($xml->product as $xml){
echo '<table>';
echo '<tr>';
echo '<td><img style="width:250px; height:250px; border:none; display:block;" src="'.$xml->images->image.'"><br />'; //image
echo '<h2>'.$xml->name.'</h2><br />'; //titel
echo ''.$xml->price.'<br />'; //prijs
echo '<br />';
echo '<a href="'.$xml->URL.'">In winkelwagen</a></td>'; //link
echo '</tr>';
echo'</table>';
}
Al is het maar dat de parser het onderste lijntje nodig heeft om de laatste tag te sluiten.
Wat je wel kan doen, is je foreach onderbreken.
bv.
Kris Peeters op 15/01/2013 13:07:27:
Je kan niet vermijden dat de volledige file wordt geladen.
Al is het maar dat de parser het onderste lijntje nodig heeft om de laatste tag te sluiten.
Wat je wel kan doen, is je foreach onderbreken.
bv.
Al is het maar dat de parser het onderste lijntje nodig heeft om de laatste tag te sluiten.
Wat je wel kan doen, is je foreach onderbreken.
bv.
Code (php)
Werkt super! bedankt voor je reactie
Je kan wel een deel van een xml file inlezen, maar dan zal je aan de slag moeten met de basis file i/o functies. Wat meer werk, maar zeker niet onmogelijk.
Ja, inderdaad; laat dit een nuancering zijn op mijn nee.
Is het ook mogelijk dat er na die break van 100 een url komt met "volgende producten" en dat hij dan dus de volgende 100 laad? of kan dat niet
maar dan begint het wel wat uitgebreider te worden.
Dan moet je zoeken op "Pagination".
Kijk bv. wat men op die vraag geantwoord heeft op deze site
http://www.phphulp.nl/zoeken/pagination/
Je zou tot zoiets kunnen komen:
Dan begint overigens wel de vraag te komen of je niet echt beter kan gaan kijken naar he custom uitlezen van zo'n xml bestand, of misschien in een database stoppen. Hoe groot is het en hoe vaak wordt het ingelezen?
Het word nu elke keer als de pagina geladen word ingelezen als ze naar producten gaan of iets dergelijks.
En hoe vaak verandert de inhoud van die file? Download je die regelmatig, of is het vrij statisch?
Over het algemeen vrij statisch
Waarom laat je het dan in een xml bestand staan? Dat is prima over data over te sturen van het ene systeem naar het andere, maar is niet echt een database. Veel beter om die data dan uit te lezen en in een echte database te stoppen.
Ik heb daar naar gekeken maar wist niet hoe ik deze producten eruit kon opslaan in een database . dat zou zowieso beter zijn voor de snelheid
Als je het uit kan lezen om het op je pagina te tonen, kan je het toch uitlezen om in je database te stoppen?
Het is mij niet gelukt helaas
Als je zou zeggen wat je niet is gelukt zouden we je kunnen helpen, maar met eenregelige 'het lukt me niet's wordt het lastig.
$xmldata = $url;
$open = fopen($xmldata, 'r');
$content = stream_get_contents($open);
fclose($open);
$xml = new SimpleXMLElement($content);
foreach ($xml->product as $xml)
{
$naam = $xml->name;
$image = $xml->images->image;
$link = $xml->URL;
$prijs = $xml->price;
mysql_query("INSERT INTO producten (name)
VALUES ('$naam')");
};
Ik heb dit geprobeerd maar de database vult de velden met "0".
Wat doe ik fout?
Hier geef je dus het eerste element uit de $xml->product array de naam $xml.... dat is natuurlijk niet zo slim. Hoe moet php nu weten dat $xml en $xml niet hetzelfde zijn?
ik heb dit veranderd maar nog steeds hetzelfde probleem
Wat heb je nu dan (foreach loop alleen)
Ik ben erachter waarom hij 0 gaf in de database ik was varchar vergeten had int gedaan dus dat werkt dan natuurlijk niet. Maar nu blijft het veld helemaal leeg. En ja heb alleen foreach