Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Wer kennt sich mit den PHP SimpleXML Funktionen aus?

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 03.07.2008, 09:37

Hi,

in meiner Anwendung nutze ich ein SimpleXML zum einlesen von Daten. In dem XML befinden sich mehrere Produkte, wobei jedes Produkt mehrere Barcodes (eans) haben kann.

Das einlesen der Produkte stellt kein Problem dar. Hierzu findet man ja auch viele Beispiele im Internet. Nun gehts aber eine Ebene tiefer und ich will die Barcodes einlesen.

Ich habe es SimpleXML Konform leider nicht geschaft, sondern nach langen veruschen nur mit einem Umweg (Marke Eigenbau:)). Es haut so zwar hin, aber ich finde den weg nicht schön und wollte mal schauen ob hier jemand ist, der wir zeigen kann, wie ich die Barcodes auch besser auslesen kann.

Ich habe mein Problem mal auf 50 Zeilen Code gedrosselt, die man sich in ein php file kopieren und gleich ausführen kann.

Code: Alles auswählen

<?
// test xml
$xml_str = '<?xml version="1.0" encoding="ISO-8859-1"?>
   <products>
      <product>
         <id>10000</id>
         <name>duke forever</name>
         <model>DNF3DS</model>
         <eans>
            <ean>4041377002132</ean>
            <ean>123456789</ean>
            <ean>123445664534</ean>
         </eans>
      </product>
      <product>
         <id>10001</id>
         <name>Technische Analyse Buch</name>
         <model>TAB23GD</model>
         <eans>
            <ean>9783898790628</ean>
         </eans>
      </product>
   </products>';

// read and parse xml
$xml = new SimpleXMLElement&#40;$xml_str&#41;;
foreach &#40;$xml->product as $product&#41; 
&#123;
   // show product
   echo $product->id . " | " . $product->name . " | " . $product->model . "<br>"; 
      
   // show eans
   $i = 0;
   while &#40;true&#41;
   &#123;
      if &#40;isset&#40;$product->eans->ean&#91;$i&#93;&#41;&#41;
	  &#123;
	     echo $product->eans->ean&#91;$i&#93; . "<br>";			 
		 $i++;
	  &#125;
	  else
	     break;		 
   &#125;
      
   echo "<hr>";
&#125;
?>
Ich nutze ja eine while Schleife um die Barcodes (eans) zu lesen und das müsste ja auch irgendwie mit einem foreach gehen? Ich hatte es leider nicht so hinbekommen.

Phil

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 03.07.2008, 17:32

Naja lasse doch $product->eans durch foreach() laufen.
Verstehe das Problem nicht ganz.

Code: Alles auswählen

foreach &#40; $product->eans->ean as $ean &#41; echo $ean . " <br>";

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 03.07.2008, 20:41

Hm, klingt eigentlich logisch. Gute Frage wieso ich es nicht hingepackt habe. Nun konnte ich zumindest sämtliche Notlösungen durch einen sauberen Weg austauschen.

Besten dank nochmal.

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 04.07.2008, 07:29

Du kannst alledings noch Abfragen ob $product->eans auch wirklich Daten enthält.
if ( count($product->eans) > 0 ) sollte da schon reichen. Falls es mal keine Werte bei „ean” geben sollte, würde foreach() dann eine Fehlermeldung erzeugen.

pvdb
PostRank 5
PostRank 5
Beiträge: 321
Registriert: 16.01.2005, 22:37
Wohnort: Hannover

Beitrag von pvdb » 04.07.2008, 19:26

Jo, vielen Dank noch für diese Info. Fehlermeldungen hab es wohl keine bisher, habs aber dennoch mal mit reingenommen ;)

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag