[PHP/Oracle 9] Exporteren naar XML

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een project om Oracle 9i query's te exporteren naar XML-bestanden voor offline-gebruik. Allemaal leuk en aardig, maar ik kan nergens een simpel voorbeeldje vinden die dat realiseert.

Zijn hier geen standaard oplossingen voor die dit doen? Het XML-bestand moet de volgende opmaak krijgen:

code:
1
2
3
4
5
6
7
8
9
10
<table name='table_name'>
  <row 01>
    <firstname>voornaam1</firstname>
    <lastname>achternaam1</firstname>
  </row>
  <row 02>
    <firstname>voornaam2</firstname>
    <lastname>achternaam2</firstname>
  </row>
</table>

Het is een eis dat het in PHP gebeurt.

Acties:
  • 0 Henk 'm!

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Dat stukje wat je daar post is niet echt goeie XML. Maar je kunt toch gewoon in PHP je query uitvoeren en dan voor elke rij zo'n blokje uitprinten en het resultaat opslaan als XML? Is bijna hetzelfde als het printen als een HTML tabel.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Klopt, daar zat ik al aan te denken, maar het probleem is dat <firstname> enzo kunnen verschillen. Het moet een functie worden voor meerdere query's. En das lastig.

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Ik begrijp niet volledig wat je bedoelt..maar ik bak mijn xml bestanden ook met PHP.

ik doe het zo:
PHP:
1
2
3
4
5
6
7
8
9
10
11
//Filename
$filename = "test.xml";
$fp = fopen("export/$filename","a");
 //XML header
fputs($fp,"<?xml version=\"1.0\"?>\n");
//Query
$result = mysql_query("SELECT * FORM table");
$row = mysql_fetch_array($result);
fputs($fp,"<catalogusnaam><catalogus onderdeel=\"$row[specname]\"><binnenwerk>\n");

//enzovoorts

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Klopt, daar zat ik al aan te denken, maar het probleem is dat <firstname> enzo kunnen verschillen. Het moet een functie worden voor meerdere query's. En das lastig
dit kun je toch ook gewoon variabel maken?

Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17-09 21:27

pistole

Frutter

Je kan vast wel via php de kolomnamen opvragen?

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • Bigs
  • Registratie: Mei 2000
  • Niet online
Verwijderd schreef op 25 maart 2003 @ 15:27:
Klopt, daar zat ik al aan te denken, maar het probleem is dat <firstname> enzo kunnen verschillen. Het moet een functie worden voor meerdere query's. En das lastig.
Je kunt gewoon de namen van de velden opvragen in PHP hoor.. ik weet zo even niet hoe, maar ik heb wel ooit een universele functie geschreven om in een keer een hele tabel weer te geven.

XML-technisch kun je het oplossen met <field name="voornaam">data</field>.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
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
40
41
42
43
44
45
46
<?php

$username   =   "jep";
$schema =   "jap";
$password   =   "jup";
    
$query  =   "SELECT first_name,last_name from persons";


$handle = ora_plogon("$username@$schema", "$password")or die("Cannot connect to database.");
$cursor = ora_open($handle);

ora_parse($cursor, $query); 
ora_exec($cursor);
$numcols = ora_numcols($cursor);

    // Handmatig berekenen hoeveel rows de cursor bevat
    $numrows = 0;
    while(ora_fetch($cursor) == 1){ $numrows++; }

    for($ii=0; $ii<$numrows; $ii++) { // PER REGEL
        echo("&lt;row $ii&gt;<br/>");

        for($rr=0; $rr<$numcols; $rr++) {


            echo("&lt;".Ora_ColumnName($cursor,$rr)."&gt;");
            for($jj=0; $jj<$numcols; $jj++) {

                // vullen van data per cell


                // vullen van data
            
            }
            echo("&lt;/".Ora_ColumnName($cursor,$rr)."&gt;");



        }
        
        
        echo("<br/>&lt;/row&gt;<br/>");
    }
    ora_close($cursor);
?>

Zover ben ik nu, maar nu wil ik dus de data fetchen per colum/regel. Hoe werkt dit nu? Moet dit eigenlijk wel weer in een apart loopje?

[ Voor 13% gewijzigd door Verwijderd op 25-03-2003 16:51 ]

Pagina: 1