kostenloser Webspace werbefrei: lima-city


Mit PHP Daten aus MySQL Datenbank als XML ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    Ich will mit PHP aus einer MySQL Datenbank Daten auslesen und diese dann als XML Dokument ausgeben. Ich habe auch schon eine Anleitung gefunden, wie ich etwas als XML Dokument ausgeben, aber ich habe Probleme die Daten aus der Datenbank auszulesen. Hier ist die Anleitung http://foobarblog.net/2011/06/xml-datei-dynamisch-erstellen-mit-php/.
    Hier der ganze Code:

    <?php
    // Inhalt der Datei als XML im UTF-8 Zeichensatz festlegen
    header("Content-type: text/xml; charset=utf-8");
    
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo "\n";
    
    $dbHost = "localhost";
    $dbUser = "user";
    $dbPassword = "";
    $dbName = 'name';
     
      
    if (!mysql_connect($dbHost, $dbUser, $dbPassword)) {
        echo 'Keine Verbindung zur Datenbank möglich';
        exit;
    }
    
    // Daten in Array merken. Diese könnte auch aus einer Datenbank stammen
    
    $query = "Select * From table";
    
    $daten = array(
        0 => array('bildpfad' => 'urlaub.jpg', 'titel' => 'Urlaub'),
        1 => array('bildpfad' => 'arbeit.jpg', 'titel' => 'Arbeit')
    );
    
    // Daten durchlaufen und in XML-Form ausgeben
    echo '<bilder>';
    foreach ($daten as $zeile) {
      echo "<bild>";
        echo "<pfad>" . htmlspecialchars($zeile["bildpfad"]) . "</pfad>";
        echo "<titel>" . htmlspecialchars($zeile["titel"]) . "</titel>";
      echo "</bild>";
    }
    echo '</bilder>';
    ?>


    Ich habe noch nicht wirklich viel Erfahrung mit PHP und weiß nicht, wie ich die Daten aus der Datenbank als XML Dokument ausgeben kann. Kann mir jemand einen Tipp geben?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die Verbindung zur Datenbank hast du ja schon erfolgreich aufgebaut, fehlt also nur noch, die Daten tatsächlich auszulesen.

    Wie das geht steht hier: http://www.schattenbaum.net/php/anzeigen.php

    mfg
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Als Erstes: die Datenbankverbindung stimmt nicht.
    Der Host lautet mysql.lima-city.de und den Benutzer sowie Passwort und Datenbank musst du natürlch wissen (zu finden in der Verwaltung).

    Ansonsten: was verstehst du nicht... was ist die Fragestellung?
    Dein Code liest jedenfalls nicht aus einer Datenbank, er öffnet lediglich die Verbindung dorthin.
  5. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    hackyourlife schrieb:
    Als Erstes: die Datenbankverbindung stimmt nicht.
    Der Host lautet mysql.lima-city.de und den Benutzer sowie Passwort und Datenbank musst du natürlch wissen (zu finden in der Verwaltung).

    Ansonsten: was verstehst du nicht... was ist die Fragestellung?
    Dein Code liest jedenfalls nicht aus einer Datenbank, er öffnet lediglich die Verbindung dorthin.


    Ich weiß. Mein Problem besteht auch nicht darin eine Verbindung zur Datenbank aufzubauen, sondern die Daten in ein XML-Dokument zu schreiben.
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    my-easytools schrieb:
    Mein Problem besteht auch nicht darin eine Verbindung zur Datenbank aufzubauen, sondern die Daten in ein XML-Dokument zu schreiben.
    Du liest ganz normal deine Daten aus der Datenbank Reihe für Reihe aus und anstatt das irgendwie als HTML auszugeben gibst du eben XML aus...

    Weißt du wenigstens wie du aus der Datenbank die Daten ausliest, oder muss dir das auch noch erklärt werden?
  7. Hallo
    Du hast vor der Abfrage nicht die Datenbank ausgewählt, sondern nur mysql_open()

    und du machst gar kein mysql_query Aufruf (Result)

    also es fehlen 2 Wichtige Sachen:
    DB-Auswahl: mysql_select_db($dbName, $con);
    und Ergebnis-Schleife while ($result = mysql_query($sql) ) { ... mysql_fetch_array() ... }

    Hier mal der Code etwas angepasst:
    <?php 
    // ----------------- ENDE ----------------------- 
    
    // ------- Datei als XML im UTF-8 Zeichensatz festlegen
    header("Content-type: text/xml; charset=utf-8");
    
    // ------- Festlegen der Sammlung / Liste 
    $liste_id = 123;  // ---- Nr. oder ID der Sammlung 
    $liste_name = 'Name oder Titel der Sammlung"; 
    
    
    // ------- MySQL Config 
    $dbHost = "localhost";
    $dbUser = "user";
    $dbPassword = "xXxXxXx";
    $dbName = 'name';
     
    // ------- Verbindung zum MySQL-Server 
    $con = mysql_connect($dbHost, $dbUser, $dbPassword); 
    if (!$con) {  echo 'Keine Verbindung zum Datenbank Server'; exit; }
    
    // ------- Auswahl des Datenbank-Name 
    $sel = mysql_select_db($dbName, $con);
    if (!$sel ) {  echo 'Keine Auswahl der Datenbank möglich'; exit; }
    
    // ------- MySQL-Abfrage-Text 
    $sql_query = "Select * From table WHERE listid = '".$liste_id."' LIMIT 20";
    
    // ------- MySQL-Abfrage-Ergebnis 
    $sql_result = mysql_query($sql_query);
    if (!$sql_result) {  echo 'Fehler bei der Abfrage'. mysql_error(); exit; }
    
    // ------- Anzahl der Treffer im Ergebnis (Zeilen) 
    $anzahl = mysql_num_rows($sql_result); 
    
    // ------- MySQL-Ergebnis in Array ablegen 
    $daten = array(); 
    
      while($row = mysql_fetch_assoc($sql_result)) {  
           $daten[] = $row; 
      }
    
    // ------- Ausgabe der Daten als XML
    
    $ubr = "\n";  // ---- Zeilenumbruch 
    
    echo '<?xml version="1.0" encoding="UTF-8"?>'.$ubr
    
    echo '<bilder>'.$ubr; 
    
    echo '   <idnr>'.$liste_id.'</idnr>'.$ubr; 
    echo '   <name>'.$liste_name.'</name>'.$ubr; 
    echo '   <anzahl>'.$anzahl.'</anzahl>'.$ubr; 
    echo $ubr; 
    
    foreach ($daten as $zeile) {
        echo "  <bild>".$ubr; 
        echo "     <pfad>" . htmlspecialchars($zeile["bildpfad"]) . "</pfad>"".$ubr; 
        echo "     <titel>" . htmlspecialchars($zeile["titel"]) . "</titel>"".$ubr; 
        echo "  </bild>"".$ubr; 
    }
    
    echo '</bilder>'.$ubr; 
    echo $ubr; 
    
    mysql_close(); 
    // ----------------- ENDE ----------------------- 
    ?>



    also der Code von oben um Wichtiges ergänzt, wie DB-Select und Result-Schleife
    und noch paar kleine Ideen eingefügt.

    ohne mysql_select_db() und ohne mysql_query() konnte es ja nicht gehen :)
    ...

    Beitrag zuletzt geändert: 23.6.2012 20:54:32 von plugboard
  8. Autor dieses Themas

    my-easytools

    my-easytools hat kostenlosen Webspace.

    plugboard schrieb:
    Hallo
    Du hast vor der Abfrage nicht die Datenbank ausgewählt, sondern nur mysql_open()

    und du machst gar kein mysql_query Aufruf (Result)

    also es fehlen 2 Wichtige Sachen:
    DB-Auswahl: mysql_select_db($dbName, $con);
    und Ergebnis-Schleife while ($result = mysql_query($sql) ) { ... mysql_fetch_array() ... }

    Hier mal der Code etwas angepasst:
    <?php 
    // ----------------- ENDE ----------------------- 
    
    // ------- Datei als XML im UTF-8 Zeichensatz festlegen
    header("Content-type: text/xml; charset=utf-8");
    
    // ------- Festlegen der Sammlung / Liste 
    $liste_id = 123;  // ---- Nr. oder ID der Sammlung 
    $liste_name = 'Name oder Titel der Sammlung"; 
    
    
    // ------- MySQL Config 
    $dbHost = "localhost";
    $dbUser = "user";
    $dbPassword = "xXxXxXx";
    $dbName = 'name';
     
    // ------- Verbindung zum MySQL-Server 
    $con = mysql_connect($dbHost, $dbUser, $dbPassword); 
    if (!$con) {  echo 'Keine Verbindung zum Datenbank Server'; exit; }
    
    // ------- Auswahl des Datenbank-Name 
    $sel = mysql_select_db($dbName, $con);
    if (!$sel ) {  echo 'Keine Auswahl der Datenbank möglich'; exit; }
    
    // ------- MySQL-Abfrage-Text 
    $sql_query = "Select * From table WHERE listid = '".$liste_id."' LIMIT 20";
    
    // ------- MySQL-Abfrage-Ergebnis 
    $sql_result = mysql_query($sql_query);
    if (!$sql_result) {  echo 'Fehler bei der Abfrage'. mysql_error(); exit; }
    
    // ------- Anzahl der Treffer im Ergebnis (Zeilen) 
    $anzahl = mysql_num_rows($sql_result); 
    
    // ------- MySQL-Ergebnis in Array ablegen 
    $daten = array(); 
    
      while($row = mysql_fetch_assoc($sql_result)) {  
           $daten[] = $row; 
      }
    
    // ------- Ausgabe der Daten als XML
    
    $ubr = "\n";  // ---- Zeilenumbruch 
    
    echo '<?xml version="1.0" encoding="UTF-8"?>'.$ubr
    
    echo '<bilder>'.$ubr; 
    
    echo '   <idnr>'.$liste_id.'</idnr>'.$ubr; 
    echo '   <name>'.$liste_name.'</name>'.$ubr; 
    echo '   <anzahl>'.$anzahl.'</anzahl>'.$ubr; 
    echo $ubr; 
    
    foreach ($daten as $zeile) {
        echo "  <bild>".$ubr; 
        echo "     <pfad>" . htmlspecialchars($zeile["bildpfad"]) . "</pfad>"".$ubr; 
        echo "     <titel>" . htmlspecialchars($zeile["titel"]) . "</titel>"".$ubr; 
        echo "  </bild>"".$ubr; 
    }
    
    echo '</bilder>'.$ubr; 
    echo $ubr; 
    
    mysql_close(); 
    // ----------------- ENDE ----------------------- 
    ?>



    also der Code von oben um Wichtiges ergänzt, wie DB-Select und Result-Schleife
    und noch paar kleine Ideen eingefügt.

    ohne mysql_select_db() und ohne mysql_query() konnte es ja nicht gehen :)
    ...


    Danke. Ich hatte zwar auch schon eine Lösung gefunden, aber deine hat noch ein paar Verbesserungen.
  9. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Allerdings ist es unnötig die Daten zuerst in einem Array zwischenzuspeichern. Das verschwendet nur Speicherplatz und bringt keine Vorteile. Du könntest die Daten direkt in der Schleife ausgeben in der du die Daten aus der Datenbank holst.
    Wenn du eine große Tabelle hast wirst du sonst Fehler bekommen wegen zu wenig Arbeitsspeicher.
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!