Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wyciąganie tylko jednego rekordu z xml, kurs walut
mb83
post 30.07.2014, 19:10:40
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

Ostrzeżenie: (0%)
-----


Witam
Pewnie dla Was problem dziecinny ale ja nie wiem jak go rozwiązać.

Mam tablicę z pliku XML generującą kurs walut:
  1. [0] => SimpleXMLElement Object
  2. (
  3. [nazwa_waluty] => bat (Tajlandia)
  4. [przelicznik] => 1
  5. [kod_waluty] => THB
  6. [kurs_sredni] => 0,0971
  7. )
  8.  
  9. [1] => SimpleXMLElement Object
  10. (
  11. [nazwa_waluty] => dolar amerykański
  12. [przelicznik] => 1
  13. [kod_waluty] => USD
  14. [kurs_sredni] => 3,0978
  15. )
  16.  
  17. [2] => SimpleXMLElement Object
  18. (
  19. [nazwa_waluty] => dolar australijski
  20. [przelicznik] => 1
  21. [kod_waluty] => AUD
  22. [kurs_sredni] => 2,9024
  23. )
  24.  
  25. [3] => SimpleXMLElement Object
  26. (
  27. [nazwa_waluty] => dolar Hongkongu
  28. [przelicznik] => 1
  29. [kod_waluty] => HKD
  30. [kurs_sredni] => 0,3998
  31. )
  32.  
  33. [4] => SimpleXMLElement Object
  34. (
  35. [nazwa_waluty] => dolar kanadyjski
  36. [przelicznik] => 1
  37. [kod_waluty] => CAD
  38. [kurs_sredni] => 2,8505
  39. )


jak za pomocą wyciągnąć tylko jeden rekord np. trzeci [3] - w tym przypadku dolar kanadyjski CAD.

kod do pobierania całej tabeli mam taki:
  1. function nazwa_aktualnego_kursu() {
  2. $tresc = file_get_contents('http://nbp.pl/Kursy/KursyA.html');
  3. $wzorzec = '/xml\/[\d\w]+\.xml/';
  4. $sukces = preg_match($wzorzec, $tresc, $pasujace);
  5.  
  6. if (empty($pasujace))
  7. exit('Blad: Nie znaleziono tabeli kursow.');
  8.  
  9. return 'http://nbp.pl/Kursy/'.$pasujace[0];
  10. }
  11. $aktualny_kurs = nazwa_aktualnego_kursu();
  12. $tresc = file_get_contents($aktualny_kurs);
  13.  
  14. $xml = simplexml_load_string($tresc);
  15. $tab = $xml->numer_tabeli;
  16. $dpu = $xml->data_publikacji;
  17. foreach ($xml->pozycja as $po):
  18. $cad1 = $po->przelicznik;
  19. $cad2 = $po->kod_waluty;
  20. $cad3 = $po->kurs_sredni;
  21. $cad3 = str_replace(',', '.', $cad3);
  22. $cad3 = round($cad3, 3);
  23. echo ("<p>$cad1 $cad2 = $cad3 zł</p>"); /* tu ma być "1 CAD = 2.58 zł"
  24.   echo '<pre>';
  25.   print_r($xml); /* a tu cała tablica*/
  26. echo '</pre>';
  27. endforeach;


dzięki za pomoc i wyrozumiałość :-)
Go to the top of the page
+Quote Post
Pyton_000
post 30.07.2014, 19:50:44
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


  1. $po = $xml->pozycja[4];
  2. $cad1 = $po->przelicznik;
  3. $cad2 = $po->kod_waluty;
  4. $cad3 = $po->kurs_sredni;
  5. $cad3 = str_replace(',', '.', $cad3);
  6. $cad3 = round($cad3, 3);
  7. echo ("<p>$cad1 $cad2 = $cad3 zł</p>");


Ten post edytował Pyton_000 30.07.2014, 19:51:17
Go to the top of the page
+Quote Post
mb83
post 30.07.2014, 20:31:59
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

Ostrzeżenie: (0%)
-----


super, o to chodziło tylko dlaczego pętla pokazuje nie jeden rekord a tyle co jest walut w pliku xml?
co dopisać, żeby tylko raz pokazało daną walutę?

edit:
ok, dałem radę (a raczej break; dał radę:-)

Ten post edytował mb83 30.07.2014, 20:32:26
Go to the top of the page
+Quote Post
Pyton_000
post 30.07.2014, 21:16:51
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


to co podałem ma być zamiast pętli
Go to the top of the page
+Quote Post
mb83
post 30.07.2014, 21:41:21
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 2.02.2012

Ostrzeżenie: (0%)
-----


a jeżeli zrobię cztery pętle (dla czterech walut) i przed każdym endoreach wstawię break; to jest źle? dlaczego?
Go to the top of the page
+Quote Post
by_ikar
post 30.07.2014, 22:11:39
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Dlatego że pętla wtedy nie ma sensu. Odwołaj się do konkretnej tablicy wewnątrz, zamiast wrzucać to w pętle.
Go to the top of the page
+Quote Post
Pyton_000
post 31.07.2014, 10:50:04
Post #7





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


To tak jakbyś kupił paczkę paluszków, zabrał jednego a resztę wywalił wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 16:54