[XML] Daten von Formular in XML-Datei?

SunDay

Board Lümmel
ID: 305100
L
2 Dezember 2007
720
55
Hi,

ich habe momentan ein Problem.
Ich habe auf dem Server eine XML Datei, die so aufgebaut ist:

Code:
<chart>
 <chart_data>
      <row>
         <null/>
         <string>Tag 1</string>

      </row>
      <row>
         <string>Gewinn gesamt in USD</string>
         <number>0.57</number>

<number>3.88</number>
      </row>
     
   </chart_data>

   <!-- change the chart to a bar chart -->
   <chart_type>line</chart_type>

</chart>

Jetzt möchte ich gerne ein Formular erstellen, mit den Feldern: Tag
und Gewinn

Der Wert der in dem Feld "Tag" steht, soll in den rot markierten Bereich und der Wert aus dem Feld "Gewinn" soll dann in den grün markierten Bereich eingetragen werden:

Code:
<chart>
 <chart_data>
[COLOR="Red"]      <row>
         <null/>
         <string>Tag 1</string>

      </row>[/COLOR]
[COLOR="YellowGreen"]      <row>
         <string>Gewinn gesamt in USD</string>
         <number>0.57</number>

      </row>[/COLOR]
     
   </chart_data>

   <!-- change the chart to a bar chart -->
   <chart_type>line</chart_type>

</chart>


Kann mir jemand helfen, wie ich das geschafft bekomme?

Lg
SunDay
:biggrin:
 
Mit PHP und SimpleXML...
PHP:
$xml = simplexml_load_file('datei');
$xml->chart_data->row[0]->string = 'blub';
$xml->chart_data->row[1]->number = 234234;
$xml->asXML('datei');
 
Hi,


habe es jetzt mal so gemacht:

Code:
<?php

$tag = $_POST[tag];
$wert = $_POST[wert];

echo $tag;
echo $wert;
$xml = simplexml_load_file('sample.xml');
$xml->chart_data->row[0]->string = '$tag';
$xml->chart_data->row[1]->number = '$wert';
$xml->asXML('sample.xml');  
?>

Die werte werden richtig übergeben, nur wird nichts in die sample.xml geschrieben, woran kann das liegen?

Ich wette da ist irgendein ganz doofer Fehler drin :LOL:

Gruß
SunDay
 
Ist die Datei denn auch schreibbar?

Und über Folgendes würde ich nochmal kurz nachdenken:
PHP:
$xml->chart_data->row[0]->string = /* -> */ '$tag' /* <- */;
;)
 
Ah!

Also jetzt habe ich es so gemacht:
Code:
<?php

$tag = $_POST[tag];
$wert = $_POST[wert];

$xml = simplexml_load_file('sample.xml');
$xml->chart_data->row[0]->string = $tag;
$xml->chart_data->row[1]->number = $wert;
$xml->asXML('sample.xml');  
?>

Sollte das so aussehen?
Sonst wäre ja nur "$tag" da drin, jetzt ist der Wert von der Variable $tag drin.

Die Datei ist beschreibbar, aber es funktioniert irgendwie immer noch nicht.

Gruß
SunDay
 
Hi,
ja, die Sicherheit. Ich wollte nur erstmal das Script selber zum laufen bekommen, bevor ich die Daten des Formulars prüfe.

Momentan bin ich aber leider noch nicht weiter gekommen.
Schon 4 Stunden lang bemüh ich google und es kommt nix dabei raus.

Kann mir jemand helfen?

Gruß
SunDay
 
deine letzte Zeile:

PHP:
$xml->asXML('sample.xml');

mit der ersetzen sonst speicherst du nichts

PHP:
file_put_contents('sample.xml', $xml->asXml());
 
Habs jetzt mal etwas abgeändert und das Einsetzen der Variable $wert rausgenommen das ganze sieht jetzt so aus:

Code:
<?php

$tag = "Tag 6";
$wert = "3";

$xml = simplexml_load_file('sample.xml');
$xml->chart_data->row[0]->string = $tag;
file_put_contents('sample.xml', $xml->asXML());  
?>

klappt aber irgendwie trotzdem noch nicht, weist du vielleicht warum?

Gruß
SunDay
 
Ich hab grad mal ein bisschen rumgetestet:
PHP:
<?php
	$filename = 'sample.xml';

	$tag = 'foo';
	$wert = 'bar';

	if (!file_exists($filename))
	{
		printf('"%s" nicht vorhanden', $filename);
		die;
	}
	if (!is_writeable($filename))
	{
		printf('"%s" ist nicht beschreibbar', $filename);
		die;
	}

	$xml = simplexml_load_file($filename);
	$xml->chart_data->row[0]->addChild('string', $tag);
	$xml->chart_data->row[1]->addChild('number', $wert);
	$xml->asXML($filename);
?>
Funktioniert bei mir problemlos...