Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-07-2011, 12:13   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
SimpleXML schreibt alle Nodes in eine Reihe?!

Hallo zusammen.

Ich versuche gerade mit PHP eine XML zu erweitern. Allerdings schreibt mir meine Funktion alle Werte in eine Reihe. In den php.net-Dokus habe ich keinen Unterschied gefunden?!

Mein PHP-Skript:

PHP-Code:
<?php
// Werte
$name "Test";
$datum "Heute";
$uhrzeit "10:00";
$problem "keines";

$filename 'fehler.xml';

if(
file_exists($filename)) {
    
$xml simplexml_load_file($filename);     //Lädt die XML-Datei in ein 
                                
    
if($xml) {    //Prüfen, ob Datei Fehler enthielt
      
        
$neuerEintrag $xml->addChild('element');
        
$neuerEintrag->addChild('name'$name);
        
$neuerEintrag->addChild('datum',$datum);
        
$neuerEintrag->addChild('uhrzeit',$uhrzeit);
        
$neuerEintrag->addChild('problem',$problem);
        
        
// Datei speichern
        
$handle fopen("fehler.xml""wb"); 
        
fwrite($handle$xml->asXML());
        
fclose($handle);
        
        echo 
$xml->asXML();

    } else {
        echo 
'        <p>Die Datei names '$filename .' konnte nicht geöffnet werden</p>';
    }
}
?>
Und die Ausgabe:
PHP-Code:
<?xml version="1.0"?>
<root>
<element><name>Test</name><datum>Heute</datum><uhrzeit>10:00</uhrzeit><problem>keines</problem></element></root>
Die Werte können (von Excel) nicht richtig eingelesen werden -> Überschriften fehlen.
Weiß wer woran es liegt?

MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6
dr monk ist offline   Mit Zitat antworten
Alt 15-07-2011, 12:24   #2 (permalink)
Inventar
 
Benutzerbild von Nightflyer
 
Registriert seit: Jul 2002
Beiträge: 6.882
Du speicherst dein XML ja auch nicht mit asXML sondern zeigst es nur damit an. Mach mal

take
PHP-Code:
// Datei speichern 
        
$handle fopen("fehler.xml""wb");  
        
fwrite($handle$xml->asXML()); 
        
fclose($handle); 
         
        echo 
$xml->asXML(); 
replace with
PHP-Code:
// Datei speichern 
        
$xml->asXML$filename );
        echo 
$xml->asXML(); 
__________________
(\__/)
(='.'=)
(")_(")
Nightflyer ist offline   Mit Zitat antworten
Alt 15-07-2011, 12:53   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Oh, wieder was dazugelernt. Das wird also von SimpleXML schon mit abgedeckt (also das zurückschreiben der Daten)

Allerdings wird es immernoch in einer Reihe in die Datei geschrieben. Das mit dem Echo in der PHP diente nur meinen Tests. Ich will später lediglich die XML-Datei in Excel exportieren zur Auswertung.


Kann es vielleicht sein, dass es an nem Format liegt? Wenn ich händisch oder mit anderen Scripts XML-Dateien erstelle werden die Korrekt von Excel erkannt?!
Das sind halt meine ersten Experimente mit SimpleXML.

MfG Monk

EDIT: Ich habe die XML mal über den Browser aufgerufen und die Seite dann gespeichert. Dann wird es auch in Excel richtig erkannt. Nur die Einrückung im Dokument stimmt immer noch nicht.
Also funktion ist jetzt gewährleistet aber innerhalb der XML-Dateien lässt es sich so halt schlecht arbeiten...
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6

Geändert von dr monk (15-07-2011 um 13:03 Uhr)
dr monk ist offline   Mit Zitat antworten
Alt 18-07-2011, 07:47   #4 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 620
Umlaute in der XML..

Hallo.

(EDIT: Lösung ganz unten)

Ich greife einfach mal den Post auf da ich mit dem Code oben bzw. SimpleXML ein Problem mit den Umlauten habe.

Laut diesem Beitrag wandelt SimpleXML die Daten automatisch in UTF-8 um. Aber selbst wenn ich utf8_decode verwende werden die Daten nicht als UTF-8 in die XML geschrieben mit dem Resultat, dass SimpleXML die Datei nicht mehr öffnen kann.

In der XML selbst steht ja eigenlich
PHP-Code:
<?xml version="1.0" encoding="UTF-8"?>
Was kann ich denn sonst machen um die Daten richtig in die XML zu schreiben?? Muss ich jetzt manuell jeden Umlaut umwandeln?
Der Server kann leider nicht umgestellt werden...

p.s. wenn ich die XML Datei herunterlade und lokal öffne werden mir die Umlaute dargestellt. Allerdings bringt mir das ja nichts wenn sich die PHP beim öffnen dieser Datei aufhängt.
Auf meinem Testsystem funktioniert alles und die ursprungs-xml-Datei stammt auch von diesem.
(Argh, dieser Server bringt mich echt noch zum durchdrehen...)

Muss ich in dem Code aus Post 1 vielleicht die XML als Text einlesen, umwandeln und dann als XML deklarieren? Fall ja, wie?

Wäre super wenn jemand das gleiche Problem schonmal hatte und/oder eine Lösung weiß

MfG Monk

EDIT: ich habe es jetzt Probiert mit dem Ersetzen vom Inhalt. Allerdings ohne Erfolg:
PHP-Code:
<?php

// Entgegen nehmen der Daten
$name utf8_decode($_POST["name"]);
$datum $_POST["datum"];
$uhrzeit $_POST["uhrzeit"];
$problem utf8_decode($_POST["problem"]);
$problembeschreibung utf8_decode($_POST["problembeschreibung"]);

$filename 'fehler.xml'

if(
file_exists($filename)) {
    
// XML zum String machen um die Fehler zu entfernen
    
$content utf8_encode(file_get_contents('fehler.xml'));
    
$xml simplexml_load_string($content);
                
    if(
$xml) {    //Prüfen, ob Datei Fehler enthielt
      
        
$neuerEintrag $xml->addChild('element');
        
$neuerEintrag->addChild('name'$name);
        
$neuerEintrag->addChild('datum',$datum);
        
$neuerEintrag->addChild('uhrzeit',$uhrzeit);
        
$neuerEintrag->addChild('problem',$problem);
        
$neuerEintrag->addChild('problembeschreibung',$problembeschreibung);
        
        
// Datei speichern
        
$xml->asXML($filename); 

    } else {
        echo 
'        <p>Die Datei names '$filename .' konnte nicht geöffnet werden</p>';
    }
}
?>
Das komische dabei ist, dass beim ersten mal anzeigen der XML im Browser z.B. ein "ä" nicht angezeigt wird. Wenn ein neuer Eintrag hinzu kommt wird es angezeigt. Wird noch einer hinzugefügt wird das "ä" zu "ä". Dann zu "ä". Dann zu "ä" und so weiter...

Das Programm ist eigentlich so simpel... Da ist es sowas von Ärgerlich wenn es dann mit dem Produktiv-Server nicht funktioniert.

Edit 2: Speichern mit utf8_decode klappt leider auch nicht. Wäre auch zu schön gewesen. Ich glaub es liegt auf jeden Fall am Speichervorgang
PHP-Code:
utf8_decode($xml->asXML($filename)); 
EDIT 3: Lösung:
Ich habe jetzt die ganze Zeit mit den verschiedenen encodes und decodes rumprobiert und schlussendlich habe ich die Lösung gefunden. Und zwar ganz ohne die beiden...
Ich habe bei Google den Befehl "file_put_contents" gefunden. Mit diesem funktioniert es!
Anbei der funktionierende Code:
PHP-Code:
   <?php

// Entgegen nehmen der Daten
$name $_POST["name"];
$datum $_POST["datum"];
$uhrzeit $_POST["uhrzeit"];
$problem $_POST["problem"];
$problembeschreibung $_POST["problembeschreibung"];

$filename 'fehler.xml'

if(
file_exists($filename)) {
    
$xml simplexml_load_file($filename);     //Lädt die XML-Datei in ein  
   
    
if($xml) {    //Prüfen, ob Datei Fehler enthielt
      
        
$neuerEintrag $xml->addChild('element');
        
$neuerEintrag->addChild('name'$name);
        
$neuerEintrag->addChild('datum'$datum);
        
$neuerEintrag->addChild('uhrzeit',$uhrzeit);
        
$neuerEintrag->addChild('problem',$problem);
        
$neuerEintrag->addChild('problembeschreibung',$problembeschreibung);
        
        
// Datei speichern
       
file_put_contents($filename$xml->asXml());

    } else {
        echo 
'        <p>Die Datei names '$filename .' konnte nicht geöffnet werden</p>';
    }
}
?>
MfG Monk
__________________
Flash CS5 / Flex 3 / Flashdevelop / FB 4.6

Geändert von dr monk (18-07-2011 um 13:43 Uhr) Grund: Lösung
dr monk ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Flashstar Kalender umbauen / eine horizontale Reihe + KW namika ActionScript 2 0 05-05-2011 23:51
Einer Variable eine Reihe von Werten zuordnen flashgordoncole ActionScript 1 4 15-11-2006 13:13
xpath alle nodes + index + tiefe ? ๐อ๐ ActionScript 1 4 17-07-2006 19:14
schreibt alles in eine zeile!?!? andy.p ActionScript 1 5 12-12-2002 08:25
Kann PHP alle (unbekannten) files im Ordner der reihe nach öffnen/lesen? Samuel Flash und Datenbanken 1 15-05-2002 19:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele