Wie kann eine Datenbanktabelle (Artikel mit Eigenschaften) via PHP in XML ausgegeben werden?

... komplette Frage anzeigen

1 Antwort

Also wenn ich dein Vorhaben richtig verstehe, dann sollte das doch eher einfach sein;

Du holst dir deine Inhalte mit PHP über mysql_query(); und speicherst das in eine Variable. Dann kannst du die Variablen einfach in deine XML struktur rein schreiben. Beispiel:

//PHP
<?php
$name = mysql_real_escape_string($_POST ['name']);
$product1 = mysql_query("SELECT * FROM your_table WHERE name = '$name' LIMIT 1");

?>

//XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<produktliste>
    <produkt-1>
        <?php echo $product1; ?>
    </produkt-1>
</produktliste>

Wenn die Dokumente jetzt per include richtig miteinander verknüpft sind, müsste das doch eigentlich gehen oder? (Die Variable $name wird in diesem Fall mit einem mit einem vom customer eingetragenen wert abgefüllt)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von PeterW2000
13.06.2016, 14:50

Danke für die schnelle Antwort :-). Ich habe gerade nochmal das Problem konkret geschildert, das war beim Erstellen der Frage irgendwie nicht machbar :-(

Hier nochmal reinkopiert:

Ich möchte gern Daten aus einer Datenbank in einer XML-Datei ausgeben.
Es handelt sich um Artikel einer Bestellung, für die spezifische Eigenschaften hinterlegt wurden (System J!2.5 mit Virtuemart 2.0).

Es funktioniert die passenden Datenbankfelder per SELECT abzufragen. Allerdings werden die Artikeleigenschaften nur als Verweise gespeichert, sodass dann in der XML nur "kryptischer Kram" drin steht.

Hier mal der bestehende Code:

function daten_holen()

 $GLOBALS['datakind'] = 1;

 $db_tableprefix = db_prefix_aus_config_holen();

 $GLOBALS['query'] = '
  SELECT '
   .$db_tableprefix.'virtuemart_orders.virtuemart_order_id as orderID, '
   .$db_tableprefix.'virtuemart_order_items.virtuemart_order_item_id as Positionsnummer, '
   .$db_tableprefix.'virtuemart_order_items.virtuemart_product_id as produktID, '
   .$db_tableprefix.'virtuemart_order_items.virtuemart_product_id as productID, '
   .$db_tableprefix.'virtuemart_order_items.order_item_name as abweichenderArtikeltext, '
   .$db_tableprefix.'virtuemart_order_items.product_attribute as ZusatzfeldPosition1, '
   .$db_tableprefix.'virtuemart_order_items.product_quantity as Menge, '
  FROM '
   .$db_tableprefix.'virtuemart_orders, '
   .$db_tableprefix.'virtuemart_order_items
  WHERE '
   .$db_tableprefix.'virtuemart_orders.virtuemart_order_id = '.$db_tableprefix.'virtuemart_order_items.virtuemart_order_id  
 ';

 return $GLOBALS['datakind'];
}

Das Problem ist nun speziell die Zeile 

.$db_tableprefix.'virtuemart_order_items.product_attribute as ZusatzfeldPosition1, '

da in dieses Datenbankfeld bei der Bestellung nicht die Eigenschaft ansich gespeichert wird, sondern beispielsweise {"2283":{"attrib":{"title":"0","subtitle":"0"}},"2284":{"designtool":{"imagepath":"http:\/\/www.WEBSITE.de\/uploads\/du_0ce3ba1c477e9b498b2cd1d57bc038ad\/du_cart_575e942356c18\/177\/Testbild.jpg"}}}

Da in shopeigenen E-Mails die Eigenschaften angezeigt werden, habe ich die verantwortliche Ausgabe ausfindig gemacht, die den Zeichensalat korrekt aufdröselt: 

<?php
       if(!class_exists('VirtueMartModelCustomfields'))require(JPATH_VM_ADMINISTRATOR.DS.'models'.DS.'customfields.php');
       $product_attribute = VirtueMartModelCustomfields::CustomsFieldOrderDisplay($item,'FE');
    ?>

Die Variable $product_attribute ist dann mit den korrekten Eigenschaften gefüllt.
Das spannende ist, wie ich die Variable nun als "ZusatzfeldPosition1" in die $GLOBALS['datakind'] bekomme bzw. wie und wo ich den Code für die Variable $product_attribute einbaue.

Meine PHP-Kenntnisse sind leider sehr gering, sodass ich komplett auf dem Schlauch stehe.
Für Denkanstösse oder konkrete Hilfsstellung wäre ich sehr dankbar.

Danke und viele Grüße
PeterW

0