tantehorst
Grünschnabel
Hallo Zusammen!
Ich habe ein kleines PHP-Script geschrieben, welches bestimmte Attribute aus einer XML einliest und in einer MySQL Datenbank speichert, sofern der Eintrag nicht schon einmal in DB vorhanden ist. Das klappt auch soweit wunderbar.
Im Script setze ich voraus, dass der Dateiname immer kostenstelle.xml lautet. Tatsächlich ist es aber so, dass ich Dateien variablem Dateinamen einlesen möchte. Der Dateiname setzt sich immer aus einem Zeitstempel und einem weiteren Atrribut zusammen.
Beispiel 151120121508-1182.xml.
Meine Fragen
1. Wie muss eine Abfrage aussehen, um diese immer anders benannte XML-Datei auszulesen?
2. Gibt es weiter die Möglichkeit die XML-Datei im Anschluss an einen anderen Ort zu verschieben, sobald sie einmal vom Script abgearbeitet wurde?
Im folgenden das Script:
Ich habe ein kleines PHP-Script geschrieben, welches bestimmte Attribute aus einer XML einliest und in einer MySQL Datenbank speichert, sofern der Eintrag nicht schon einmal in DB vorhanden ist. Das klappt auch soweit wunderbar.
Im Script setze ich voraus, dass der Dateiname immer kostenstelle.xml lautet. Tatsächlich ist es aber so, dass ich Dateien variablem Dateinamen einlesen möchte. Der Dateiname setzt sich immer aus einem Zeitstempel und einem weiteren Atrribut zusammen.
Beispiel 151120121508-1182.xml.
Meine Fragen
1. Wie muss eine Abfrage aussehen, um diese immer anders benannte XML-Datei auszulesen?
2. Gibt es weiter die Möglichkeit die XML-Datei im Anschluss an einen anderen Ort zu verschieben, sobald sie einmal vom Script abgearbeitet wurde?
Im folgenden das Script:
PHP:
<?php
// Verbindung aufbauen, auswählen einer Datenbank
mysql_connect("xxxxxxxx","xxxxxxxxxx","xxxxxxxxx");
mysql_select_db("xxxxxxxxx") or die ("Die Datenbank existiert nicht.");
//Überprüfung ob Datei vorhanden.
if(file_exists('kostenstelle.xml'))
{
echo "Datei vorhanden";
$xml = simplexml_load_file('kostenstelle.xml');
}
echo "<br/>";
// Ausgabe der Tags, der vom Haupttag <kostenstelle> eingeschlossem sind, Einzelausgabe der Arrays und Objekte
//echo '<pre>';
//print_r($xml);
//echo '</pre>';
//Abfrage der Daten aus dem XML-File, <kostenstelle> ist das allumschließende Element
for ( $i=0; $i < count($xml); $i++)
{
//Übergeben der XML Daten in Variabeln
$id = $xml->Fahrzeug[$i]->ID;
$fahrzeug = $xml->Fahrzeug[$i]->Name;
$Abt = $xml->Fahrzeug[$i]->Abt;
// Zähler für doppelte Einträge
$doppelt = 0;
// Anzeige der gespeicherten Variablen
echo $id . "<br/>";
echo $fahrzeug . "<br/>";
echo $Abt . "<br/>";
$query = "SELECT externalID FROM kostenstelle";
$ergebnis = mysql_query($query);
//Abfragen der bereits vorhandene externen ID`s aus der Datenbank
while ($row = mysql_fetch_object($ergebnis))
{
//Wenn externe ID gleich ID aus XML dann Datensatz ablehnen
if ($row->externalID == $id)
{
echo "Bereits vorhanden " . $row->externalID . "<br/>";
$doppelt++;
}
}
//Außerhalb der While-Schleife werden die nicht doppelt vorhandenen ID`s in Datenbank geschrieben
if ($doppelt < 1)
{
$insert = "INSERT INTO kostenstelle (externalID,Name,Abt) VALUES ('$id','$fahrzeug','$Abt')";
$eintrag = mysql_query($insert);
}
}
?>