Moderator |
|
Let wel op de volgende zaken:
- deze import kun je slechts één keer uitvoeren, anders staan je leden zo direct dubbel in je database; ik zou dus eerst e.e.a. (uitgebreid) testen voordat je dit naar je database wegschrijft
- ook zou ik na de import het importbestand en je ledenbestand weer verwijderen van je website
- zoals al eerder aangegeven, je XML-bestand heeft een encoding (ISO-8859-1). Het is verstanding om na te gaan of de codering van je ledentabel hier op aansluit
Het onderstaande script houdt geen rekening met de mogelijkheid dat bepaalde leden al aanwezig zijn in je database.
Idealiter maak je hiervoor ook gebruik van een "transactie", dit zorgt ervoor dat ALLE wijzigingen worden doorgevoerd, of (indien er iets misgaat) GEEN ENKELE. Ook dit zit niet in het onderstaande script.
<?php
// lees de XML in
$xml = simplexml_load_file('leden.xml');
$array = json_decode(json_encode($xml), true);
// doorloop het array
foreach ($array['lid'] as $lid) {
// $lid bevat nu een leden-record
// voer hier je query uit met behulp van $lid['naam'], $lid['lidnummer'] et cetera
// omdat ik verder niet weet hoe jouw ledentabel er uitziet, zal de volgende query
// waarschijnlijk niet kloppen, het is aan jou om dit kloppend te maken...
// is bijvoorbeeld het lidnummer numeriek? anders moeten hier ook (enkele) quotes omheen
// bouw je query
$query = "INSERT INTO leden (naam, lidnummer, gemeente) VALUES (
'".mysql_real_escape_string($lid['naam'])."',
".mysql_real_escape_string($lid['lidnummer']).",
'".mysql_real_escape_string($lid['plaats'])."'
)";
// voer je query uit, zorg EERST dat bovenstaande query klopt!
mysql_query($query) or die(mysql_error());
}
?>
<?php // lees de XML in $xml = simplexml_load_file('leden.xml'); $array = json_decode(json_encode($xml), true); // doorloop het array foreach ($array['lid'] as $lid) { // $lid bevat nu een leden-record // voer hier je query uit met behulp van $lid['naam'], $lid['lidnummer'] et cetera // omdat ik verder niet weet hoe jouw ledentabel er uitziet, zal de volgende query // waarschijnlijk niet kloppen, het is aan jou om dit kloppend te maken... // is bijvoorbeeld het lidnummer numeriek? anders moeten hier ook (enkele) quotes omheen // bouw je query $query = "INSERT INTO leden (naam, lidnummer, gemeente) VALUES ( )"; // voer je query uit, zorg EERST dat bovenstaande query klopt! } ?>
Zoiets dus, bovenstaande code werkt waarschijnlijk niet direct. Mocht je er hiermee niet uitkomen stel ik toch dringend voor dat je hier iemand naar laat kijken die je "in real life" kan helpen hiermee, want via een forum is dat een beetje onbegonnen werk... |