Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
[Problem] Auslesen einer xml-Datei mit Speicherung in Datenbank [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Problem] Auslesen einer xml-Datei mit Speicherung in Datenbank


 
Tarquinio
11-09-2007, 12:05 
 
Hallo ihrs.

Ich hab ein Problem in einem Script welches eine xml-Datei auslesen soll und die Daten in eine Datenbank schreiben soll. Dabei übergibt das Script die Daten als Parameter an eine create-Methode im Objekt, welche die Daten in die Datenbank schreibt.

Mein Problem: In der xml-Datei stehen quasi 5 Objekte des Types "image" aber es wird nur das erste in die Datenbank gespeichert.

Hier meine data.xml :

<?xml version="1.0"?>
<category>
<name>Serien</name>
<description>Testen Sie Ihr Wissen &#xFC;ber diverse TV-Serien.&#xD;
</description>
<images>
<image>
<path>img_4.jpeg</path>
<question>Zu welcher Serie passt diese Crew?</question>
<answers>
<answer>Stargate SG1</answer>
<answer>Stargate Atlantis</answer>
<answer>Spiderman</answer>
</answers>
<correct>2</correct>
</image>
<image>
<path>img_1.jpeg</path>
<question>Zu welcher Serie passt diese Crew?</question>
<answers>
<answer>A-Team</answer>
<answer>B-Team</answer>
<answer>Gl&#xFC;cksb&#xE4;rchies</answer>
</answers>
<correct>1</correct>
</image>
<image>
<path>img_2.jpeg</path>
<question>Zu welcher Serie passt diese Crew?</question>
<answers>
<answer>Andromeda</answer>
<answer>X-Men</answer>
<answer>Stargate SG1</answer>
</answers>
<correct>3</correct>
</image>
<image>
<path>img_3.jpeg</path>
<question>Zu welcher Serie passt diese Crew?</question>
<answers>
<answer>Jericho</answer>
<answer>18 - Allein unter M&#xE4;dchen</answer>
<answer>Prison Break</answer>
</answers>
<correct>3</correct>
</image>
<image>
<path>img_5.jpeg</path>
<question>Zu welcher Serie passt diese Crew?</question>
<answers>
<answer>Takeshis Castle</answer>
<answer>Jericho</answer>
<answer>Planet der Affen</answer>
</answers>
<correct>2</correct>
</image>
</images>
</category>


hier mein Auslesen der xml-Datei:
//Einlesen der data.xml per simplexml
$newCatObject=new Category();
$newCatObject->create($xml->name, $xml->description);
$i=0;
$answers=array();
foreach ($xml->images->image as $image) {
foreach($image->answers->answer as $answer){
array_push($answers,$answer);
}
$newImgObject[$i]=new Image();
$newImgObject[$i]->create($image->question,array_shift($answers),array_shift($answers),array_shift($answers),$image->correct,$image->path,$newCatObject->getID());
$i++;
}

und zum Schluss noch die Methote create aus der Klasse image:
public function create($quest,$ans1,$ans2,$ans3,$correct,$path,$catID){
include $_SERVER['DOCUMENT_ROOT'] . '/enigma/configuration.php';
$connect = new MySQLi($host, $dbUser, $dbPass, $db);
$sql = 'INSERT INTO picture (quest,ans1,ans2,ans3,correct,path,cat) VALUES (?,?,?,?,?,?,?)';
$command = $connect->prepare($sql);
$command->bind_param('ssssisi',$quest,$ans1,$ans2,$ans3,$correct,$path,$catID);
$command->execute();
$connect->close();

}


Habt ihr eine Ahnung woran das liegt? Würde mich über eine Atnwort freuen.

 
tontechniker
11-09-2007, 12:48 
 
Es macht keinen Sinn jedes mal eine neue Verbindung zur Datenbank aufzubauen - entfern das mal und häng das in eine Klassenvariable oder arbeite mit dem Singelton Pattern. Ansonsten - Testausgaben? Wie oft wird die Funktion ausgerufen? Treten irgendwelche Fehler auf?

 
PHP-Desaster
11-09-2007, 14:47 
 
foreach ($xml->images as $image)Ich kenne die Klasse jetzt nicht, aber sollte der Schleifenkopf nicht so aussehen??

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:48 Uhr.