Announcement

Collapse
No announcement yet.

XML Erstellen aus SQL Abfrage (PHP)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XML Erstellen aus SQL Abfrage (PHP)

    Hallo Zusammen

    Ich möchte aus einer SQL-Abfrage (PHP) eine XML Datei erstellen und diese dann auch als Datei auf dem WebServer speichern.
    Folgendes habe ich bereits gemacht.
    -----
    <?php
    header ("Content-Type:text/xml");
    $xml = new DOMDocument('1.0', 'utf-8');
    $xwert = $xml->createElement("url");
    $xml->appendChild($xwert);


    $pdo = new PDO('mysql:host=Server;dbname=db', 'benutzer', 'passwort');
    $sql = "SELECT * FROM Tabelle WHERE (type = 'region' and status like 'aktiv')";
    foreach ($pdo->query($sql) as $row1)
    {
    $pn ="Landesname".$row1['name'];

    $lname= $xml->createElement("loc,$pn);
    $xwert->appendChild($lname);


    echo $xml->saveXML();
    ?>
    -----

    Aber es speichert keinen Wert ab.
    Es kommt die Meldung:
    Fatal error: Uncaught Error: Call to a member function saveXML() "

    Was habe ich falsch gemacht?

  • #2
    Wie auch
    https://www.php.net/manual/de/domdocument.savexml.php
    zu
    https://www.php.net/manual/de/domdocument.save.php
    Christian

    Comment


    • #3
      Ich habe mein Code umgeschrieben er funktioniert. Daten werden auch in die xml gespeichert.
      Sobald ich diese Zeile "$sm .=$sm.$sms;" schreibe, bekomme ich folgende Meldung: "Schwerwiegender Fehler: Zulässige Speichergröße von 671088640 Byte erschöpft (versucht, 421553080 Byte zuzuweisen)". Es sind aktuell sind es etwa 15 Datensätze, Tendenz steigend. Wie kann ich dies noch beheben.

      <?php
      $pdo = new PDO('mysql:host=server;dbname=datenbank', benutzer', 'passwort');
      $sql = "SELECT * FROM Tabelle WHERE (type = 'region' and status like 'aktiv')";
      $fh = fopen("gruppe.xml", "w");
      $sm = '<?xml version="1.0" encoding="UTF-8"?>\n';
      $sm .= '<bereich>\n';
      foreach ($pdo->query($sql) as $row1)
      {
      $sms ="<gruppe>";
      $sms .="<Name>".$row1['name']."</Name>";
      $sms ."<Datum>".$row1['datum']."</Datum>";
      $sms .='</gruppe>';
      $sm .=$sm.$sms;
      }
      $sm .=$sm."</bereich>";
      fwrite($fh, $sm);
      fclose($fh);
      ?>

      Comment


      • #4
        $sm .=$sms;

        $sm .="</bereich>";
        Christian

        Comment


        • #5
          Jetzt gehts, danke.
          in der xml, schreibt er alles als Endlos Text, macht keine Zeilenschaltung nach jedem Durchgang der schleife. Wie kann man in die xml Zeilenschaltung bringen.
          Bei PHP ist es <br>

          Comment


          • #6
            In dem du an den gewünschten Stellen einen Zeilenumbruch einfügst
            https://de.wikipedia.org/wiki/Zeilenumbruch

            bsp. $sms .="</gruppe>\r\n";
            Beachte den Unterschied Anführungszeichen und Hochkomma
            oder
            $sms .='</gruppe>'."\r\n";
            Christian

            Comment


            • #7
              Ich konnte es wie folgt lösen
              <?phhp
              $pdo = new PDO('mysql:host=Server;dbname=db', 'benutzer', 'passwort');
              $sql = "SELECT * FROM Tabelle WHERE (type = 'region' and status like 'aktiv')";
              $fh = fopen("adresse.xml", "w");
              foreach ($pdo->query($sql) as $row1)
              $sm = '<Adresse>\n';
              foreach ($pdo->query($sql) as $row1)
              {
              $sms ="\r\n<ort>";
              $sms .="<id>".$row1['nr]."</lid>";
              $sms .="<nachname>".$row1['nname']."</nachname>\r\n";
              $sms .='</ort>';
              $sm .=$sms;
              }
              $sm .="</Adresse>";
              fwrite($fh, $sm);
              fclose($fh);
              ?>

              Comment

              Working...
              X