Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Simple XML
Forum PHP.pl > Forum > PHP
kajzur
Witam,

Mam taki oto pliczek xml:
  1. <?xml version="1.0" encoding="ISO-8859-2"?>
  2. <zloteMysli>
  3.      <categories>
  4.            <category name="2. Psychologia w praktyce" idref="1" />
  5.            <category name="5. Zdrowie i uroda" idref="2" />
  6.            <category name="1. Praktyczna edukacja" idref="3" />
  7.            <category name="Zatrudnienie i kariera" idref="4" />
  8.            <category name="Zarabianie w Internecie" idref="5" />
  9.            <category name="3. Biznes i praca" idref="6" />
  10.            <category name="6. Pozostałe" idref="7" />
  11.            <category name="Darmowe ebooki" idref="8" />
  12.            <category name="Języki obce" idref="9" />
  13.            <category name="Szybkie czytanie i nauka" idref="10" />
  14.            <category name="Sztuka pisania" idref="11" />
  15.            <category name="Motywacja i sukces" idref="12" />
  16.            <category name="Wywieranie wpływu" idref="13" />
  17.            <category name="Relacje międzyludzkie" idref="14" />
  18.            <category name="4. Komputery i Internet" idref="15" />
  19.            <category name="Programowanie" idref="16" />
  20.            <category name="Własna firma" idref="17" />
  21.            <category name="Giełda, inwestycje" idref="18" />
  22.            <category name="Sprzedaż bezpośrednia" idref="19" />
  23.            <category name="Seks i ciąża" idref="20" />
  24.            <category name="Zdrowie dzieci" idref="21" />
  25.            <category name="Zdrowe odżywianie" idref="22" />
  26.            <category name="Ciało i duch" idref="23" />
  27.            <category name="Medycyna (także alternatywna)" idref="24" />
  28.            <category name="Rozwój osobisty" idref="25" />
  29.            <category name="Ezoteryka" idref="26" />
  30.            <category name="Gotowanie" idref="27" />
  31.            <category name="Motoryzacja" idref="28" />
  32.            <category name="Prawo &quot;po ludzku&quot;" idref="29" />
  33.            <category name="Dla majsterkowiczów" idref="30" />
  34.            <category name="Muzyka" idref="31" />
  35.            <category name="Powieści i opowiadania" idref="32" />
  36.            <category name="Zakłady bukmacherskie, hazard" idref="33" />
  37.            <category name="Studia" idref="34" />
  38.            <category name="Wychowanie dzieci" idref="35" />
  39.            <category name="Prawo" idref="36" />
  40.            <category name="Nauka angielskiego" idref="37" />
  41.            <category name="Dla dorosłych" idref="38" />
  42.            <category name="Programy" idref="39" />
  43.      </categories>
  44.      <ebooks>
  45.            <ebook idref="1">
  46.                  <category idref=""/>
  47.                  <author></author>
  48.                  <title></title>
  49.                  <shortdescription></shortdescription>
  50.                  <description></description>
  51.                  <price></price>
  52.                  <printed_price></printed_price>
  53.                  <targetprice></targetprice>
  54.                  <pricestep></pricestep>
  55.                  <isbn></isbn>
  56.                  <pages></pages>
  57.                  <status></status>
  58.                  <domain></domain>
  59.                  <printed_version></printed_version>
  60.                  <covers>
  61.                        <cover type="3d_small"/>
  62.                        <cover type="3d"/>
  63.                        <cover type="2d_small"/>
  64.                        <cover type="2d"/>
  65.                  </covers>
  66.            </ebook>
  67.      </ebooks>
  68. </zloteMysli>


Jak ja mam to jakoś normalnie wyświetlić? Mam taki kod:

  1. <?php
  2. $zloteMysli = simplexml_load_file('http://partnertools.zlotemysli.pl/?c=ebooks_xml&t=bestweek');
  3.  
  4. echo $zloteMysli->categories->name;
  5.  
  6.  
  7.     foreach($zloteMysli -> categories as $klient){
  8.      echo 'Ebook: '.$klient -> name.'';
  9.      echo '<br/>';
  10.    
  11.      echo '<hr/>';
  12.  
  13. }
  14. ?>

Ale pusta stronka jest, kurcze, nie wiem jak, pomoże ktoś?
WebCM
  1. <?php
  2. foreach($zloteMysli -> categories -> category as $klient){
  3. ?>
kajzur
Hmm, działa rzecz jasna, tylko po co złote myśli udostępniły te listę? Tzn jak można z tego zbudować linki referencyjne?
erix
Normalnie. Dopisujesz wartość z atrybutu idref do URL w odpowiednim parametrze.
kajzur
No ok, wszystko fajnie.. Tylko jak to stronnicować? Wygląda to tak: http://ebook.cal.pl/sklep.php

A kod to:
Kod
        <?php
require("jpcache.php");
$xml = simplexml_load_file('http://www.ppzm.pl/ks/publikacje.xml?link=kajzur');

foreach ($xml->publication as $lol)
{

     echo "<fieldset><a href=$lol->link>$lol->tytul</a><br>Cena: $lol->cena<br>Opis:$lol->opis</fieldset>";

}


?>


Jest w cache, bo dość długo, za długo mi to generował smile.gif Ale właśnie, jak to stronnicować? smile.gif
erix
No to sobie robisz licznik do pętli. winksmiley.jpg Jeśli wartość poza zakresem, dajesz continue" title="Zobacz w manualu PHP" target="_manual.

Nie jestem w tej chwili w stanie powiedzieć, czy by wystarczyła sama pętla for" title="Zobacz w manualu PHP" target="_manual ze zmodyfikowanym zakresem, bo po prostu nie pamiętam, czy SimpleXmlObject korzystał z ArrayObject, czy z Iterator. Ale to, co napisałem w pierwszym zdaniu na pewno zadziała.
kajzur
Pamiętam Cię z Intersieci winksmiley.jpg Użyłem klasy ze stronki http://forum.php.pl/index.php?showtopic=35498

  1. <?php
  2. $zloteMysli = simplexml_load_file('http://www.ppzm.pl/ks/publikacje.xml?link=kajzur');
  3.  
  4.  
  5. $onpage=20;
  6.  
  7.  
  8.  
  9. require_once('Pager.class.php');
  10.  
  11. $tab = array();
  12. $totalRecords = count($zloteMysli -> publication);
  13.  
  14. $klient = $zloteMysli -> publication;
  15. for ($i=0; $i<$totalRecords; $i++){
  16.    $tab[$i]['ID'] = $i;
  17.    $tab[$i]['TEXT'] = "<FIELDSET><a href=$klient->link> $klient->tytul</a> - Opis:<br>$klient->opis<br><b>Cena: $klient->cena</b></FIELDSET>";
  18. }
  19. try{
  20.    $pager = new Pager('idPagera');
  21.    $pager->SetTotalRecords($totalRecords);
  22.    $pager->SetRecordsPerPage(20);
  23.    $pager->SetPagesPerNav(5);
  24.    $pager->Make(true);
  25.    $pagerArray = $pager->GetArray();
  26.    echo 'Ostatnia strona to: '. ($pagerArray[Pager::GOTO_LAST][Pager::PAGE]);
  27.    $pag = $pager->Render();
  28.    $indexStart = $pager->GetIndexRecordStart();
  29.    $indexEnd = $pager->GetIndexRecordEnd();
  30. }
  31. catch (Exception $e) {
  32.    echo $e->getMessage();
  33. }
  34.  
  35. echo '<table>';
  36. for ($i=$indexStart; $i<=$indexEnd;$i++)
  37.    echo "<tr><td>{$tab[$i]['ID']}</td><td>{$tab[$i]['TEXT']}</td></tr>";
  38. echo '</table>';
  39. echo $pag;
  40. ?>


Ładnie dzieli, tylko przy każdym rekordzie jest ten sam wpis.. Kurcze, przecież nie wklepe tam foreach winksmiley.jpg
erix
Cytat
Pamiętam Cię z Intersieci

Wszystko możliwe; nie za wiele osób kojarzę z widzenia z IS. winksmiley.jpg

Wracając, na co marnujesz dwa razy pamięć: wyciągasz najpierw wszystkie, potem raczej wynajdujesz koło na nowo (jest przecież array_slice" title="Zobacz w manualu PHP" target="_manual). Zrób z licznikiem. winksmiley.jpg

A jeśli chodzi o bieżący kod, to sprawdź, czy indexStart i indexEnd zawierają odpowiednie zakresy.
nospor
@erix chodzi o ten kod:
  1. <?php
  2. $klient = $zloteMysli -> publication;
  3. for ($i=0; $i<$totalRecords; $i++){
  4.   $tab[$i]['ID'] = $i;
  5.   $tab[$i]['TEXT'] = "<FIELDSET><a href=$klient->link> $klient->tytul</a> - Opis:<br>$klient->opis<br><b>Cena: $klient->cena</b></FIELDSET>";
  6. }
  7. ?>

Przeciez on $klient pobiera poza petlą a w petli ciagle przypisuje tego samego klienta, wiec ma te same rekordy smile.gif
Niech mu ktos wytlumaczy jak ma w petli pobrac kolejne dane z xml bo meczy mnie na pw a ja za bardzo czasu nie mam winksmiley.jpg
kajzur
Sory Stary, nie wiedziałem że czasu nie masz smile.gif Co do wytłumaczenia.. Byłbym wdzięczny smile.gif
XoCinek
Z czystej tylko ciekawości zapytam po co tyle kombinacji?

Przecież jest gotowy skrypt specjalnie dedykowany dla tych danych,
który pobiera dane, keszuje i sam aktualizuje co kilka godzin jeżeli jest
taka potrzeba -> http://www.ppzm.pl/skrypty

Pobrać, wgrać do siebie i już.
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.