Su: PHP & XML

Hallo an alle Leser,

ich habe eine Bildergalerie in Flash und eine XML Datei wird über Flashvars geladen:

<param name="flashvars" value="xmlurl=list.xml" />

Nun möchte ich aber unterschiedliche Ergebnisse aus der Datenbank holen und hier bietet PHP ja DOM oder SimpleXML an, aber ich sehe den Wald vor Bäumen nicht mehr!

Ich hätte das jetzt folgendermaßen vorgehabt:

1. User wählt aus einem Formularlistenfeld ein Thema aus und drückt auf den Sendebutton;

2. Eine ID wird an eine zweite PHP Seite gesendet wo sich die DB Abfrage im PHP- und das eingebundene Flash im HTML Bereich befindet;

3. Das DB Ergebnis wird in einem String gespeichert, Beispiel:

$string = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<photos>
 <photo>
  <thumbnail>175_01.jpg</thumbnail>
   <filename>175_01.jpg</filename>
   <title>Foto von uns</title>
  <description>Das sind wir</description>
 </photo>
</photos>
XML;

4. Wie aber lade ich den String im Flashvars?

In etwa so?

$xml = simplexml_load_string($string);

<param name="flashvars" value="xmlurl=<?php var_dump($xml); ?>" />

Oder liege ich damit komplett falsch und das geht nur wenn ich noch eine zweite PHP Datei ansteuere wo dann die Informationen aus der Datenbank ausgegeben werden, Beispiel:

<param name="flashvars" value="xmlurl=bilderliste.php?ID=1234" />

Danke für eure Hilfe!

Grüße,

Su

  1. Oder liege ich damit komplett falsch und das geht nur wenn ich noch eine zweite PHP Datei ansteuere wo dann die Informationen aus der Datenbank ausgegeben werden, Beispiel:

    Warum erzeugst du nicht ein XML-File welches du mit Flash per HTTP aufrufst?

    in den Flashvars gibst du nur den Pfad zum XML-File an.

    1. Hi suit,

      Danke für Deinen tipp!

      Das wäre natürlich eine Möglichkeit die ich vorher auch schon in betracht gezogen hatte, aber hier werden doch die XML’s auf dem Server abgelegt und das Script muss nachher den ganzen Datenmüll wieder löschen. Wenn das so ist, dann ist es meines Erachtens besser eine zusätzliche PHP anzusteuern inbegriffen der ID Übermittlung!

      Aber wie sieht es den mit der ersten Variante aus, ich meine alles in eine Variable schreiben und die Variable ausführen in Flashvars, geht das überhaupt?

      Gruß,

      Su

      1. Hi!

        [...] aber hier werden doch die XML’s auf dem Server abgelegt und das Script muss nachher den ganzen Datenmüll wieder löschen. Wenn das so ist, dann ist es meines Erachtens besser eine zusätzliche PHP anzusteuern inbegriffen der ID Übermittlung!

        Nichts was ein Webserver ausliefert muss eine Datei aus seinem Dateisystem sein. Er kann, so wie du das mit PHP kennengelernt hast, auf einen Request auch eine speziell dafür erstellte Antwort zurückgeben. Das ist bei XML nicht anderes. Erstell zunächst einen Request, aus dem du alle Daten nehmen kannst, die du für die Erzeugung der XML-Antwort benötigst, also eine URL mit allen nötigen Parametern. Diese notierst du bei den flashvars. Der Browser wird sie daraufhin irgendwann aufrufen. Wenn das der Fall ist, erzeugst du die XML-Daten, gibst sie als Response zurück und der Webserver kann den ganzen Vorgang und seine zwischenzeitlich benötigten Daten am Request-Ende vergessen.

        Lo!

        1. Hallo dedlfix, Felix Riesterer, jobo und suit,

          leider konnte ich bis heute Nachmittag das Internet nicht nutzen da mein Provider Probleme hatte.

          Daher möchte ich mich nachträglich für die freundliche Unterstützung bei euch bedanken!

          Gruß,

          Su

  2. Hallo,

    1. Wie aber lade ich den String im Flashvars?

    In etwa so?

    $xml = simplexml_load_string($string);

    <param name="flashvars" value="xmlurl=<?php var_dump($xml); ?>" />

    äh. besser so:

    xmlurl = my_new_php_file_echoing_xml.xml.php

    mit

    echo $xml->asXML() oder ->saveXML() oder wie auch immer die Funktion bei simple_xml heißt, die das $xml als String ausgibt. aber wozu dann laden (;-)?

    Gruß

    jobo

    1. Hallo jobo,

      aber wozu dann laden (;-)?

      Ich dachte dass die XML Datei geladen wird, aber nach Ihrer frage bin ich mir da nicht mehr so sicher. Wäre den Auslesen richtig?

      Gruß,

      Su

      1. Hallo,

        Ich dachte dass die XML Datei geladen wird, aber nach Ihrer frage bin ich mir da nicht mehr so sicher. Wäre den Auslesen richtig?

        Felix hat das ja nochmal ausführlich beschrieben. Und dedlfix auch. Das PHP-Script sollte zB. mit der entsprechenden Funtkion (->save(), ->asXML()) den XML-String ausgeben/aus-echoen.

        Gruß

        jobo

  3. Liebe(r) Su,

    <param name="flashvars" value="xmlurl=list.xml" />

    das änderst Du so:

    <param name="flashvars" value="xmlurl=http://example.com/xml/list.php" />

    Auf dem Server (hier "example.com") gibt es dann im Verzeichnis /xml/ die Scriptdatei list.php. Darin wird per PHP der XML-Code zusammengebastelt, aber nicht in einer Datei gespeichert, sondern sofort "als XML-Datei" (das macht man mit header()) an den Browser ausgegeben. Der nimmt die XML-Daten als "XML-Datei" an, obwohl die Datei im "Dateinamen" (URL) die Endung ".php" hat, und obwohl der Server keine XML-Datei in gespeicherter Form vorliegen hat.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)