Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] webapi foreach
Forum PHP.pl > Forum > Przedszkole
Swirek
Witam
mam mały problem z wyciągnięciem danych z web api allegro

wystukałem sobie kod

  1. $dane_formularzy_id=$client->doGetTransactionsIDs($_SESSION['sesja'], array($wybierz_aukcjes2["id_aukcji"]), 'seller');
  2.  
  3. $dane_formularzy=$client->doGetPostBuyFormsData($_SESSION['sesja'], $dane_formularzy_id);
  4.  
  5. $data = array();
  6.  
  7. foreach($dane_formularzy as $formularze)
  8. {
  9. $data[ $formularze->{'post-buy-form-id'} ] = $formularze->{'users-post-buy-data'};
  10. }
  11.  
  12. foreach($data as $id => $formularze)
  13. {
  14. foreach($formularze as $formularz)
  15. {
  16. // echo $formularze->{'post-buy-form-buyer-id'};
  17.  
  18. $wybierz_klienta_id = mysql_query("select * from klienci where id_allegro='".$formularz->{'post-buy-form-items'}->{'post-buy-form-it-id'}."'");
  19. $wybierz_klienta_id2=mysql_fetch_array($wybierz_klienta_id);
  20.  
  21. echo " > ".$formularz->{'post-buy-form-items'}->{'post-buy-form-it-id'}." ";
  22.  
  23. }
  24. }


niestety otrzymuje błąd Warning: Invalid argument supplied for foreach() in /home/onlin/public_html/api/import.php on line 200

proszę o pomoc

pozdrawiam
zamper
Fajnie że w 200 linijce biggrin.gif. Posprawdzaj co jest w zmiennych które dajesz foreach'owi jako parametry (zmienne pomiędzy nawiasami).
Przetłumacz sobie ten błąd w tłumaczu Google ;D
Swirek
no fakt błąd dotyczy linii
  1. foreach($data as $id2 => $formularze)


że podaje zły argument to ja wiem ale dlaczego jest zły?
zapewne coś nie tak robie przy zapisywaniu tablicy $data
buliq
A linia 200 to? Jasnowidzem jeszcze nie jestem.

Parser powiedział ci. Używasz zmiennej która nie jest tablicą przy foreach. Sprawdź typeof a najlepiej wypisz sobie wartość tablic print_r
Swirek
mam teraz kod

  1. $dane_formularzy_id=$client->doGetTransactionsIDs($_SESSION['sesja'], array($wybierz_aukcjes2["id_aukcji"]), 'seller');
  2.  
  3. $dane_formularzy = $client->doGetPostBuyFormsDataForSellers($_SESSION['sesja'], $dane_formularzy_id);
  4.  
  5. foreach($dane_formularzy as $formularze)
  6. {
  7.  
  8. //print_r($formularze);
  9.  
  10. foreach($formularze as $formularz)
  11. {
  12. //print_r($formularz);
  13.  
  14. $wybierz_klienta_id = mysql_query("select * from klienci where id_allegro='".$formularz->{'post-buy-form-it-id'}."'");
  15. $wybierz_klienta_id2=mysql_fetch_array($wybierz_klienta_id);
  16.  
  17. echo " > ".$formularz->{'post-buy-form-it-id'}." ";
  18.  
  19. }
  20. }


echo nic mi nie wyświetla

gdy użyje formułki
  1. $formularz[0]->{'post-buy-form-it-id'} lub $formularz["post-buy-form-items"]->{'post-buy-form-it-id'} lub $formularz["post-buy-form-items"][0]->{'post-buy-form-it-id'}
wyrzuci jeden rekord a przy kolejnym wywali błąd
  1. Fatal error: Cannot use object of type stdClass as array in /home/onl/public_html/api/import.php on line 203


tablica $formularz wygląda tak
  1.  
  2. 68550110Array ( [0] => stdClass Object ( [post-buy-form-it-quantity] => 3 [post-buy-form-it-amount] => 27 [post-buy-form-it-id] => 1653464725 [post-buy-form-it-title] => SREBRNY ŁAŃCUSZEK ĹťMIJKA 45CM 12MM PRĂ?BA 925 TANIO [post-buy-form-it-country] => 1 [post-buy-form-it-price] => 9 ) ) 20740043250stdClass Object ( [post-buy-form-adr-country] => 0 [post-buy-form-adr-street] => [post-buy-form-adr-postcode] => [post-buy-form-adr-city] => [post-buy-form-adr-full-name] => [post-buy-form-adr-company] => [post-buy-form-adr-phone] => [post-buy-form-adr-nip] => [post-buy-form-created-date] => ) stdClass Object ( [post-buy-form-adr-country] => 1 [post-buy-form-adr-street] => Kruszyn KrajeĹ?ski ul.Pfghf [post-buy-form-adr-postcode] => 86-005 [post-buy-form-adr-city] => BiaĹ?e BĹ?ota [post-buy-form-adr-full-name] => ANNA W [post-buy-form-adr-company] => [post-buy-form-adr-phone] => 6xxxxxx [post-buy-form-adr-nip] => [post-buy-form-created-date] => 2011-06-15 20:37:57 ) Pekao SA142595685ZakoĹ?czona2011-06-15 20:39:212011-06-15 20:39:214stdClass Object ( [post-buy-form-adr-country] => 0 [post-buy-form-adr-street] => [post-buy-form-adr-postcode] => [post-buy-form-adr-city] => [post-buy-form-adr-full-name] => [post-buy-form-adr-company] => [post-buy-form-adr-phone] => [post-buy-form-adr-nip] => [post-buy-form-created-date] => ) Array ( ) Array ( )
  3.  
zamper
  1. $formularz[0]->{'post-buy-form-it-id'} lub $formularz["post-buy-form-items"]->{'post-buy-form-it-id'} lub $formularz["post-buy-form-items"][0]->{'post-buy-form-it-id'}


Można wiedzieć co ty tu robisz? Używasz -> które jest do objektów a nie tablic! Do tablic się robi tak $tablica[3]['pole1'][1].
Swirek
tylko, że wewnątrz tablicy jak zwrócisz uwagę są obiekty

gdy wsadziłem to w zmienną var dump otrzymałem pierwszy id i kolejne wartości null null. czy to oznacza, że źle te dane wyciągam?

Przywracam temat bo dalej nie udało mi się rozwiązać problemu. błąd wyskakuje ponieważ 2 otrzymywana tablica jest pusta, ale dlaczego?

sad.gif
cycofiasz
  1. $dane_formularzy = $client->doGetPostBuyFormsDataForSellers($_SESSION['sesja'], $dane_formularzy_id);
  2.  
  3. foreach($dane_formularzy as $formularz)
  4. {
  5. echo '<br /><br /><hr/><b>Transakcja nr. '. $formularz -> {'post-buy-form-id'} .'</b>:<br /><br />';
  6.  
  7. foreach($formularz -> {'post-buy-form-items'} AS $aukcja)
  8. {
  9. echo 'Id aukcji: ' . $aukcja -> {'post-buy-form-it-id'} . '<br />';
  10. }
  11.  
  12. }


To chyba pomoże Ci się zorientować jak się dobierać do danych z soapClient.
Swirek
dzięki!!! przecież na logike trzebabyło mu wskazać skąd ma wyciągać dane aukcji
  1. $formularz -> {'post-buy-form-items'}

tego mi było trzeba jeszcze raz dziękuje

edit

i tak mi coś nie grało rozwiązałem to za pomocą jednego foreach wink.gif
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.