Moskus Skrevet 7. november 2005 Del Skrevet 7. november 2005 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
Axentrix Skrevet 8. november 2005 Del Skrevet 8. november 2005 <?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
Moskus Skrevet 8. november 2005 Forfatter Del Skrevet 8. november 2005 (endret) En liten funksjon som iallefall legger $array["navn på personen"] = $antall_poeng; 5121446[/snapback] Success! Tusen hjertelig takk! 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 - 200navn 3 - 150 navn 1 - 100 Takk igjen, Axentrix! Endret 8. november 2005 av moskus Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå