php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.09.2011, 21:41  
Neuer Benutzer
 
Registriert seit: 05.09.2011
Beiträge: 28
PHP-Kenntnisse:
Anfänger
Halvalon befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] PHP-Variable an XML übergeben

Guten Abend verehrte Community,

ich habe folgendes Problem und brauche bitte eure Hilfe;

es ist ein Script-Auszug und ich möchte gerne erfahren wie ich die im ausgaben definierte variable samt deren namen beschreibung an das "writeElement" übergebe.

Code:
for($i = 0; $i < count($ausgaben); $i++){	?>
                    <tr>
                        <td>
<?php 
$xmlschreiber->writeElement('Buchung', $ausgaben[$i]['beschreibung']);
echo $ausgaben[$i]['beschreibung']; ?>
</td>
...
Halvalon ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.09.2011, 21:48  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

$xmlschreiber ist XMLWriter? husch, husch, auf zur Doku: http://www.php.net/manual/de/functio...te-element.php

Falls du nicht weiter kommst, wär eine genauere Problembeschreibung hilfreich.

Grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 27.09.2011, 19:10  
Neuer Benutzer
 
Registriert seit: 05.09.2011
Beiträge: 28
PHP-Kenntnisse:
Anfänger
Halvalon befindet sich auf einem aufstrebenden Ast
Standard

Ich habe einen speziellen Fall welches mein Problem betrifft und mehrere Ansätze, leider funktioniert keiner dieser Ideen.

PHP-Code:
<table width="100%">
<?php            
                     
for($i 0$i count($ausgaben); $i++){    ?>
                    <tr>
                        <td>
                            <?php                                                                                                     
                            
echo $ausgaben[$i]['beschreibung']; ?></td>
                        <td>    
                              <?php 
                            
echo $ausgaben[$i]['betrag']; ?></td>
                        <td style="padding-top: 12,5px;">
                            <?php            
                                $gesamtausgaben 
0;
                                for(
$i 0$i <= sizeof($ausgaben); $i++){
                                    
$gesamtausgaben $ausgaben[$i]['betrag'] + $gesamtausgaben;
                                }
                                echo 
'<strong>'.$gesamtausgaben.'</strong>';                                                                 
                            
?> €
                        </td>                            
                    </tr>
<?php ?>                    
</table>

<?php
                
// XML wird angelegt
    
$xmlschreiber = new XMLWriter();
    
$xmlschreiber->openMemory();
    
$xmlschreiber->setIndent(true);
    
$xmlschreiber->setIndentString("\t");

    
$xmlschreiber->startDocument('1.0''utf-8');
    
$xmlschreiber->startElement('Verwaltung');
    
    
$xmlschreiber->startElement('Ausgaben');
    
$xmlschreiber->writeElement('Buchung'$ausgaben[$i]['beschreibung']);
    
$xmlschreiber->writeElement('Betrag',     $ausgaben[$i]['betrag']);
    
$xmlschreiber->endElement();    
    
$xmlschreiber->startElement('Summe');
    
$xmlschreiber->writeElement('Beträge',         $gesamtausgaben[$i]['$gesamtausgaben']);            
    
$xmlschreiber->endElement();
                                
    
$xmlschreiber->endDocument();                                
    
$xmlDaten $xmlschreiber->outputMemory();
    
file_put_contents('xml_ausgabe/Ausgaben.xml'$xmlDaten);
                
?>
                    <form>
                        <input type="button" value="XML Download" onclick="window.open('xml_ausgabe/Sachmittel_Ausgaben.xml')"></input>
                    </form>
In der oberen Tabelle werden Schleifen durchlaufen.
Die erste Schleife listet aus einer Datenbank alle Einträge von Beiträgen und deren Beschreibungen auf.
In der zweiten Schleife wird anschließend die Summe aller Beiträge berechnet und ausgegeben.
Ich möchte das jeder Beitrag plus Beschreibung gleichzeitig in eine XML-Datei geschrieben wird.
Die Baumstruktur wird im unteren Abschnitt (XML wird angelegt) gezeigt.
Wichtig ist das jeder Beitrag der in der Schleife entstehtauch angezeigtwird.

Problem:
Wenn ich die XML-Anweisungen NICHT in die Schleife einbaue wird die Baumstruktur angelegt aber es fehlen die Inhalte.
Wenn ich die XML-Anweisungen in die Schleife einbaue,werden sie nicht angezeigt bzw erstellt. (siehe unten)
PHP-Code:
<table width="100%">
<?php    
 
//XML wird angelegt
    
$xmlschreiber = new XMLWriter();
    
$xmlschreiber->openMemory();
    
$xmlschreiber->setIndent(true);
    
$xmlschreiber->setIndentString("\t");

    
$xmlschreiber->startDocument('1.0''utf-8');
    
$xmlschreiber->startElement('Verwaltung');        
                     for(
$i 0$i count($ausgaben); $i++){    ?>
                    <tr>
                        <td>
                        
                            <?php 
                            $xmlschreiber
->startElement('Ausgaben');    
                            
$xmlschreiber->writeElement('Buchung'$ausgaben[$i]['beschreibung']);                                                                                                                            
                            echo 
$ausgaben[$i]['beschreibung']; ?></td>
                        <td>    
                              <?php 
                            $xmlschreiber
->writeElement('Betrag',     $ausgaben[$i]['betrag']);                            
                            echo 
$ausgaben[$i]['betrag'];                             
                            
$xmlschreiber->endElement();?></td>                                                 
                        <td style="padding-top: 12,5px;">
                            <?php        
                            $xmlschreiber
->startElement('Summe');
                            
$xmlschreiber->writeElement('Beträge',         $gesamtausgaben[$i]['$gesamtausgaben']);
                                
                                
$gesamtausgaben 0;
                                for(
$i 0$i <= sizeof($ausgaben); $i++){
                                    
$gesamtausgaben $ausgaben[$i]['betrag'] + $gesamtausgaben;
                                }
                                echo 
'<strong>'.$gesamtausgaben.'</strong>';     
                            
                            
$xmlschreiber->endElement();                                                            
                            
?> €
                        </td>                            
                    </tr>
<?php 
$xmlschreiber->endDocument();                                
    
$xmlDaten $xmlschreiber->outputMemory();
    
file_put_contents('xml_ausgabe/Ausgaben.xml'$xmlDaten);
    
?>                    
</table>
Für jede Hilfe wäre ich sehr dankbar.
Halvalon ist offline   Mit Zitat antworten
Alt 27.09.2011, 23:50  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Hi,


Ich würde gar nicht mit HTML rumhantieren, wenn du eh eine xml erzeugen möchtest. Der Rattenschwanz deiner Lösung ist, dass du das- falls du das zum Laufen bekommst - nie wieder ändern möchtest, weil du 2 Aufgaben vermischt. Dadurch, dass du bereits ein XML erstellst, hast du bereits eine Repräsentation deiner Daten. Die kannst du beliebig per per XSL transformieren.

Ich kenn XMLWriter nicht so gut, daher das Codebeispiel per DOMDocument - ist allerdings komplett ungetestet.

PHP snippet:

PHP-Code:
<?php
$doc 
= new DOMDocument();
$Verwaltung $doc->createElement"Verwaltung" );
$gesamtausgaben 0;

for( 
$i 0$i count$ausgaben ); $i++ ) {
    
    
$gesamtausgaben += $ausgaben[$i]['betrag'];
    
$Ausgaben $doc->createElement"Ausgaben" );
        
$Buchung $doc->createElement"Buchung"$ausgaben[$i]['beschreibung'] );
        
$Betrag $doc->createElement('Betrag'$ausgaben[$i]['betrag']);
    
$Ausgaben->appendChild$Buchung );
    
$Ausgaben->appendChild$Betrag );
    
    
$Summe $doc->createElement('Summe');
    
$Betraege $doc->createElement('Betraege'$gesamtausgaben[$i][ $gesamtausgaben ]);
    
$Summe->appendChild$Betraege );   
    
    
$Verwaltung->appendChild$Ausgaben );
    
$Verwaltung->appendChild$Summe );
    
$doc->appendChild$Verwaltung );
}

$doc->saveXML'xml_ausgabe/Ausgaben.xml' );

$xsl = new DOMDocument();
$xsl->load('rechnung.xsl');

// Prozessor instanziieren und konfigurieren
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // XSL Document importieren

echo $proc->transformToXML($xml);
das zugehörige xsl - im codebeispiel die ausgaben.xsl:

Code:
<xsl:stylesheet
	version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:exp="http://www.example.com"
	exclude-result-prefixes="xsl"
>
<xsl:output method="xml" encoding="UTF-8" indent="no"/>
   <xsl:template match="Verwaltung">
        <table width="100%">
            <tr>
                <xsl:apply-templates select="." />
            </tr>
        </table>
    </xsl:template>
    <xsl:template match="Ausgaben|Betrag">
        <td><xsl:value-of select="child::*" /></td>
    </xsl:template>
    <xsl:template match="Summe">
        <td style="padding-top: 12,5px;"><strong><xsl:value-of select="Betraege" /></strong></td>
    </xsl:template>
    
</xsl:stylesheet>
Wie gesagt, das ist schnell runtergetippt. Soll dir auch nur einen möglichen Weg zeigen.

Viele Grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog

Geändert von rudygotya (27.09.2011 um 23:54 Uhr).
rudygotya ist offline   Mit Zitat antworten
Alt 30.09.2011, 21:17  
Neuer Benutzer
 
Registriert seit: 05.09.2011
Beiträge: 28
PHP-Kenntnisse:
Anfänger
Halvalon befindet sich auf einem aufstrebenden Ast
Standard

Na mit DOM wollte ich mich nicht beschäftigen das ich es mit Simple leichter empfinde. Aber trotzdem Danke für den Ansatz.

Ich habe jetzt mein Problem runter gebrochen bzw. ich übersichtlicheren Sachverhalt programmiert.
Dazu legte ich eine Datenbank an mit einer Tabelle und ein paar Einträgen. Diese habe ich mir alle über eine while-Schleife ausgeben lassen. Darin integrierte ich XML und es KLAPPTE
Anschließend wird eine Datei angelegt die in XML alle Einträge der Datenbank enthält.

Woran mein Problem genau lag weiß ich auch noch nicht. Ich vermute das es mit der Art und Weise der Abarbeitung der For- bzw. der While-Schleife zu tun hat.

Anbei mein Code der Fehlerfrei funktioniert.
PHP-Code:
echo 'Verbindung zur Datenbank erfolgreich ';                
                
$sql "
                    SELECT *
                    FROM `Personen`
                    LIMIT 0 , 30
                    "
;                
                    
                    
// Variable zum XML schreiben
                    
$xmlschreiber = new XMLWriter();
                    
// Methode zum schreiben im Zwischenspeicher
                    
$xmlschreiber->openMemory();
    
                    
// Funktion Einrückung wird aktiviert durch true
                    
$xmlschreiber->setIndent(true);
                    
// Art der Einrückung: \t für Tabulator
                    
$xmlschreiber->setIndentString("\t");
    
                    
// XML spezifischer Startcode Version 1.0 & UTF-8
                    
$xmlschreiber->startDocument('1.0''utf-8');
                      
$xmlschreiber->startElement('XML');
                    
                
$abfrage mysqli_query($verbindung$sql);
                echo 
'<ul>';
                while (
$freund mysqli_fetch_assoc($abfrage)) {
                    
$xmlschreiber->startElement('Personen');
                    
$xmlschreiber->writeElement('Vorname',         $freund['Vorname']);
                    echo 
"<li>{$freund['Vorname']} </li>";
                    
$xmlschreiber->writeElement('Name',             $freund['Name']);
                    echo 
"<li>{$freund['Name']} </li>";
                    
$xmlschreiber->writeElement('Wohnort',         $freund['Wohnort']);
                    echo 
"<li>{$freund['Wohnort']} </li>";
                    
$xmlschreiber->writeElement('Telefon',        $freund['Telefon']);
                    echo 
"<li>{$freund['Telefon']}</li>";
                    
$xmlschreiber->endElement();
                    echo 
'<br>';
                    }
                echo 
'<ul>';
                
                
                      
$xmlschreiber->endElement();
                    
$xmlschreiber->endDocument();    
                    
$xmlDaten $xmlschreiber->outputMemory();    file_put_contents('XML_Schleife.xml'$xmlDaten); 
Vielen Dank für die Denkanstöße
Gruß vom Namensvetter
Halvalon ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable in URL übergeben? Micha69 PHP Einsteiger 4 23.07.2011 16:08
[Erledigt] variable übergeben innerhalb eine schleife Uranus PHP Einsteiger 8 17.06.2011 15:14
[Erledigt] Variable aus Zend_Controller_Action nach Zend_Form übergeben dreamcatcher PHP Einsteiger 1 30.05.2011 09:56
[Erledigt] Wert an Funktion ohne Variable übergeben wooha PHP Einsteiger 4 07.05.2011 22:36
Variable übergeben mkn PHP Tipps 2010 12 24.09.2010 19:06
[Erledigt] Wert einer Variable an einen Link übergeben horni23 PHP Tipps 2010 11 10.04.2010 00:32
Variable an ein Input Feld übergeben. Rubio JavaScript, Ajax und mehr 5 18.03.2010 08:25
[Erledigt] Variable wird nicht übergeben Thorsten PHP Tipps 2008 8 24.05.2008 11:57
Schon wieder: Javascript Variable an PHP übergeben duerov HTML, Usability und Barrierefreiheit 6 13.03.2006 09:27
variable übergeben philips PHP Tipps 2006 6 08.01.2006 18:36
variable übergeben PHP Tipps 2005-2 4 18.07.2005 19:12
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
Variable nach $myrow[''] übergeben PHP Tipps 2004 2 20.10.2004 17:56
Variable übergeben me PHP Tipps 2004 14 31.08.2004 18:17
[Erledigt] Variable in URL übergeben, ohne dass man sie sieht? PHP Tipps 2004 4 17.07.2004 10:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php variable an xml übergeben, variable an xml übergeben, php variable in .xml, xsl php variable, php variable in xml übergeben, xml variable übergeben xsl:variable, php parameter an xsl übergeben, php xml domdocument datensätze schreiben schleife appendchild, php variable mit utf 8 übergeben, php tabzeichen in utf8 string, xml an variable übergeben php, variablen an xml übergeben, in .xml ein php variable, php xml datei in variable, php variablen an xml übergeben, parameter an xml übegeben, variable von php an xml übergeben, php variable in xml

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum