database --> Php --> XML

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ttdr black

ttdr black

30/05/2010 17:23:08
Quote Anchor link
Ik loop vast op een php script dat gegevens uit een database haalt en die wegschrijft naar xml.

Het probleem is namelijk dat dit het zo word weg geschreven

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="utf-8"?>

<markers>
<name title="adres">
<Naam>Maastricht</naam>
<type>gemeente</type>

Dit moet als volgt worden weggeschreven.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="utf-8"?>

<markers>
<marker address="Louis Jansenplein 1, Groningen" label="dit is een huis">
<infowindow><![CDATA[<b>Dit is een huis</b><br/>Lees meer over <a href="http://www.eenwebsite.nl/" target="new">dit is een link</a>]]></infowindow>
</marker>

Dit is het script wat gegevens uit de database haalt en naar een xml file schrijft

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
// STORE DATABASE VARIABLES
$hostname_cnConnection = "localhost";
$database_cnConnection = "go";
$username_cnConnection = "root";
$password_cnConnection = "**";
$cnConnection = mysql_pconnect($hostname_cnConnection, $username_cnConnection, $password_cnConnection);
// CONNECT TO DATABASE
mysql_select_db($database_cnConnection, $cnConnection);
$query_rsRecordset = "SELECT * FROM markers";
$rsRecordset = mysql_query($query_rsRecordset, $cnConnection) or die(mysql_error());
$row_rsRecordset = mysql_fetch_assoc($rsRecordset);
$totalRows_rsRecordset = mysql_num_rows($rsRecordset);

// START STORING DATA IN VARIABLE TO PLACE IN XML FILE
if($totalRows_rsRecordset > 0) {

$strXML = "<?xml version=\"1.0\"?>\n";
// STORE NAME OF TABLE
$strXML = $strXML . "<markers>\n";
// STORE FIELD AND FIELD DATA IN ONE HIARCHY, REPEAT FOR MULTIPLE FIELDS
$strXML = $strXML . "   <name title=\"PrimaryID\">\n";
do {

$strXML = $strXML . "      <Naam>" . $row_rsRecordset['name'] . "</naam>\n";
$strXML = $strXML . "      <type>" . $row_rsRecordset['type'] . "</type>\n";


}
while ($row_rsRecordset = mysql_fetch_assoc($rsRecordset));
$strXML = $strXML . "</markers>";
$strXML = $strXML . "   </name>\n";
// OPEN FILE, WRITE TO FILE, CLOSE FILE, CLOSE RECORDSET
$XMLFile = fopen("myxmlfile.xml", "w");
fwrite($XMLFile, $strXML);
fclose($XMLFile);

}

mysql_free_result($rsRecordset);
?>


Weet iemand iets...? ik krijg het maar niet voor elkaar!
Gewijzigd op 30/05/2010 17:35:29 door Ttdr black
 
PHP hulp

PHP hulp

18/12/2024 04:46:13
 
Jelmer -

Jelmer -

30/05/2010 17:52:16
Quote Anchor link
De manier waarop het nu wordt weggeschreven bevat hele andere gegevens dan de manier waarop je het wilt hebben. Heb je die velden wel in de database?

Daarnaast kan je in plaats van 'echo' en handgemaakte XML misschien beter DOM, of in dit geval nog beter, XMLWriter gebruiken. Voordeel daarbij is dat het bijna geen geheugen kost om een enorm aantal markers naar een bestand te schrijven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php

// even voor testen
$db_markers = array(
    array(
        'address' => 'Louis Jansenplein 1, Groningen',
        'label' => 'Dit is een huis',
        'info' => '<b>Dit is een huis</b><br/>Lees meer over <a href="http://www.eenwebsite.nl/" target="new">dit is een link</a>'
    )
);


$feed = new XMLWriter();
// verander dit naar 'myxmlfile.xml' voor schrijven naar bestand
// nu doet hij met php://output hetzelfde als 'echo'.

$feed->openURI('php://output');
$feed->setIndent(true);

$feed->startDocument('1.0', 'utf-8');

$feed->startElement('markers');

// dit wordt dan while($db_marker = mysql_fetch_assoc())
foreach($db_markers as $db_marker) {
    $feed->startElement('marker');
    $feed->writeAttribute('address', $db_marker['address']);
    $feed->writeAttribute('label', $db_marker['label']);
    $feed->writeCData($db_marker['info']);
    $feed->endElement();
}


$feed->endElement();

$feed->endDocument();
?>
 

30/05/2010 17:52:27
Quote Anchor link
Gebruik liever dom of simplexml, ga niet zelf klooien met xml tags.
 
Ttdr black

ttdr black

30/05/2010 18:16:43
Quote Anchor link
Ja die velden heb ik wel die kan ik zo veranderen dat is het punt niet.
Maar hoe krijg ik die cdata erin. en dat die met een nieuw adres begint inplaats van alle tabellen opsommen. want dat is wat het script nu doet.

het moet er dus zo uitzien want zo werkt het met de API
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?xml version="1.0" encoding="utf-8"?>

<markers>
<marker address="Louis Jansenplein 1, Groningen" label="Gemeente Cuijk">
<infowindow><![CDATA[<b>Gemeente Cuijck</b><br/>Lees meer over <a href="http://www.cuijk.nl/" target="new">Gemeent Cuijk</a>]]></infowindow>
</marker>
<marker address="zeewinde 9, Groningen" label="Gemeenteoplossingen">
<infowindow><![CDATA[<b>Gemeenteoplossingen</b><br/>Lees meer over <a href="http://www.gemeenteoplossingen.nl/" target="new">Gemeenteoplossingen</a> ]]></infowindow>
</marker>
<marker address="Mosae Forum 10, Maastricht" label="Gemeente Maastricht">
<infowindow><![CDATA[<b>Gemeente Maastricht</b><br/>Lees meer over <a href="http://www.maastricht.nl/" target="new">Gemeent Maastricht</a>]]></infowindow>
</marker>

</markers>

het is namelijk een script voor google maps api.!
waar een cms moet voor komen. met een mysql database. die automatisch de gegevens update op de site. !

maargoed.

simplexml is denk ik niet een optie. vanwege de slechte omgang met Cdata.
 
Jelmer -

Jelmer -

30/05/2010 18:50:13
Quote Anchor link
Zie mijn voorbeeld met XMLWriter, die doet het met writeCData().
 
Ttdr black

ttdr black

01/06/2010 09:24:06
Quote Anchor link
Ik ga er vandaag mee bezig.
was even een tijdje weg.
 
Ttdr black

ttdr black

02/06/2010 11:32:51
Quote Anchor link
Jelmer rrrr op 30/05/2010 18:50:13:
Zie mijn voorbeeld met XMLWriter, die doet het met writeCData().


Jelmer ik krijg een fout bij het gedeelte met $feed = new XMLWriter();
// verander dit naar 'myxmlfile.xml' voor schrijven naar bestand
ik snap niet helemaal waar ik dan 'myxmlfile.xml moet zetten.? ik kijg elke keer een fout.
 
Jelmer -

Jelmer -

02/06/2010 12:54:08
Quote Anchor link
Die notitie was voor de regel code eronder. new XMLWriter() krijgt inderdaad geen argumenten mee, maar openURI wel. Nu opent hij een speciale PHP stream, maar je kan daar ook gewoon een bestandsnaam invullen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$feed
= new XMLWriter();
$feed->openURI('myxmlfile.xml');
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.