Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> API Allegro - stronicowanie pobranych aukcji, Po pobraniu aukcji allegro (API) brak stronicowania :(
radziu
post
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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
memory
post
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
Post #3





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

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


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

Szczerze mówiąc szukałem rozwiązania w dokumentacji API Allegro, ale chyba mam problem z odczytywaniem technicznych przypisów (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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
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
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 (IMG:style_emoticons/default/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 ? (IMG:style_emoticons/default/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 ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
artur_dziocha
post
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ć(IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 13:30