Gå til innhold

Fra xml til SQL gjennom PHP


Anbefalte innlegg

Ok,her har jeg en liten nøtt. Jeg har et Android program (java) på den ene siden som generer en xml fil som den laster opp til web gjennom HTTP POST og et .php script. Jeg ønsker dog at data som ligger i xml-filen skal legges inn i en database men jeg har liten erfaring med php og aner ikke helt hvordan jeg skal gå frem. Jeg tror dog det er ganske enkelt.

 

Her er eksempel på xml fil.

 

 

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<root>
 <ushout_message />
 <data source="bf882ed25e322d48" reply_to="0" />
 <message>Shout out to the world</message>
</root>

 

Jeg ønsker da et .php script som tar i mot denne xml filen og putter data inn i følgende databastabell:

 

 

`id` INT( 6 ) NOT NULL ,
`source` INT( 20 ) NOT NULL ,
`reply` INT( 20 ) NOT NULL ,
`message` VARCHAR(200) NOT NULL , 
PRIMARY KEY ( `id` )

 

Ønsker da at id skal bli generert automatisk (kan forsåvidt bruke auto-increment)

 

source = data source attributten i xml filen

reply = reply_to i xml filen

message = message i xml filen.

 

Så da lurer jeg vel egentlig på om noen kan hjelpe meg eventuelt peke meg i riktig retning

Lenke til kommentar
Videoannonse
Annonse

Sånn ca fremgangsmåte:

 

$xml=simplexml_load_file(xmlfil);

//errorsjekk $xml'en med file_exists(), is_readable() og ===FALSE her

foreach($xml->channel->item as $property=>$value)

{

echo "<br>data source: ".$value->date["source"];

echo "<br>message: ".$value->message;

}

 

Bruk var_dump($xml); eller echo "<pre>"; print_r($xml); echo "</pre>; for å sjekke array'en rett etter simplexml_load_file();

Lenke til kommentar
<?php

// no.php.net/pdo
$connection = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// no.php.net/simplexml
$xml = simplexml_load_file('shout.xml');
$shout = $xml->root;

$statement = $connection->prepare("INSERT INTO shouts (source, reply, message) VALUES(:source, :reply, :message)");
$statement->execute(array(
':source'  => (string) $shout->data['source'],
':reply'   => (string) $shout->data['reply_to'],
':message' => (string) $shout->message
));

echo $connection->lastInsertId, 'was inserted into the database.';

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...