Goede middag,

Hoogst waarschijnlijk zie ik iets over het hoofd.....

In mijn database staat in kolom x:
VNKK9474; VNKK9468; VNKK9464; VNKK9462;


Dit haal ik uit de database, en wil een loop maken met de array

foreach ($row['product_pic'] as $value) {
$xml .= '
<PLAATJE'.$plaatje_nr.'>'.$value.'</PLAATJE'.$plaatje_nr.'>
';
}


Maar nu toont ie niet 3 regels, maar 1 regel met de inhoud:
<plaatje_1>VNKK9474; VNKK9468; VNKK9464; VNKK9462;</plaatje1>


Waarschijnlijk denk ik iets te makkelijk....
Moet je niet eerst exploden op een spatie en mogelijk de punt-komma strippen?

Nog mooier is als je het netjes genormaliseerd opslaat als vier verschillende records in je tabel.
Inmiddels aangepast naar het volgende:

VNKM2953,VNKM2821,VNKM2817,VNKL5770,VNKL5768,VNKL5259


Maar helaas niet het gewenste effect.

Inderdaad zou het anders mooier zijn, maar helaas kan ik aan de db niets aanpassen
Heb je dan ook die explode al gedaan?
<?php
$row['product_pic'] = "VNKK9474; VNKK9468; VNKK9464; VNKK9462;";

$values = explode(";", $row['product_pic']);

foreach ($values as $value) {
$xml .= '
<PLAATJE'.$plaatje_nr.'>'.trim($value).'</PLAATJE'.$plaatje_nr.'>
';
}
?>
Maar, wat is de reden dat je tags die je genereert steeds uniek zijn?
Kan je die nummers niet in een attribuut zetten? Ik weet niet wat je met die output verder doet, maar het is logischer om er een soort tag van te maken.

<?php
$xml .= '<PLAATJE code="'.$plaatje_nr.'">'.trim($value).'</PLAATJE>';
?>

Zo kan je uiteindelijk met DOMdocument of SimpelXML makkelijker er door heen lopen.


Begin bij het begin. Waarom zit deze informatie geserialiseerd in je database? Mogelijk wil je dat eerst eens opschonen.

Vervolgens is de loop niet zo moeilijk (meer).

Mogelijke verbetering(en) in XML:
* maak gebruik van output buffering en echo alleen de variabele delen in je XML, en
* zorg dat je in je XML karakters die hier een speciale betekenis kunnen hebben escaped met de daarvoor bestemde escaping-functie
Thomas van den Heuvel op 03/06/2017 02:50:21

Begin bij het begin. Waarom zit deze informatie geserialiseerd in je database? Mogelijk wil je dat eerst eens opschonen.

Je doelt op normaliseren? Want dat had ik al eerder geroepen ;-)
Echter had hij al aangegeven dat dit op dit moment geen oplossing is.

Reageren