Avatar billede warberg Juniormester
25. maj 2009 - 14:36 Der er 12 kommentarer og
1 løsning

Fra mysql til xml

Dette er sikker ret simpelt, men mangler et skub i rette retning..

$r = mysql_query("SELECT FROM player")

Hvordan får jeg fx. $r[navn], $r[land] lagt et et XML-dokument?
Avatar billede mrgumble Nybegynder
25. maj 2009 - 14:48 #1
Har du en idé om, hvordan XML-dokumentet ser ud? Altså, hvad er strukturen?
Avatar billede TrekzRapper Nybegynder
25. maj 2009 - 14:49 #2
Sådan her :)

<?php

header("Content-type: text/xml");

$host = "hosten";
$user = "brugernavn";
$pass = "password";
$database = "databasenavn";

$forbind = mysql_connect($host, $user, $pass) or die("Kunne ikke forbinde.");
mysql_select_db($database, $forbind) or die("Kunne ikke finde databasen.");

$query = "SELECT * FROM player ORDER BY id DESC";
$resultat = mysql_query($query, $forbind) or die("Kunne ikke finde de nødvendige data.");

$xml_output = "<?xml version=\"1.0\"?>\n";
$xml_output .= "<SpillerInfo>\n";

for($x = 0 ; $x < mysql_num_rows($resultat) ; $x++){
    $row = mysql_fetch_assoc($resultat);
    $xml_output .= "\t<Spiller>\n";
    $xml_output .= "\t\t<Dato>" . $row['dato'] . "</Dato>\n";
        $row['navn'] = str_replace("&", "&", $row['navn']);
        $row['navn'] = str_replace("<", "<", $row['navn']);
        $row['navn'] = str_replace(">", "&gt;", $row['text']);
        $row['navn'] = str_replace("\"", "&quot;", $row['navn']);
    $xml_output .= "\t\t<Spillernavn>" . $row['navn'] . "</Spillernavn>\n";
        $row['land'] = str_replace("&", "&", $row['land']);
        $row['land'] = str_replace("<", "<", $row['land']);
        $row['land'] = str_replace(">", "&gt;", $row['land']);
        $row['land'] = str_replace("\"", "&quot;", $row['land']);
    $xml_output .= "\t\t<SpillerLand>" . $row['land'] . "</SpillerLand>\n";
    $xml_output .= "\t</Spiller>\n";
}

$xml_output .= "</SpillerInfo>";

echo $xml_output;

?>


-Hilsen TrekzRapper
Avatar billede mrgumble Nybegynder
25. maj 2009 - 14:54 #3
Til TrekzRappers kode, kan man overveje at anvende php's HTMLentites funktion (http://dk2.php.net/htmlentities).
Derudover er der visse problemer ved brug af & i XML-dokumenter, se blot på http://www.google.dk/search?q=xml+ampersand

Af hvad jeg kan se, burde der ikke være noget galt i TrekzRappers kode. Jeg forsøgte bare med en tilgangsvinkel, hvor warberg fik lov til at lære undervejs. ;o)
Avatar billede mrgumble Nybegynder
25. maj 2009 - 15:00 #4
Woups. Til TrekzRappers kode, kan man overveje at anvende HTMLentities i stedet for alle str_replace funktionerne. Bare hvis nogen skulle være i tvivl. :)
Avatar billede TrekzRapper Nybegynder
25. maj 2009 - 15:01 #5
Helt klart. Og tak for reminderen,. Men som du kan se, spytter den det ikke ud i et XML dokument, men direkte i browseren fra PHP. Hvis jeg ville smide den i et XML dokument ville jeg smide "&" væk.

Joo, htmlEntites er sgu fin nok, men som altid kan jeg bedst lide og lave det selv :P
Avatar billede warberg Juniormester
25. maj 2009 - 15:22 #6
Wow.... det gik stærkt :-)

Vi snakker om et helt nyt xml-dok, så struktur er fra start...

Jeg kan godt se idéen i opbygningen.
Jeg får dog fejl på output: XML-siden kan ikke vises
http://www.hvemvandt.dk/test.xml
Avatar billede arne_v Ekspert
25. maj 2009 - 22:34 #7
Man kunne overveje fremfor at opbygge XML som ren streng at opbygge det med noget som faktisk kender XML.

Man kan bruge både DOMDocument og XMLWriter.

http://www.eksperten.dk/guide/1263 har nogle simple eksempler (søg på "create" i guiden).
Avatar billede warberg Juniormester
25. maj 2009 - 23:32 #8
arne_v - det fatter jeg minus af :-)

jeg bøvler med fejl på $xml_output = "<?xml version=\"1.0\"?>\n";
Avatar billede TrekzRapper Nybegynder
26. maj 2009 - 01:28 #9
Warberg, dit problem er du prøver at smide PHP kode ud i et XML dokument. Koden skal gemmes som test.php
Avatar billede warberg Juniormester
26. maj 2009 - 10:38 #10
Ja ok, det gi'r jo meget go' mening.
Men når der gemmes som php, hvor kommer xml-dokumentet så fra?
Avatar billede TrekzRapper Nybegynder
26. maj 2009 - 16:30 #11
det mit script gør, er at spytte XML koden ud i PHP dokumentet, så det kan kopires, du kunne Evt. få PHP til at oprette et XML dokument som smider stringen ud.
Avatar billede warberg Juniormester
26. maj 2009 - 17:45 #12
Ok, jeg takker for hjælpen, smid nogle svar, så fordeler jeg point.
Avatar billede TrekzRapper Nybegynder
26. maj 2009 - 17:59 #13
yup :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester