Avatar billede askovdk Nybegynder
19. januar 2011 - 11:07 Der er 6 kommentarer og
1 løsning

XML til PHP

Hvordan får jeg dette lavet om til PHP så det bliver skrevet ud i en tabel så jeg får <history> værdierne listet i rækker ?

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <merchantemail>test1@pil.dk</merchantemail>
    <history>
        <msgtype>authorize</msgtype>
        <amount>234</amount>
        <state>1</state>
        <time>080212164346</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
    <history>
        <msgtype>capture</msgtype>
        <amount>234</amount>
        <state>3</state>
        <time>080212164347</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
    <history>
        <msgtype>refund</msgtype>
        <amount>234</amount>
        <state>7</state>
        <time>080212164347</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
</response>
Avatar billede repox Seniormester
19. januar 2011 - 11:15 #1
Med SimpleXML:
<?php

$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<response>
    <merchantemail>test1@pil.dk</merchantemail>
    <history>
        <msgtype>authorize</msgtype>
        <amount>234</amount>
        <state>1</state>
        <time>080212164346</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
    <history>
        <msgtype>capture</msgtype>
        <amount>234</amount>
        <state>3</state>
        <time>080212164347</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
    <history>
        <msgtype>refund</msgtype>
        <amount>234</amount>
        <state>7</state>
        <time>080212164347</time>
        <qpstat>000</qpstat>
        <chstat>000</chstat>
    </history>
</response> ";

$xml = new SimpleXMLElement($xml);
foreach($xml->history as $history)
{
    echo $history->msgtype;
}

?>


Du kan eventuelt læse min artikel om SimpleXML på http://err0r.dk/articles/read/simplexml-og-dine-xml-data
Avatar billede askovdk Nybegynder
19. januar 2011 - 12:04 #2
authorize  234 osv...
capture  234 osv...
refund 234 osv...

Jeg vil gerne have skrevet det ud sådan, kan man ikke det ?
Avatar billede repox Seniormester
19. januar 2011 - 12:06 #3
Jo, da - skal jeg skrive HTML for dig ind i PHP'en da? Det var jo bare et minimalistisk eksempel på hvordan du kunne tilgå history elementets under-elementer...
Avatar billede askovdk Nybegynder
19. januar 2011 - 12:11 #4
Jeg tænker på sådan her:

<tr>
    <td> msgtype </td><td> amount </td><td> state </td.....osv
</tr>

Jeg er bare ikke helt med på hvordan jeg får det udskrevet sådan ?
Avatar billede repox Seniormester
19. januar 2011 - 12:21 #5
Det er temmelig basic stuff det her - jeg er begyndt at undre mig over hvad det er du laver? Du forsøger at lave nogle API kald til Quickpay og gennemfører annulleringer og captures af betalinger - men basal PHP og HTML driller dig?

Anyhu...
  ...
  $xml = new SimpleXMLElement($xml);
  foreach($xml->history as $history):
  ?>

  <tr>
    <td><?php echo $history->msgtype; ?></td>
    <td><?php echo $history->amount; ?></td>
    <td><?php echo $history->state; ?></td>
    <td><?php echo $history->time; ?></td>
    <td><?php echo $history->qpstat; ?></td>
    <td><?php echo $history->chstat; ?></td>
  </tr>
     
  <?php endforeach; ?>
Avatar billede askovdk Nybegynder
19. januar 2011 - 12:30 #6
Ja det her XML driller mig :-) men hvis jeg ikke spørger bliver jeg jo ikke klogere :-) Men nu virker det, igen MANGE TAK for hjælpen, smid svar!
Avatar billede repox Seniormester
19. januar 2011 - 12:36 #7
Det fik du her.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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