XML probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

XML JAVA ontwikkelaar

Bedrijfsomschrijving KOOP ontwikkelt en beheert momenteel onder meer de volgende producten: Wet- en regelgevingsportalen (o.a. Wetten.nl en CVDR ). Hier kunnen gebruikers op basis van trefwoorden en andere criteria wetten en regelgevingen inzichtelijk krijgen; PUC Open Data platform (o.a. puc.overheid.nl en afgeleide producten en interne kennisbanken). Hier publiceren overheidsorganisaties zelf hun uitvoeringsinformatie die publiekelijk beschikbaar is, zoals beleid, handboeken, werkinstructies en berichten. Wettenpocket+ (o.a. portaal en App voor Android en iOS). Hiermee kunnen de gebruikers Wettenpockets raadplegen. Een Wettenpocket bundelt relevante regelgeving en aanvullende informatie op een specifiek rechtsgebied, en kan worden samengesteld door verschillende organisaties binnen de Rijksoverheid. PLOOI

Bekijk vacature »

Pagina: 1 2 volgende »

Arjan hazewinkel

arjan hazewinkel

15/01/2013 12:54:47
Quote Anchor link
Beste PHPhulp leden,

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>';
}
 
PHP hulp

PHP hulp

05/12/2020 18:34:35
 
Kris Peeters

Kris Peeters

15/01/2013 13:07:27
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$xml
= simpleXML_load_file($urlproducten);
$i=0;
foreach ($xml->product as $xml){
  if ($i++ > 100) {
    break;
  }

  echo '<table>';
...

?>
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 13:17:37
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$xml
= simpleXML_load_file($urlproducten);
$i=0;
foreach ($xml->product as $xml){
  if ($i++ > 100) {
    break;
  }

  echo '<table>';
...

?>





Werkt super! bedankt voor je reactie
 
Erwin H

Erwin H

15/01/2013 13:18:17
Quote Anchor link
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.
 
Kris Peeters

Kris Peeters

15/01/2013 13:21:51
Quote Anchor link
Ja, inderdaad; laat dit een nuancering zijn op mijn nee.
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 13:34:20
Quote Anchor link
Als ik het goed begrijp doe je nu een break na 100?
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
 
Kris Peeters

Kris Peeters

15/01/2013 13:45:45
Quote Anchor link
Ja, dat is allemaal mogelijk,
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$start
= isset($_GET['start']) ? (int) $_GET['start'] : 0;
$length = 20; // aantal per pagina
$i=0;
foreach(...) {
  if ($i < $start) {
    continue;
  }

  if ($i >= $start + $length) {
    break;
  }
  ...

  echo '<table>...'
  ...
  $i++;
}

?>
 
Erwin H

Erwin H

15/01/2013 14:04:41
Quote Anchor link
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?
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 14:48:10
Quote Anchor link
Het word nu elke keer als de pagina geladen word ingelezen als ze naar producten gaan of iets dergelijks.
 
Erwin H

Erwin H

15/01/2013 16:08:11
Quote Anchor link
En hoe vaak verandert de inhoud van die file? Download je die regelmatig, of is het vrij statisch?
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 16:15:26
Quote Anchor link
Over het algemeen vrij statisch
 
Erwin H

Erwin H

15/01/2013 16:23:00
Quote Anchor link
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.
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 16:33:44
Quote Anchor link
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
 
Erwin H

Erwin H

15/01/2013 16:40:20
Quote Anchor link
Als je het uit kan lezen om het op je pagina te tonen, kan je het toch uitlezen om in je database te stoppen?
 
Arjan hazewinkel

arjan hazewinkel

15/01/2013 16:49:46
Quote Anchor link
Het is mij niet gelukt helaas
 
Erwin H

Erwin H

15/01/2013 17:09:52
Quote Anchor link
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.
 
Arjan hazewinkel

arjan hazewinkel

21/01/2013 14:56:36
Quote Anchor link
include '/include/config.php';


$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?
 
Erwin H

Erwin H

21/01/2013 15:18:50
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
foreach ($xml->product as $xml)
?>

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?
 
Arjan hazewinkel

arjan hazewinkel

21/01/2013 15:23:07
Quote Anchor link
ik heb dit veranderd maar nog steeds hetzelfde probleem
 
Erwin H

Erwin H

21/01/2013 15:38:12
Quote Anchor link
Wat heb je nu dan (foreach loop alleen)
 
Arjan hazewinkel

arjan hazewinkel

21/01/2013 15:45:55
Quote Anchor link
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
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.