ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
1360
1360
EMPFEHLEN
-
Hallo zusammen,
ich habe folgendes Problem:
Ich habe eine relativ große Datenbank als XML-Datei vorliegen. Die möchte ich mit PHP in eine MySQL-Datenbank einlesen. Der MySQL-Part ist hier nicht das Thema, da bin ich fit drin. Nur mit XML habe ich groß noch nie gearbeitet.
Folgende Datenstruktur ist gegeben:
<root>
<row>
<field name="Vorname">Max</field>
<field name="Name">Mustermann</field>
<field name="Strasse">Musterstr. 12</field>
.......
</row>
<row>
<field name="Vorname">Franz</field>
.....
</row>
......
</root>
Also alle Datensätze gleich aufgebaut, gleiche Feldzahl. Pro Datensatz 50 Felder, und die Anzahl der Datensätze weiß ich noch nichtmal genau. Dürften aber ~5.000 sein.
Mit folgender Routine habe ich bisher den ersten Datensatz komplett und korrekt ausgelesen bekommen. Aber alle weiteren klappen nicht. Ich habe die Tabelle auf drei Felder beschränkt, damit es besser lesbar ist.
$attributt ist der Zähler für das Feld "<field>" innerhalb der "<row>". Und ja, ich weiß, daß man es regulär mit einem "t" am Ende schreibt
Das kann nicht viel sein ... nur was? Bin für jede Hilfe dankbar!PHP-Code:<?php
$xml = simplexml_load_file('adressen.xml');
echo "<table border=1>";
echo "<tr><td>datensatz</td><td>Vorname</td><td>Name</td><td>Strasse</td></tr>";
foreach ($xml->row as $row) {
$attributt = 0;
echo "<tr><td></td>";
while ($attributt < 50){ // 50 Felder pro Datensatz
echo "<td>".$xml->row->field[$attributt]."</td>";
$attributt++;
}
echo "</tr>";
}
echo "</table>";
?>
Gruß,
Enrico
-
Hi,
du brauchst einen weiteren Zähler.
Zum Beispiel so:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
echo "<table border=1>"; echo "<tr><td>datensatz</td><td>Vorname</td><td>Name</td><td>Strasse</td></tr>"; [COLOR="Red"]$i = 0;[/COLOR] foreach ($xml->row as $row) { [COLOR="Red"]$i++;[/COLOR] $attributt = 0; echo "<tr><td></td>"; while ($attributt < 50){ // 50 Felder pro Datensatz echo "<td>".$xml->row[COLOR="Red"][$i-1][/COLOR]->field[$attributt]."</td>"; $attributt++; } echo "</tr>"; } echo "</table>";
Ich würde das dann aber gleich mit for-Schleifen lösen, sieht schöner aus, finde ich:
PHP-Code:$rowCount = count( $xml->row );
$fieldCount = 50;
for( $i = 0; $i < $rowCount; $i++ )
{
echo '<tr><td></td>';
for( $j = 0; $j < $fieldCount; $j++ )
{
echo "<td>".$xml->row[$i]->field[$j]."</td>";
}
echo '</tr>';
}
Geändert von Loomis (19.01.09 um 15:22 Uhr)
mfg
--------------------------------------------------------------------------------
Kein Support via PN, Email, ICQ, Brieftaube oder Flaschenpost!
Besucht den tutorials.de-Chat | Anleitung
RTFM - PHP-Handbuch - MySql Handbuch
--------------------------------------------------------------------------------
Surftipp...Der Postillon
--------------------------------------------------------------------------------
Signatur v2.2
-
Coole Sache: Kaum macht man es richtig, funktioniert es!
Herzlichen Dank!
Ähnliche Themen
-
Ordner nach XML durchsuchen und einlesen mit SimpleXML
Von Cluster im Forum PHPAntworten: 11Letzter Beitrag: 04.09.09, 17:36 -
simpleXML
Von wachteldonk im Forum PHPAntworten: 1Letzter Beitrag: 16.08.09, 18:16 -
SimpleXML
Von PHPGuru86 im Forum PHPAntworten: 2Letzter Beitrag: 31.03.09, 21:56 -
XML einlesen (SimpleXMl) von meheren gleichen Tags
Von Primus852 im Forum PHPAntworten: 2Letzter Beitrag: 31.10.08, 16:20 -
SimpleXML und DTD
Von bandsite im Forum PHPAntworten: 1Letzter Beitrag: 03.08.06, 20:49





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren