Jet-liMedlem sedan juli 200421 inlägg
Det är en xml fil på en annan domän än min som jag vill plocka ut viss information för att sedan visa på min domän.
Och den här.xml filen har den här uppbyggnaden:
<onliners>
<member>
<name>DartVader</name>
<category>pro</category>
</member>
</onliners>
Jag skulle vilja plocka ut namn slumpvis efter category och använda på min sida. Och jag vill kunna välja hur många som ska slumpas ut varje gång.
Men jag har noll koll på php och vet inte vart man kan läsa sig till detta. Har försökt googla men inte varit fyndig ännu.....
LivijnMedlem sedan mars 200630 inlägg
Jet-liMedlem sedan juli 200421 inlägg
Livijn skrev:
det här är inte php
Vilken slutledningförmåga du besitter! Och då du verkar veta ännu mindre än vad jag gör så undrar jag vad du bidrar med ditt inlägg?!?
LivijnMedlem sedan mars 200630 inlägg
att man ska flytta tråden, btw ja e bra på php :D *Stolt*
Jet-liMedlem sedan juli 200421 inlägg
Livijn skrev:
att man ska flytta tråden, btw ja e bra på php :D *Stolt*
Om du är så bra så kanske du kan svara på frågan då istället för meningslöst dravel!
GunnarDMedlem sedan juni 20014 250 inlägg
Man kan hantera XML filer i php, här är dokumentationen: http://se.php.net/manual/en/ref.xml.php
Har aldrig behövt göra det så jag kan inte ge mera hjälp ;)
emissionMedlem sedan dec. 19996 095 inlägg
Du kan kanske använda funktionen xml_parse_into_struct, och sedan lösa slumpfrågan i php.
http://se.php.net/manual/en/function.xml-parse-into-struct.php
Jet-liMedlem sedan juli 200421 inlägg
Att få ut en lista på allt är inga problem. Det som jag inte hittar lösningen på är hur man endast får ut 3 st slumpvalda members.
GunnarDMedlem sedan juni 20014 250 inlägg
Kan du få in det i en array så borde det vara enkelt att slumpa ut 3 stycket värden ur arrayen.
plupMedlem sedan sep. 2005100 inlägg
Det är i allra högsta grad en PHP-fråga!
Om du har en xml som ser ut typ:
<?xml version="1.0" encoding="ISO-8859-1"?>
<onliners>
<member>
<name>Adam</name>
<category>pro</category>
</member>
<member>
<name>Bertil</name>
<category>pro</category>
</member>
<member>
<name>Caesar</name>
<category>pro</category>
</member>
<member>
<name>David</name>
<category>n00b</category>
</member>
<member>
<name>Erik</name>
<category>n00b</category>
</member>
<member>
<name>Fredrik</name>
<category>pro</category>
</member>
<member>
<name>Gosta</name>
<category>pro</category>
</member>
<member>
<name>Hjalmar</name>
<category>pro</category>
</member>
</onliners>
Så kan du använda dig av följande funktion
<?php
function getName ($category = "pro", $num = 3) {
// PHP5 - DOM - http://se2.php.net/manual/en/ref.dom.php
$doc = DOMDocument::load('onliners.xml') or exit ("error");
$xpath = new DOMXPath($doc);
$params = $xpath->query("//member[category='" . $category . "']/name");
// PHP4 - DOM XML - http://se2.php.net/manual/en/ref.domxml.php
// $doc = domxml_open_mem('onliners.xml') or exit ("error");
// $xpath = $doc->xpath_new_context ();
// $params = $xpath->xpath_eval("//member[category='" . $category . "']/name");
foreach ($params as $param)
$index[] = $param->nodeValue;
$rand_keys = array_rand($index, $num);
foreach ($rand_keys as $key)
$arr[] = $index[$key];
return $arr;
}
$data = getName (); // <- ANROPET!
print_r ($data); // <- GER / (eller slumpar fram i det här fallet då)...
?>
...utskriften:
Array ( [0] => Bertil [1] => Hjalmar [2] => Caesar )
Sen kan du ju göra vad du vill med $data, vart du nu vill ha den.
Hoppas det går bra.
Jag fullkomligt ÄLSKAR DOM i PHP, och XPATH!, det är så genialiskt! Fler människor borde använda det!
Jet-liMedlem sedan juli 200421 inlägg
"Fatal error: Call to undefined function: load() in /var/www/html/test/random.php on line 6" dyker upp när jag testar....
Verkar inte gilla sökvägen till .xml filen
plupMedlem sedan sep. 2005100 inlägg
njae, felmeddelandet klagar inte på sökvägen. däremot så kanske du kör med en lite äldre version av php? jag har testat ovanstående på "PHP Version 5.1.4" med framgång.
onliners.xml får du ju såklart byta ut mot den "riktiga" sökvägen.
/red
eller ja jo det är klart att sökvägen kan vara problemet, som sagt, "onliners.xml" måste ju vara "rätt"
Jet-liMedlem sedan juli 200421 inlägg
Har läst på lite om DOM och förstått att man inte kan använda det om inte xml filen ligger på sin egen server. Har jag förstått det rätt eller har jag fel?
plupMedlem sedan sep. 2005100 inlägg
jodå, det går att använda på externa filer, (det är fantastiskt!!!).
har gjort så i detta exempel, http://www.webforum.nu/showthread.php?t=137704
/red (om du berättar sökvägen/URLen till den "riktiga" onliners.xml så skulle jag kanske bättre förstå var felet ligger.)
Jet-liMedlem sedan juli 200421 inlägg
hmm kollade upp vilken version som jag hade av PHP och det var 4.4.2
plupMedlem sedan sep. 2005100 inlägg
åååååhhhh va synd, DOM är tyvärr php5 only.
/red
kanske att det funkar om du byter ut de två första raderna i funktionen till
$doc = domxml_open_mem('onliners.xml');
$xpath = $doc->xpath_new_context ();
så blir det DOM XML ist som funkar i php4.
(jag har INTE provat att testa detta, men det borde funka på samma sätt tycker jag.)
Jet-liMedlem sedan juli 200421 inlägg
Visst är det synd men det kanske går att uppgradera till PHP 5 med lite tur.....
Fatal error: Call to undefined function: query() in /var/www/html/test/random.php on line 7
blir det som error nu?!?
$params = $xpath->query("//member[category='" . $category . "']/name");
Så lite framsteg gjorde ändringen ändå :)
plupMedlem sedan sep. 2005100 inlägg
ah, sorry, den raden är ju lite DOM specifik den med...
byt ut $xpath->query(...) mot $xpath->xpath_eval(...)
så kanske... :)
Jet-liMedlem sedan juli 200421 inlägg
Den delen verkar ha gjort susen men nu blir det fel i rad 9....
"Warning: Invalid argument supplied for foreach() in /var/www/html/test/random.php on line 9"
foreach ($params as $param)
plupMedlem sedan sep. 2005100 inlägg
hahaha, det tar aldrig slut :e :l
alltså, php5 DOM query returnerar en DOMNodeList och därför passar den bra att "foreach'a", se manualen för DOM xpath-query för exempel.
php4 DOM XML hanterar tydligen det returnerade värdet av en (motsvarande query) xpath_eval lite annorlunda, kolla manualen för exempel.
eller så kanske det är lättare att uppgradera till php5, (med tanke på att php6 redan kommit en bit i utvecklingsstadiet så vore det kanske värt att uppgradera om man vill hänga med i svängarna)