moko: Datentransfer HTML / XML / XSL

Beitrag lesen

Hi,

so ganz verstehe ich dein Problem nicht, aber ich ahne es ...

  1. HTML Oberfläche (+CSS): kein Problem
  2. XML Basis bauen: kein problem
  3. die oben beschriebene Kommunikation (von dir glaub mit Formularfelder beschrieben): Problem

Manchmal ist es frustrierend solch ein Projekt aufgedrückt zu bekommen, wenn man kein Programmierer ist :(

wer macht denn sowas?

Also, extrem simplifizierte Vorgehensweise. Das kann man schöner machen, nur das Prinzip.

  1. du baust dir das HTML-Formular. Das kannst du ja. Den Formularelementen (z.b. input) bist du EINDEUTIGE Namen.

z.b.

  
<form name="config_form" method="post" action="deinphpskript.php">  
<input type="text" name="film_nr" />  
<input type="text" name="sprache"  />  
<input type="submit" value="XML generieren" />  
</form>  

(ob input-Elemente das richtige sind, bezweifle ich mal. Besser wären vermutlich select-Elemente.)

  
<form name="config_form" method="post" action="deinphpskript.php">  
  
<select name="film_nr">  
<option value="3">Flugzeugsimulation 3</option>  
<option value="2">Flugzeugsimulation 2</option>  
</select>  
  
<select name="sprache">  
<option value="de">deutsch</option>  
<option value="en">englisch</option>  
</select>  
  
<input type="submit" value="XML generieren" />  
</form>  
  

Das ist geschafft! Das Formular seht. Was passiert nun, wenn du auf den Submit-Button mit der Beschriftung "XML generieren" klickst?

Vermutlich bekommst du einen 404-Error, weil dieses Skript "deinphpskript.php" nicht existiert, oder wenn es bereits existiert, der Pfad dorthin nicht stimmt. Das musst du also gewährleisten.

  1. Lege das Skript mit dem Namen "deinphpskript.php" in einem Verzeichnis deiner Wahl an. Es muss via http erreichbar sein, sprich, du musst es (vereinfacht gesagt) mit deinem Browser aufrufen können. Lege es also dorthin, wo dein HTML-Dokument mit dem Formular liegt, welches wir in 1) gebaut haben.

Die Daten werden also (via der HTTP-Methode POST) an dein Skript geschickt, wenn du auf den Button deines Formulars klickts.

der Inhalt deines Testscripts namens deinphpskript.php

  
<?php  
  
print_r($_POST);  
exit;  

was siehst du? Nichts? Dann hast du was falsch gemacht.
Du siehst was? Dann siehst du jetzt einen assoziativen Array mit Key-Value-Paaren. Im Idealfall.
Der Key, der Schlüssel des Arrayelements, zeigt jeweils den Namen deines HTML-Formularfeldes an.
der Value, der Wert des Arrayelements, zeigt jeweils den WERT deines HTML-Formularfeldes an.
Abgefahren, was? Geschnallt?

Probier das solange, bis du was siehst. Wenn du was siehst, bzw. DAS siehst, was du sehen willst, klappt die Übertragung von deinem HTML-Formular all the way back auf die Serverseite, wo dein PHP-Script liegt und die Wert entgegennimmt. Du bist kurz davor, aus diesen Werten ein XML zu erstellen

  1. Du hast es geschafft, du hast den $_POST Array vor dir liegen und du siehst haargenau die Werte darin, die du abgesendet hast. Nun willst du ein XML-File generieren. Dazu gibt es ne Menge Möglichkeiten, ich zeige dir die ALLERSIMPELSTE. Vorsicht, um Sicherheit, Validierung und so weiter musst du dich selbst kümmern. Ich gehe in diesem kleinen Exkurs davon aus, dass die Werte so sind, wie sie sein sollten.

Wir machen das hier alles simpel. Also, du hast jetzt deine gewählte Sprache z.b. hier drin:

  
$_POST["sprache"];  

diesen Wert kannst du dir zum Beispiel (ich höre schon die Wölfe heulen) umkopieren....ja, kopier das mal um, damit du siehst, was du machst. Und jetzt gibt das umkopierte aus.

  
$sprache = $_POST["sprache"];  
echo $sprache;  

Was steht da? Hoffentlich "de" oder "en", wie du es im Formularfeld hinterlegt hast.
Ich denke, das Prinzip ist klar. Also, bauen wir ein XML.

Ganz simpel macht man das so, und zwar man baut sich einen String zusammen.

  
$xmlString = '';  
$xmlString .= "<xml>";  
$xmlString .= "<configuration>";  
$xmlString .= "<sprache>";  
$xmlString .= $sprache; // hier dein umkopierter Wert!!!  
$xmlString .= "</sprache>";  
$xmlString .= "<film>";  
$xmlString .= $film_nr; // hier dein anderer umkopierter Wert!!!  
$xmlString .= "</film>";  
$xmlString .= "</configuration>";  
$xmlString .= "</xml>";  

diesen String speicherst du jetzt dorthin, wo du ihn haben willst. Nämlich in eine Datei.
Speichern in PHP macht man vielleicht so:

  
$filename = "pfad/zu/deiner/neuen/xmldatei.xml";  
  
file_put_contents($filename, $xmlString);  

ist alles nicht getestet. Soll ja nur ein kleines Verständnisproblem lösen. Unter pfad/zu/deiner/neuen/ solle jetzt eine Datei namens xmldatei.xml liegen. Diese kann dann dein Programm dort abholen und weiterverarbeiten.

viele Grüße
moko