tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1360
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mcready mcready ist offline Grünschnabel
    Registriert seit
    Jan 2009
    Beiträge
    2
    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

    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>";
    ?>
    Das kann nicht viel sein ... nur was? Bin für jede Hilfe dankbar!

    Gruß,

    Enrico
     

  2. #2
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    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

  3. #3
    mcready mcready ist offline Grünschnabel
    Registriert seit
    Jan 2009
    Beiträge
    2
    Coole Sache: Kaum macht man es richtig, funktioniert es!
    Herzlichen Dank!
     

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 04.09.09, 17:36
  2. simpleXML
    Von wachteldonk im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.08.09, 18:16
  3. SimpleXML
    Von PHPGuru86 im Forum PHP
    Antworten: 2
    Letzter Beitrag: 31.03.09, 21:56
  4. Antworten: 2
    Letzter Beitrag: 31.10.08, 16:20
  5. SimpleXML und DTD
    Von bandsite im Forum PHP
    Antworten: 1
    Letzter Beitrag: 03.08.06, 20:49

Stichworte