sid61
Mitglied
Hi,
Jeden Tag was neues dazu leren ;-)
Heute bastel ich an einer Funktion, die mir aus einer Datenbank abfrage eine xml Datei generieren soll, die ich später von anderen Anwendungen einbinden kann.
Jetzt bin ich schon mal soweit gekommen, das er mir eine Datei schreibt, aber es gibt einige Handycaps.
Nachfolgend habe ich mal den Code eingesetzt, zu besseren Verständnis.
Folgendes Problem tritt dabei auf...
in dieser Zeile - $xml .= "<marker lat={$row{'lat'}} lng{$row{'lon'}} html={$row{'type'}}{$row{'id'}} label={$row{'name'}} />\n";
muss jeder Wert in Anführungszeichen gebettet sein - bekomme ich aber irgendwie nicht hin.
Beispiel der jetzt erzeugten Ausgabe - falsch:
<markers>
<marker lat=52.418844 lng=13.803177 html=11 label=Bootsschule Werlsee />
<marker lat=52.476341 lng=13.85303 html=22 label=Sink & SOS GmbH & Co.KG />
</markers>
Sie müßte aber so aussehen:
<markers>
<marker lat="52.418844" lng="13.803177" html="11" label="Bootsschule Werlsee" />
<marker lat="52.476341" lng="13.85303" html="22" label="Sink & SOS GmbH & Co.KG" />
</markers>
Als ich das ganze mal händisch korrigiert hatte - um einfach nur zu sehen, ob es dann geht, kam vom Browser die Ernüchterung.
Es müssen vor der Ausgabe alle Zeichen, bzw. Sonderzeichen umgewandelt werden.
Das bdeutet eben $§&*üäöüÜÖÄß u.s.w.
Dehalb habe ich jetzt genau zwei Fragen, mit denen ich das erfolgreich lösen kann.
1.) Wie muss diese Zeile abgewandelt werden,
in dieser Zeile - $xml .= "<marker lat={$row{'lat'}} lng{$row{'lon'}} html={$row{'type'}}{$row{'id'}} label={$row{'name'}} />\n"; damit ich zusätzlich jeden Wert beginnend mit {$row{'xxx'}} in Anführungszeichen ausgeben kann ?
2.) Wie kann ich es realisieren, das die Datenbankausgabe in jedem Schleifendurchgang nachgeschaut wird, ob Sonderzeichen (außer "" und Leerzeichen) enthalten sind, die XML gemäß den erlaubten Zeichen umwandelt ?
Ich würde mich sehr freuen, wenn mir einer dazu was sagen könnte.
LG
Sid
Jeden Tag was neues dazu leren ;-)
Heute bastel ich an einer Funktion, die mir aus einer Datenbank abfrage eine xml Datei generieren soll, die ich später von anderen Anwendungen einbinden kann.
Jetzt bin ich schon mal soweit gekommen, das er mir eine Datei schreibt, aber es gibt einige Handycaps.
Nachfolgend habe ich mal den Code eingesetzt, zu besseren Verständnis.
Code:
<br><br><center><b>!!Fertsch!!</b></center>
<?php
include ("config.php");
$xml .= "<markers>\n";
mysql_connect($host,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sql = "select lon, lat, name, type, id from jos_hp_properties";
$result = mysql_query($sql) or DBError("LINE: " .__LINE__. " $sql");
$nRows = mysql_num_rows($result);
if ($nRows) {
while ($row = mysql_fetch_assoc($result)) {
$row{'name'} = addslashes($row{'name'});
$row{'name'} = str_replace(';',',',$row{'name'});
$row{'type'}= $row{'type'};
$row{'id'}= $row{'id'};
$xml .= "<marker lat={$row{'lat'}} lng{$row{'lon'}} html={$row{'type'}}{$row{'id'}} label={$row{'name'}} />\n";
}
}
$xml .= '</markers>';
$handle = fopen("datei.xml","w");
fwrite($handle, $xml);
fclose($handle);
function assertTable() {
}
function DBError($sql){
print "Error: \n" . mysql_error() . "\n";
print "<hr>\n";
print "$sql\n";
print "<hr>\n";
exit;
}
?>
Folgendes Problem tritt dabei auf...
in dieser Zeile - $xml .= "<marker lat={$row{'lat'}} lng{$row{'lon'}} html={$row{'type'}}{$row{'id'}} label={$row{'name'}} />\n";
muss jeder Wert in Anführungszeichen gebettet sein - bekomme ich aber irgendwie nicht hin.
Beispiel der jetzt erzeugten Ausgabe - falsch:
<markers>
<marker lat=52.418844 lng=13.803177 html=11 label=Bootsschule Werlsee />
<marker lat=52.476341 lng=13.85303 html=22 label=Sink & SOS GmbH & Co.KG />
</markers>
Sie müßte aber so aussehen:
<markers>
<marker lat="52.418844" lng="13.803177" html="11" label="Bootsschule Werlsee" />
<marker lat="52.476341" lng="13.85303" html="22" label="Sink & SOS GmbH & Co.KG" />
</markers>
Als ich das ganze mal händisch korrigiert hatte - um einfach nur zu sehen, ob es dann geht, kam vom Browser die Ernüchterung.
Es müssen vor der Ausgabe alle Zeichen, bzw. Sonderzeichen umgewandelt werden.
Das bdeutet eben $§&*üäöüÜÖÄß u.s.w.
Dehalb habe ich jetzt genau zwei Fragen, mit denen ich das erfolgreich lösen kann.
1.) Wie muss diese Zeile abgewandelt werden,
in dieser Zeile - $xml .= "<marker lat={$row{'lat'}} lng{$row{'lon'}} html={$row{'type'}}{$row{'id'}} label={$row{'name'}} />\n"; damit ich zusätzlich jeden Wert beginnend mit {$row{'xxx'}} in Anführungszeichen ausgeben kann ?
2.) Wie kann ich es realisieren, das die Datenbankausgabe in jedem Schleifendurchgang nachgeschaut wird, ob Sonderzeichen (außer "" und Leerzeichen) enthalten sind, die XML gemäß den erlaubten Zeichen umwandelt ?
Ich würde mich sehr freuen, wenn mir einer dazu was sagen könnte.
LG
Sid