Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP] Wartość najlepszej 11 i wiek
Forum PHP.pl > Forum > Przedszkole
el_plecinio
Witam, zwracam się tutaj z prośbą o pomoć po raz pierwszy wiec mam nadzieje że sie nie zawiodę ;p

Mój problem polega na tym ze jestem w php cienki. Troche poczytałem ale nie umiem stworzyć skryptu który by pobierał z gry (poprzez xml) dane zawodników m.in. jego wartosć i wiek.
Ten pliczek ma za zadanie wyświetlać wartość najlepszej 11 zawodników oraz ich średni wiek (tej "11") pomógł by mi ktoś z tym??

Skrypt mam na stronie:
http://forummz.eu/team_playerlist.php?f2=153917
1) nie umiem zrobić tak by pobrało maksymalną ilosć z tablicy ( http://www.managerzone.com/xml/team_player...;team_id=153917 ) wiem że to musi być poprzez funkcje count() ale mi nie wychodziło ;/
2) kolejne zasanie to zliczenie 11 najlepszych i podzielenie tego wyniki włąśnie przez tą liczbę
3) na koncu średnia wieku najlepszej jedenatki.

A to co mam do tej pory:
  1. $id_zespolu=$_GET['f2'];
  2.  
  3.  
  4. $handle = fopen("http://www.managerzone.com/xml/team_playerlist.php?sport_id=1&team_id=".$id_zespolu." <http://www.managerzone.com/xml/team_playerlist.php?sport_id=1&team_id=".$id_zespolu.">", "r");
  5. $contents = '';
  6. while (!feof($handle)) {
  7. $contents .= fread($handle, 8192);
  8. }
  9. fclose($handle);
  10.  
  11. $xml = new SimpleXMLElement($contents);
  12.  
  13.  
  14.  
  15. if (!isset($id_zespolu))
  16. {
  17. // pusta zmienna
  18. echo ("<b>Prosze wprowadzić ID zespołu z którego ma zostać pobrana lista zawodników)</b>");
  19. }
  20.  
  21.  
  22. else {
  23.  
  24.  
  25.  
  26. $nazwa_dr= $xml->TeamPlayers['teamName'];
  27.  
  28. //id temau link do jego profilu
  29. $team_link= $xml->TeamPlayers[0]['teamId'];
  30. $link=("http://managerzone.com/?p=team&tid=".$team_link);
  31. $link_prof= 'Zespół :<a href="'.$link.'">'.$nazwa_dr.'</a><br>' ;
  32. echo $link_prof;
  33. //panstwo
  34. $panstwo= $xml->TeamPlayers['countryShortname'];
  35. Echo ("Państwo: ".$panstwo."<br>");
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42. echo'<table border="2">';
  43.  
  44.  
  45.  
  46. echo'<td>LP.</td>';
  47. echo'<td>Nazwisko i imie</td>';
  48. echo'<td>Wiek</td>';
  49. echo'<td>Wzrost</td>';
  50. echo'<td>Waga</td>';
  51. echo'<td>Wartość</td>';
  52. echo'<td>Pensja</td>';
  53. echo'<td>Kraj</td>';
  54.  
  55.  
  56. for ($ilosc=0;$ilosc<=19;$ilosc++)
  57. {
  58. echo '<tr>';
  59.  
  60. //numer zawodnika do poprawy !!!!!!!!!!!!!!
  61. $player_nr= $xml->TeamPlayers->Player[$ilosc]['shirtNo'];
  62. //nazwa zawodnika
  63. $name= $xml->TeamPlayers[0]->Player[$ilosc]['name'];
  64. //link id
  65. $id= $xml->TeamPlayers[0]->Player[$ilosc]['id'];
  66. $llink=("http://managerzone.com/?p=players&pid=51119714&tid=".$id);
  67. $link_zaw= '<a href="'.$llink.'">'.$name.'</a><br>' ;
  68. //wiek
  69. $age= $xml->TeamPlayers[0]->Player[$ilosc]['age'];
  70. //wysokość
  71. $wys= $xml->TeamPlayers[0]->Player[$ilosc]['height'];
  72. //waga
  73. $waga= $xml->TeamPlayers[0]->Player[$ilosc]['weight'];
  74. //wartosc
  75. $wartosc= $xml->TeamPlayers[0]->Player[$ilosc]['value'];
  76. //zarobki
  77. $zarobek= $xml->TeamPlayers[0]->Player[$ilosc]['salary'];
  78. //narodowosc
  79. $country= $xml->TeamPlayers[0]->Player[$ilosc]['countryShortname'];
  80.  
  81. echo ('<td>'.$player_nr.'</td>');
  82. echo ("<td><b>".$link_zaw."</b></td>");
  83. echo ('<td>'.$age.'</td>');
  84. echo ('<td>'.$wys.'</td>');
  85. echo ('<td>'.$waga.'kg.</td>');
  86. echo ('<td>'.$wartosc.'</td>');
  87. echo ('<td>'.$zarobek.'</td>');
  88. echo ('<td>'.$country.'</td>');
  89.  
  90. //---------------------------------------------------------------------------------
  91. '</tr>';
  92.  
  93.  
  94.  
  95. }
  96.  
  97. echo'</table>';
  98. }
  99. ?>


wiem juz jakim sposobiem to najłatwiej zrobić ale nadal nie umiem posortować tablicy xml ...

  1. asort($xml->TeamPlayers[0]->Player);
  2. for ($ilosc=0;$ilosc<=11;$ilosc++)
  3. {
  4. $wartosc1= $xml->TeamPlayers[0]->Player[$ilosc]['value'];
  5. echo $wartosc1 . '<br>'; }


bawie sie tak ale nie działa ....

ma ktoś lepsze rozwiązanie jak to sortowac??
camikazee
Wyciągasz interesujące Cię informacje z XMLa i przepisujesz do własnej tablicy. Tam sortujesz na swój sposób, możesz wykorzystywać funkcje tablic, jak i w pętli np foreach zrobić to po swojemu.
Dla przykładu dla średniej wieku, zczytujesz przecież w pętli wiek poszczególnych userów inkrementując zmienną, a następnie dzielisz przez 11 zaokrąglając według uznania.
el_plecinio
Dzieki, troche mnie naprowadziłes. Ale nadal jestem zielony....

  1. for ($ilosc=0;$ilosc<=11;$ilosc++)
  2. { $wartosc2= $xml->TeamPlayers[0]->Player[$ilosc]['value'];
  3. $zawodnik[$ilosc] = $wartosc2; }
  4.  
  5. asort($zawodnik);
  6. for ($ilo=0;$ilo<=11;$ilo++)
  7. {
  8. echo $zawodnik[$ilo].'<br>'; }


zrobiłem tak ale:
-nie sortuje mi sad.gif
- nie uiem wyciagnąć wszystkich danych poprzez count (zamienić w $ilo<=11, te 11 na ilość danych)

ale nadal jest nie to czego chciałem bo nie bede wybierał równolegle 2 danych (wartośc i wiek)

wydaje mi sie że to powinno być coś podobnego do tego, ale to jest jeszcze bardziej kosmiczne dla mnie niż poprzednie ;]
  1. $owoce = array ("d"=>"mango", "a"=>"papaja", "b"=>"banan", "c"=>"aronia");
  2. asort ($owoce);
  3. reset ($owoce); // Funkcja ta powoduje powrót do pierwszego elementu tablicy
  4. while (list ($klucz, $wartosc) = each ($owoce)) {
  5. echo "$klucz = $wartosc\n";
  6. }


kluczem jest wartość zawodnika a wartością wiek.
potem sortuje wg klucza malejąco
i dziele klucz na 11 i wartosc na 11

tylko nie mam pojęcia jak to zrobić ;( jak robie to ciagle błedy sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.