mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 13:42 Benutzername: Passwort: Auto-Login

Thema: [PHP + XML] Wie genauen / entsprechenden Datensatz abfragen? vom 23.04.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP + XML] Wie genauen / entsprechenden Datensatz abfragen?
Autor Nachricht
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.04.2008 21:02
Titel

[PHP + XML] Wie genauen / entsprechenden Datensatz abfragen?

Antworten mit Zitat Zum Seitenanfang

Hey Jungs, Mädels,


ich muss gerade eine Bildergalerie mit PHP und XML (mySQL nicht vorhanden beim Kunden) schreiben.
Ja, ich geb's zu, ich hab vorher noch nie mit XML gearbeitet. Nur mal so Kleinigkeiten, die sind aber vernachlässigbar.

Jetzt hab ich aber ein Problem: Die Galerie ist in mehrere Sektionen aufgeteilt (Natur, Stadt, Portrait, etc)... das steht mit dem Dateinamen nun in der XML Datei.

Jetzt meine Frage: wie kann ich die Bilder nach Sektion filtern? Ich habe vor über $_GET bzw die URL die Sektion zu übergeben. Dann müsste ich eben jetzt eine Abfrage erstellen, die nur die Sektionsfotos anzeigt.

Mein bisheriger Code:
Code:

       <?php
      if(file_exists('Galerie/imgdb.xml')){
         $xml = simplexml_load_file('Galerie/imgdb.xml');
         
         if($xml){
            foreach($xml->bild as $bild){
      ?>
         <a href="?id=portfolio&amp;sub=<?php echo strip_tags($_GET['sub']); ?>&amp;img=<?php echo $bild->id; ?>" rel="transition[appear]"><img src="<?php echo $bild->path; ?>" alt="<?php echo $bild->name; ?>" width="125" height="125" /></a>
      <?php   
            }
         }else{
            echo "Fallback";
         }
      }else{
            echo "Fallback";
      }
      ?>   


XML Datei:
Code:

<bildergalerie>
   <bild>
      <id>1</id>
      <path>Galerie/images/1.jpg</path>
      <name>Dresden Spiegelung</name>
      <size>400kb</size>
      <width>708</width>
      <height>708</height>
      <category>Stillleben</category>
   </bild>
   <bild>
      <id>2</id>
      <path>Galerie/images/2.jpg</path>
      <name>Portrait am Feld</name>
      <size>304kb</size>
      <width>652</width>
      <height>652</height>
      <category>Portrait</category>
   </bild>
</bildergalerie>


Also kurz und gut ich suche in SimpleXML (o.ä) den Ersatz für SQL-Syntax: SELECT*FROM tabelle WHERE kategorie='portrait'

Danke für eure Hilfe, Tutorials, wie auch immer.. alles!!! Lächel
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 23.04.2008 21:25
Titel

Antworten mit Zitat Zum Seitenanfang

Mit SimpleXML geht das afraik nur ziemlich umständlich. Ich würde da mit der DOM-Implementierung + Xpath arbeiten. Damit kannst du Knoten bzw. Sets ähnlich komfortabel wie mit CSS selektieren. Vielleicht möchtest du sogar ganz in xsl-transformationen einsteigen, PHP5 kann das mittlerweile auch ziemlich gut.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mi 23.04.2008 21:57
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Mit SimpleXML geht das afraik nur ziemlich umständlich. Ich würde da mit der DOM-Implementierung + Xpath arbeiten.

Das sehe ich in diesem Fall nicht so. Hier wird eher nach einem Ersatz für eine SQL-Datenbank gesucht. Es sollen Abfragen durchgeführt werden und nicht alles komplett transformiert werden.
Ein event-based XML-Parser (SAX) ist hier doch sinnvoller als Zugriff über's DOM.

Um sich den Unterschied klar zu machen:
XML-Parser Grundlegendes


BTW: Wenn PHP5 vorhanden ist - und das muß der Fall sein, weil es sonst kein simplexml_load_file() gibt - kann man auch mit SQLite arbeiten. Dazu braucht man keinen installierten Datenbankserver wie bei MySQL. Die Daten werden in einer einfachen Datei auf dem Server gespeichert. Der Zugriff erfolgt über SQL-Kommandos.
Natürlich ist SQLite nicht so leistungsfähig wie ein komplexeres relationales Datenbankmanagementsystem, aber für kleinere Dinge wie ein Gästebuch oder anderes ist es bei weitem ausreichend. Eigentlich wäre es sogar völlig oversized, MySQL für ein einfaches Gästebuch einzusetzen...
Naja, wie auch immer: Ich würde mal einen Blick drauf werfen. Ich weiß ja nicht, wie das Projekt hier jetzt so genau aussehen soll, aber bei dem, was ich mitbekommen habe, scheint mit SQLite vielleicht eine gute Alternative zu den XML-Dateien zu sein.
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 23.04.2008 22:07
Titel

Antworten mit Zitat Zum Seitenanfang

hm sqlite ist sicher eine sinnvolle alternative, aber vom sax-parser würde ich prinzipiell abraten. Erstens muss man selbst umständlich über den Baum erm ich nenns mal tokenisierten Baum iterierieren, zweites für jede Prozedur (getKategorie(), getItem() etc (nur als Beispiel) die entsprechenden Suchalgorithmen implementieren.

Vorteile SAX: Geschwindigkeit, Nachteil: Ausgabe als reine Liste von Daten, es gibt keine Prozeduren auf Daten, nur ein paar Callback-Rümpfe, die man selbst befüllen muss/kann. Wobei ich dazu tendiere, mir das ganze Ding rausrotzen zu lassen.
Vorteile SimpleXML: Simple (Aha *zwinker*) Api, einfache Iteration, rekursive Iteratoren gibs in SPL
Vorteile DOM: Mächtige Schnittstelle
Vorteile DOM+Xpath bzw. xslt: Mächtige aber eingängige Schnittstelle (die auch noch w3c-standardisiert ist und in vielen anderen Sprachen immer gleich bzw. ähnlich aussieht) + einfache Adressierung von Knoten innerhalb des Baums (Was hier eindeutig gefordert ist).

Wobei man sich über den xslt-Overhead durchaus streiten kann, ich tendiere immer noch zum DOM, weil ich da einfach geübter bin. Bei großen Dokumenten/POD-Apps/Printworkflows macht ein Formatter wie bspw. ein xslt/-fo-Parser sicher mehr Sinn.


Zuletzt bearbeitet von bacon am Mi 23.04.2008 22:21, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden
Smooth-Graphics
Threadersteller

Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.04.2008 22:41
Titel

Antworten mit Zitat Zum Seitenanfang

Gut, dann stellt sich jetzt die Frage: XML oder SQLite? Was ist besser, wann und warum...

Ich hab zwar jetzt schon mit XML angefangen das ganze aufzubauen, nur wenn ich das sonst einfacher und besser in SQLite haben kann, würde ich's halt nochmal umschmeißen und so bauen...

Ach ja und danke für eure bisherigen Tipps, kann ich trotzdem jetzt schon gebrauchen!

Gruß
smooth-graphics
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Glas

Dabei seit: 24.05.2003
Ort: Bremen
Alter: 41
Geschlecht: Männlich
Verfasst Do 24.04.2008 09:00
Titel

Antworten mit Zitat Zum Seitenanfang

Grunsätzlich erlaubt SimpleXML auch, XPath Queries auf XML auszuführen:

http://de.php.net/manual/de/function.simplexml-element-xpath.php

Ggf. hilft Dir das in Deinem Fall bereits weiter.
  View user's profile Private Nachricht senden
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Do 24.04.2008 09:04
Titel

Antworten mit Zitat Zum Seitenanfang

Bäm! Hab ich gar nicht gewusst, danke *zwinker*
  View user's profile Private Nachricht senden
 
Ähnliche Themen Template mit entsprechenden Grafiken - Hausnummer?
Ein Datensatz löschen in SQL
XML-datensatz verdreht
Typo --> Bild als Datensatz
[php MySQL] Wie oft kommt Datensatz vor
Spry - XML Datensatz filtern
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.