Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [rozwiązane] pobieranie informacji o produkcie
Forum PHP.pl > Forum > XML, AJAX > XML
Arek00
mam taki plik:
  1. <?xml version="1.0" encoding="iso-8859-2"?><katalog>
  2. <grupy>
  3.  
  4. <grupa id="ZAS-LAD" nazwa="Ladowarki akumulatorowe"
  5. mala_ilosc = "50"
  6. ilosc_dni = "7" />
  7. <grupa id="ZAS-AKU" nazwa="Akumulatory"
  8. mala_ilosc = "50"
  9. ilosc_dni = "7" /></grupy></grupa></grupy>
  10.  
  11. <producenci>
  12. <producent id="SUB" nazwa="" /><producent id="CLU" nazwa="Club" />
  13. </producenci>
  14.  
  15. <produkty>
  16.  
  17. <produkt
  18. id="SIEALLBAK0002"
  19. uid="33486"
  20. nazwa="ALLIEDT (AT-WA1004G) PUNKT DOSTPOWY/ROUTER 54Mbps,1xWAN,4xLAN"
  21. producent="ALL"
  22. grupa="SIE-BAK">
  23.  
  24. <zdjecia>
  25. <zdjecie plik="Sieci/AlliedTelesyn/routery/at-wa1004g.jpg" fit="0" domyslne="1" />
  26. </zdjecia>
  27.  
  28. <technika md5="7726737c25b2d80b2f8745b217b27ad5">
  29. <parametr nazwa="Standard" opis="IEEE 802.11b, IEEE 802.11g " typ="varchar" />
  30. <parametr nazwa="Pasmo" opis="2.4GHz " typ="varchar" />
  31. <parametr nazwa="Tryb pracy" opis="AP" typ="varchar" />
  32. </technika>
  33. </produkt>
  34.  
  35. <produkt
  36. id="SIEALLBAK0001"
  37. uid="29394"
  38. nazwa="ALLIEDT (AT-WA3404) Access Point 11Mbps 802.11b, 5xLAN"
  39. producent="ALL"
  40. grupa="SIE-BAK">
  41.  
  42. <zdjecia>
  43. <zdjecie plik="Sieci/Inne/atwa3404.jpg" fit="0" domyslne="1" />
  44. </zdjecia>
  45.  
  46. <technika md5="07e2c6488771d436354df74556545e7a">
  47. <parametr nazwa="Prędko&para;ć maksymalna (Mbps)" opis="Wi-Fi 11Mbps, 5 x RJ45 (10/100Mbps) " typ="varchar" />
  48. <parametr nazwa="Standard" opis="IEEE 802.11b" typ="varchar" />
  49. <parametr nazwa="Pasmo (GHz)" opis="2.4" typ="varchar" />
  50. </technika>
  51. </produkt>
  52.  
  53. </produkty>
  54. </katalog>


<grupy> oraz <producenci> mnie nie interesują. Chodzi o to że mam w zmiennej podany id produktu np. SIEALLBAK0002 i chciałbym wyciągnąć adres zdjęcia oraz to co jest w tagach <parametr>

jestem początkującym więc nie bardzo wiem jak się do tego zabrać, przeglądałem różne opisy ale im więcej czytałem tym bardziej się w tym gubiłem... znalazłem to:
jak php obsługuje xml chyba najprostsze i po polsku opisane, zacząłem to przerabiać ale zatrzymałem się na:
  1. <?php
  2.       if($czy_redaktor == 1){
  3.          switch($act_tag){
  4.             case 'KSYWA': $redakcja[$int] -> nick .= $text; break;
  5.             case 'MAIL': $redakcja[$int] -> mail .= $text; break;
  6.             case 'WWW': $redakcja[$int] -> www .= $text; break;
  7.             case 'PRAWA': $redakcja[$int] -> funkcja .= $text; break;
  8.             case 'OPIS': $redakcja[$int] -> opis .= $text; break;
  9.          }
  10.       }
  11. ?>


w przykładzie podane są różne tagi a ja mam cały czas <parametr> tylko z różnym opisem, jak to przerobić żeby odczytywało mi po kolei? (na razie chciałbym żeby w ogóle odczytać te dane z pliku bez wybierania po id produktu)
splatch
Nie jestem pewien czy zapytanie XPath jest dobrze sformuowane.
  1. <?php
  2. $xml = new DOMDocument();
  3. $xml->load('twoja-nazwa-pliku.xml');
  4.  
  5. $xpath = new DOMXpatch($xml);
  6. $elements = $xpath->query("/grupy/produkt[@id='twoje-id-produktu']/zdjecia");
  7. foreach($elements as $zdjecie) {
  8.  // ..
  9. }
  10. ?>
Arek00
dodałem warunek if do mojego kodu i działa:

  1. <?php
  2. $id_produktu = 'SIEALLBAK0001';
  3.  
  4. $katalog = simplexml_load_file('produkty.xml');
  5.  
  6. foreach($katalog -> produkty -> produkt as $produkt){
  7.  
  8. if ($produkt['id'] == $id_produktu){
  9.  foreach($katalog -> produkty -> produkt -> zdjecia -> zdjecie as $zdjecie){
  10. echo $zdjecie['plik'] . '<br>';
  11.  }
  12.  echo '<b>id produktu:</b> ' . $produkt['id'] . '<br>';
  13.  echo '<b>Nazwa:</b> ' . $produkt['nazwa'].'<br>';
  14.  
  15.  
  16.  foreach($katalog -> produkty -> produkt -> technika -> parametr as $parametr){
  17. echo '<b>' . $parametr['nazwa'] . '</b> ' . $parametr['opis'] . '<br>';
  18.  }
  19.  echo '<hr/>';
  20. }
  21. }
  22. ?>

teraz mam pytanie: plik ma około 7MB, co mniej obciąży serwer: czy jeśli będę stosował ten skrypt czy lepiej wrzucić to do bazy mysql?
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.