Gå til innhold

Sortere og formatere data fra XML-fil vha. PHP 4


Anbefalte innlegg

Hei!

 

Jeg har en XML-fil som blir gjevnlig oppdatert. Den er på formen:

<tabell>
  <deltaker>
     <navn>navn 1</navn>
     <poeng>100</poeng>
  </deltaker>
  <deltaker>
     <navn>navn 2</navn>
     <poeng>200</poeng>
  </deltaker>
  <deltaker>
     <navn>navn 3</navn>
     <poeng>150</poeng>
  </deltaker>
</tabell>

... og jeg kan ikke endre filen (legge til stylesheet eller lignende) så all behandling for presentasjon må gjøres online.

 

Jeg vil sortere etter <poeng>, og deretter formatere teksten slik jeg vil ha den. Det jeg vil ha ut er en liste á la dette:

Navn 2 - 200 poeng

Navn 3 - 150 poeng

Navn 1 - 100 poeng

 

Hva må gjøres for å oppnå dette? Jeg har ikke peiling på PHP. Det skal nevnes at spørsmålet også er stillt her (og fikk noen forslag som desverre ikke fungerte), men jeg tenkte at jeg kanskje burde spørre hos PHP-guruene også. :)

 

På forhånd takk for hjelpen! :)

Lenke til kommentar
Videoannonse
Annonse

<?php

 

 

foreach(file("xml.xml") as $value)

{

if(strpos($value,"tabell")){continue;}

elseif(strpos($value,"deltaker")){continue;}

elseif(strpos($value,"<navn>")){$type = "navn";}

elseif(strpos($value,"<poeng>")){$type = "poeng";}

 

if($type == "navn")

{

$navn = str_replace("<navn>","",$value);

$navn = str_replace("</navn>","",$navn);

}

else

{

$poeng = str_replace("<poeng>","",$value);

$poeng = str_replace("</poeng>","",$poeng);

}

 

if($type == "poeng")

{

$array[$navn] = $poeng;

}

 

 

}

 

print_r($array);

?>

 

 

En liten funksjon som iallefall legger $array["navn på personen"] = $antall_poeng;

Lenke til kommentar
En liten funksjon som iallefall legger $array["navn på personen"] = $antall_poeng;

5121446[/snapback]

Success! Tusen hjertelig takk! :D

 

Array ( [ navn 1 ] => 100 [ navn 2 ] => 200 [ navn 3 ] => 150 )

 

Nå må jeg bare finne en funksjon som sorterer etter poeng og skriver den med høyest poeng øverst på en liste. Noen idéer her?

 

Jeg tror absolutt jeg må lære meg litt mer PHP... :)

 

 

EDIT:

Success! Igjen!

 

arsort($array);
foreach ($array as $navn => $poeng) {
echo "$navn - $poeng<br />\r\n";
}

 

gir

 

navn 2 - 200

navn 3 - 150

navn 1 - 100

 

Takk igjen, Axentrix! :)

Endret av moskus
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...