Parsen mit php und jetzt?
Peter
- xml
Hallo zusammen,
ich möchte gerne XML Dokumente (RSS Feeds) parsen und die Strings zwischen den Tags in MySQL speichern. Ich habe die Sax Methode verwendet und das Parsen klappt mittlerweile.
Das Problem ist, dass ich es nur schaffe die kompletten News in eine DB Spalte zu packen, also mit <ITEM>, <LINK>, <DESCRIPTION> usw. Ich möchte es aber so haben, dass er <ITEM> in die Spalte Item packt, <LINK> in die Spalte Link packt. Pro News dann also ein Record mit verschiedenen Spalten.
Wie wäre euer Ansatz?
Ich bedanke mich schonmal :-)
Viele Grüße
Hallo Peter,
Das Problem ist, dass ich es nur schaffe die kompletten News in eine DB Spalte zu packen, also mit <ITEM>, <LINK>, <DESCRIPTION> usw. Ich möchte es aber so haben, dass er <ITEM> in die Spalte Item packt, <LINK> in die Spalte Link packt. Pro News dann also ein Record mit verschiedenen Spalten.
Wie wäre euer Ansatz?
eine für Deine Daten geeignete Tabellenstruktur verwenden und das entsprechende INSERT-Statement verwenden.
Freundliche Grüße
Vinzenz
eine für Deine Daten geeignete Tabellenstruktur verwenden und das entsprechende INSERT-Statement verwenden.
Das ist mein Ansatz. Mit der Variablen $ausgabe passt nicht. Allerdings habe ich es auch schon probiert, dass ich zb nur <Link> speichern wollte. Das müsste ja eigentlich klappen. Trotzdem kommt immer die komplette News.
require("mysql.connect.php");
function startElement($parser, $name, $element_attribute) {
global $ausgabe;
$name = strtolower($name);
switch ($name)
{
case "title": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','$ausgabe','','','')") or die ("fehlgeschlagen"); break;
case "link": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','','$ausgabe','','')") or die ("fehlgeschlagen"); break;
case "description": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','','$ausgabe','','')") or die ("fehlgeschlagen"); break;
}
}
function endElement($parser, $name) {
global $ausgabe;
$name = strtolower($name);
switch ($name)
{
case "title": $ausgabe; break;
case "link": $ausgabe; break;
case "description": $ausgabe; break;
}
}
function cdata($parser, $element_inhalt) {
global $ausgabe;
$ausgabe .= $element_inhalt;
}
Nur was mir so auf die Schnelle aufgefallen ist:
case "title": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','$ausgabe','','','')") or die ("fehlgeschlagen"); break;
Was Du da mit der Variablen $ausgabe treibst bringt normalerweise Pech.
Wo baust Du eigentlich die Verbindung zur Datenbank auf und exekutierst das zusammengebastelte SQL-Statement? Beschäftige Dich unbedingt zuerst mit den absoluten Grundlagen unter Fragestellung "Kriege ich einen Connect zur Datenbank hin?" und "Kann ich irgendein SQL-Statement erfolgreich exekutieren?". Jeweils auch die Fehlercodes auswerten.
case "title": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','$ausgabe','','','')") or die ("fehlgeschlagen"); break;
Wo baust Du eigentlich die Verbindung zur Datenbank auf und exekutierst das zusammengebastelte SQL-Statement?
Die Zeile hast du doch selbst zitiert!
Beschäftige Dich unbedingt zuerst mit den absoluten Grundlagen
Dito!
case "title": $ausgabe = mysql_query("INSERT INTO rss VALUES ('','$ausgabe','','','')") or die ("fehlgeschlagen"); break;
Wo baust Du eigentlich die Verbindung zur Datenbank auf und exekutierst das zusammengebastelte SQL-Statement?
Die Zeile hast du doch selbst zitiert!
Dann hat er ja alles richtig gemacht. LOL
Aber ich will nicht weiter in den Mann gehen, ist ja bald Weichnachten.
hcolhcsra!
Wo baust Du eigentlich die Verbindung zur Datenbank auf
Na hier, da ist alles hinterlegt
require("mysql.connect.php");
Wo baust Du eigentlich die Verbindung zur Datenbank auf
Na hier, da ist alles hinterlegt
require("mysql.connect.php");
Du hast also einen Connect unter Angabe des Servers ggf. des Ports und des Sicherheitskontextes? Gut.
Du kannst also SQL-Statements absenden und Daten empfangen? Gut.
Dann beschreib am besten noch einmal Dein Problem. (Bspw. unter Angabe des Datendesigns (Tabellen) und des tatsächlich abgesandten SQL-Statements und unter präziser Angabe oder Beschreibung der gewünschten Rückgabedaten.)
Moment, geht es hier vielleicht nicht um INSERTs und SQL sondern um die Bearbeitung eines XML-Dokuments?
Moment, geht es hier vielleicht nicht um INSERTs und SQL sondern um die Bearbeitung eines XML-Dokuments?
Das Problem ist (war), dass er trotz parsen nie die richgen Strings in die Tabelle gestopft hat, sondern immer nur den ganzen News.
Aber mitllerweile verzichte ich ganz aufs parsen und arbeite mit RegExp. Sorry wenn ich mich schlecht in meinem ersten Posting ausgedrückt habe und danke an die Antworter.