Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> API Allegro - stronicowanie pobranych aukcji, Po pobraniu aukcji allegro (API) brak stronicowania :(
radziu
post 17.08.2012, 00:13:28
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 29.03.2009

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


Witam szanownych kolegów,
tym razem poległem na WebApi Allegro, mam drobny kłopot.

Na tyle na ile potrafiłem, rozwiązałem swoje problemy a api_allegro we własnym zakresie, pół dnia siedziałem nad listowaniem aukcji na swojej stronie.
W końcu, kiedy pobrałem aukcje, poukładałem w listę w tabeli, pojawił mi się problem stronicowania tych aukcji i dzielenie ich na porcje.

chciałbym je podzielić na porcje po 10 aukcji, ale nie wiem jak się do tego zabrać, kompletna niemoc niestety smile.gif

Aktualnie mam na koncie 38 aukcji, skrypt wyświetla wszystkie, ale z ustawionym parametrem 'limit' => 50 pokazuje mi 38 wierszy z aukcjami i pozostałe 12 puste....

  1. <? //początek wyświetlania/pobierania aukcji ?>
  2. <table class="oferta">
  3. <tr class="th">
  4. <td width="30">nr.</td>
  5. <td width="106">FOTO</td>
  6. <td width="397">TYTUŁ Aukcji</td>
  7. <td width="94">Nr.aukcji</td>
  8. <td width="156">KupTeraz</td>
  9. </tr>
  10. <?php
  11. define('ALLEGRO_ID', 'allegro id numer');
  12. define('ALLEGRO_LOGIN', 'nazwa użytkownika');
  13. define('ALLEGRO_PASSWORD', 'hasło do konta allegro');
  14. define('ALLEGRO_KEY', 'API klucz');
  15. define('ALLEGRO_COUNTRY', 1);
  16. require_once 'class.allegrowebapi.php';
  17.  
  18. $allegro = new AllegroWebAPI();
  19. $allegro->Login();
  20. $items_list = $allegro->GetUserItems(array('offset' => 0,'limit' => 50));
  21. for($i=0;$i<50;$i++)
  22. {
  23.  
  24. $nr_aukcji = $items_list['user-item-list'][$i]->{'it-id'};
  25. $tytul_aukcji = $items_list['user-item-list'][$i]->{'it-name'};
  26. $foto_mini = $items_list['user-item-list'][$i]->{'it-thumb-url'};
  27. $kup_teraz = $items_list['user-item-list'][$i]->{'it-buy-now-price'};
  28. echo "<tr class='rowTable_a'>";
  29. echo " <td>$i</td>";
  30. echo "<td><a href='http://allegro.pl/show_item.php?item=$nr_aukcji' title='$tytul_aukcji' target='_blank'><img src='$foto_mini'></a></td>";
  31. echo "<td>$tytul_aukcji</td>";
  32. echo "<td>$nr_aukcji</td>";
  33. echo "<td>$kup_teraz <b>PLN</b></td>";
  34. }
  35. ?>
  36.  
  37. </table>
  38. <? //koniec wyświetlania/pobierania aukcji ?>



Kompletnie zabrakło mi pomysłu jak poukładać ten listing w porcję po 10 aukcji, pomożecie...?


Przykład listingu aukcji na stronie

To jest wersja testowa mojego systemu, więc nie zwracajcie uwagi na detale wink.gif
Go to the top of the page
+Quote Post
memory
post 17.08.2012, 10:58:00
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 84
Dołączył: 29.11.2006
Skąd: bełchatów

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


  1. for($i=0;$i<50;$i++)
,to jest winowajca

wyszukiwarka : paginacja

http://allegro.pl/webapi/documentation.php...d-code-examples
Go to the top of the page
+Quote Post
radziu
post 17.08.2012, 22:51:24
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 29.03.2009

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


ooo smile.gif
Dzięki, usiądę wieczorkiem i pogrzebię nad podanym przez Ciebie przykładem wink.gif
Może to faktycznie dobry kierunek wink.gif)))

Szczerze mówiąc szukałem rozwiązania w dokumentacji API Allegro, ale chyba mam problem z odczytywaniem technicznych przypisów smile.gif

Ech, znów poległem, to jest do dupy !
  1.  
  2.  
  3. <?php
  4. // .....
  5.  
  6. // Pobranie WSZYSTKICH aukcji wskazanego uzytkownika - prosze zwrocic uwage na dzialanie OFFSET!
  7.  
  8. public function getAuctions ( $offset = 0, $limit = 25 )
  9. {
  10. $items = $this -> doGetUserItems ( $this -> userId, APIKEY, 1, $offset, $limit );
  11.  
  12. $step = ceil ( $items ['user-item-count'] / $limit );
  13. $out = $items ['user-item-list'];
  14.  
  15. while ( $offset < $step ) // $count
  16. {
  17. ++ $offset;
  18.  
  19. $its = $this -> doGetUserItems ( $this -> userId, APIKEY, 1, $offset, $limit );
  20.  
  21. $out = array_merge ( $out, $its ['user-item-list'] );
  22. }
  23.  
  24. return array ( 'user-item-count' => $items ['user-item-count'], 'user-item-list' => $out );
  25. }
  26. // ....
  27.  
  28. ?>
  29.  
  30.  




już w 6 linijce wywala błąd, a ja nie wiem dlaczego.... podstawiłem tą funkcję do swojego systemu, pozamieniałem wszystkie parametry i nie działa sad.gif




Nie macie pomysłu jak dorobić stronicowanie w moim już istniejącym skrypcie podanym w pierwszym poście ?
Go to the top of the page
+Quote Post
artur_dziocha
post 17.08.2012, 23:54:46
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


Przy pobieraniu aukcji nie musisz pobierać wszystkich na raz. To regulujesz sobie offsetem i limitem.
Jeśli chcesz pobrać pierwsze 10 aukcji ustawiasz limit na 10 offset na 0
Następne druga strona offset 1 i do 4

Ja robiłem sobie mniej więcej w ten sposób:).
Dostosuj do siebie

  1. public function getAllMyItems()
  2. {
  3. $count = $this->allItemsCount();
  4. $limit = 100;
  5. $offset = $count/$limit;
  6. for($i = 0; $i<=$offset; $i++ )
  7. {
  8. $this->getUserItems($i, $limit);
  9. }
  10. }
  11. private function getUserItems($offset, $limit)
  12. {
  13. $auctions = $this->client->doGetUserItems(
  14. $this->session['user-id'],
  15. $this->config['allegro_key'],
  16. $this->config['country_code'],
  17. $offset,
  18. $limit
  19. );
  20. $this->addToUserAuctions($auctions['user-item-list']); //to może sobie zamienić na wyświetlanie lub co tam chcesz
  21.  
  22. }
  23.  
  24. private function addToUserAuctions(array $auctions)
  25. {
  26. if(!empty($auctions))
  27. {
  28. foreach($auctions as $key => $value )
  29. {
  30. $this->userAuctions[] = $value->{'it-id'};
  31. }
  32. }
  33. }


getAllMyItems dostosuj do paginacji

Ten post edytował artur_dziocha 17.08.2012, 23:57:28
Go to the top of the page
+Quote Post
radziu
post 18.08.2012, 01:37:17
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 29.03.2009

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


Dzięki kolego, spróbuję jutro, bo dziś mam już dość cyferek i literek wink.gif

..bądź co bądź, chyba zmienię front działań, bo grzebanie w api allegro i wyświetlanie ich w taki sposób jak bym chciał jakoś mi nie idzie...


Zastanawiam się, czy nie wygodniej by było pobrać GetUserItems, zapisać do bazy SQL i dopiero później wyświetlać, sortować,stronicować ?
Jeśli tak, to może ktoś już to robił i zechiałby pomóc w tym kierunku ? smile.gif


Cytat(artur_dziocha @ 18.08.2012, 00:54:46 ) *
Przy pobieraniu aukcji nie musisz pobierać wszystkich na raz. To regulujesz sobie offsetem i limitem.
Jeśli chcesz pobrać pierwsze 10 aukcji ustawiasz limit na 10 offset na 0
Następne druga strona offset 1 i do 4

Ja robiłem sobie mniej więcej w ten sposób:).
Dostosuj do siebie

  1. public function getAllMyItems()
  2. {
  3. $count = $this->allItemsCount();
  4. $limit = 100;
  5. $offset = $count/$limit;
  6. for($i = 0; $i<=$offset; $i++ )
  7. {
  8. $this->getUserItems($i, $limit);
  9. }
  10. }
  11. private function getUserItems($offset, $limit)
  12. {
  13. $auctions = $this->client->doGetUserItems(
  14. $this->session['user-id'],
  15. $this->config['allegro_key'],
  16. $this->config['country_code'],
  17. $offset,
  18. $limit
  19. );
  20. $this->addToUserAuctions($auctions['user-item-list']); //to może sobie zamienić na wyświetlanie lub co tam chcesz
  21.  
  22. }
  23.  
  24. private function addToUserAuctions(array $auctions)
  25. {
  26. if(!empty($auctions))
  27. {
  28. foreach($auctions as $key => $value )
  29. {
  30. $this->userAuctions[] = $value->{'it-id'};
  31. }
  32. }
  33. }


getAllMyItems dostosuj do paginacji

Kolego, a może podrzuć linka i pokaż jak to wyszło u Ciebie ze stronicowaniem ? smile.gif
Go to the top of the page
+Quote Post
artur_dziocha
post 18.08.2012, 09:09:45
Post #6





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


Nie robiłem tego na stronie. Musiałem tylko pobrać popaczkowane i odpoowiednio je zapisaćsmile.gif

Od razu mówię, że nie sprawdzane:) Pokombinuj

Do tej swojej klasy dopisz sobie funkcję zliczającą wszystkie aukcje z kategorii "Sprzedaję" np u siebie mam tak
  1. public function allItemsCount($type = 'sell')
  2. {
  3. return $this->client->doMyAccountItemsCount(
  4. $this->session['session-handle-part'],
  5. $type,
  6. ''
  7. );
  8. }


  1. <? //początek wyświetlania/pobierania aukcji ?>
  2. <table class="oferta">
  3. <tr class="th">
  4. <td width="30">nr.</td>
  5. <td width="106">FOTO</td>
  6. <td width="397">TYTUŁ Aukcji</td>
  7. <td width="94">Nr.aukcji</td>
  8. <td width="156">KupTeraz</td>
  9. </tr>
  10. <?php
  11. define('ALLEGRO_ID', 'allegro id numer');
  12. define('ALLEGRO_LOGIN', 'nazwa użytkownika');
  13. define('ALLEGRO_PASSWORD', 'hasło do konta allegro');
  14. define('ALLEGRO_KEY', 'API klucz');
  15. define('ALLEGRO_COUNTRY', 1);
  16. require_once 'class.allegrowebapi.php';
  17.  
  18. $allegro = new AllegroWebAPI();
  19. $allegro->Login();
  20. $limit = 10;
  21. $all_items_count = $allegro->allItemsCount();
  22. $ile_stron = $all_items_count / $limit +1;
  23.  
  24. //Paginacja
  25. for($i = 0; $i < $ile_stron; $i++)
  26. {
  27. echo "<a href='localhost?page=".$i."'>".$i."</a>";
  28. }
  29.  
  30. $offset = isset($_GET['page']) ? (int) $_GET['page']-1 : 0;
  31.  
  32. $items_list = $allegro->GetUserItems(array($offset, $limit));
  33. for($i=0;$i<$limit;$i++)
  34. {
  35.  
  36. $nr_aukcji = $items_list['user-item-list'][$i]->{'it-id'};
  37. $tytul_aukcji = $items_list['user-item-list'][$i]->{'it-name'};
  38. $foto_mini = $items_list['user-item-list'][$i]->{'it-thumb-url'};
  39. $kup_teraz = $items_list['user-item-list'][$i]->{'it-buy-now-price'};
  40. echo "<tr class='rowTable_a'>";
  41. echo " <td>$i</td>";
  42. echo "<td><a href='http://allegro.pl/show_item.php?item=$nr_aukcji' title='$tytul_aukcji' target='_blank'><img src='$foto_mini'></a></td>";
  43. echo "<td>$tytul_aukcji</td>";
  44. echo "<td>$nr_aukcji</td>";
  45. echo "<td>$kup_teraz <b>PLN</b></td>";
  46. }
  47. ?>
  48.  
  49. </table>
  50. <? //koniec wyświe
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: 4.05.2025 - 14:28