Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP i Allegto błąd w kodzie
Capitanjack
post 21.10.2015, 15:42:29
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.10.2015

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


Witam wszystkich na forum smile.gif

Głowię się z tym tematem już dobre 2 godziny i nie mam pomysłu co robić dalej, mianowicie:

Modyfikuję wtyczkę pod automatyczne wystawianie produktów ze sklepu internetowego(wordpress) do serwisu allegro.
Utknąłem w miejscu kiedy skrypt php ma skopiować dodatkowy opis produktu z bazy danych do opisu aukcji.

  1. //pobieranie podstawowych danych o produkcie
  2. $dodatkowa_zmienna1 = $prod['post_content'];
  3. $dodatkowa_zmienna2 = $meta['yikes_woo_products_tabs'];
  4. $p['description'] = $dodatkowa_zmienna1.'<hr>'.$dodatkowa_zmienna2;


Wpis z bazy danych dla $dodatkowa_zmienna2 wygląda następująco:

  1. (12612, 2018, 'yikes_woo_products_tabs', 'a:1:{i:0;a:3:{s:5:"title";s:10:"Treść";s:2:"id";s:14:"tab-treść";s:7:"content";s:962:"dodatkowy opis produktu.\r\n\r\n&nbsp;";}}'),


Chcę skopiować tylko "dodatkowy opis produktu". $dodatkowa_zmienna1 wyświetla się już na aukcji poprawnie.

Problem polega na tym, że $dodatkowa_zmienna2 wyświetla mi się na aukcji tak: 'a:1:{i:0;a:3:{s:5:"title";s:10:"Treść";s:2:"id";s:14:"tab-treść";s:7:"content";s:962:"dodatkowy opis produktu.\r\n\r\n&nbsp;";}}

Próbowałem zamienić

  1. $dodatkowa_zmienna2 = $meta['yikes_woo_products_tabs'];


na

  1. $dodatkowa_zmienna2 = $prod['content'];


ale bez skutku.

Jest mi ktoś w stanie pomóc i wytłumaczyć co robię źle? smile.gif

Może się komuś ta informacja przyda:

Kod pochodzi z tego samego pliku php

  1. $sql = "SELECT p.* FROM ${dbp}posts p
  2. WHERE p.ID IN (".(implode(",", $request['products_id'])).")";
  3.  
  4. $result = mysql_query($sql);
  5. while($prod = mysql_fetch_assoc($result))
  6. {
  7. $meta_all = mysql_query("SELECT meta_key, meta_value FROM ${dbp}postmeta pm2 WHERE post_id = '".$prod['ID']."'");
  8. $meta = array();
  9. while($prod_meta = mysql_fetch_assoc($meta_all))
  10. {
  11. $meta[$prod_meta['meta_key']] = $prod_meta['meta_value'];
  12. }


Ten post edytował Capitanjack 21.10.2015, 16:09:55
Go to the top of the page
+Quote Post
viking
post 21.10.2015, 16:37:57
Post #2





Grupa: Zarejestrowani
Postów: 6 366
Pomógł: 1115
Dołączył: 30.08.2006

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


Dane które posiadasz to zserializowana tablica. unserialize() i dopiero to przekazuj do Allegro.


--------------------
Go to the top of the page
+Quote Post
Capitanjack
post 21.10.2015, 17:22:53
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.10.2015

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


W takim razie dodałem coś takiego:

  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);


Niestety zamiast opisu wyświetla się tylko "Array"

Całość kodu:

  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. $p = array();
  3. $p['name'] = $prod['post_title'];
  4. $dodatkowa_zmienna1 = $prod['post_content'];
  5. $dodatkowa_zmienna2 = $meta['yikes_woo_products_tabs'];
  6. $p['description'] = $dodatkowa_zmienna1.'<hr>'.$dodatkowa_zmienna2;
Go to the top of the page
+Quote Post
kapslokk
post 21.10.2015, 17:52:09
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Wyświetla się Array bo w zmiennej $meta['yikes_woo_products_tabs'] po unserialize masz tablicę. Zrób sobie var_dump($meta['yikes_woo_products_tabs']) i wszystko chyb a będzie jasne smile.gif
Go to the top of the page
+Quote Post
Capitanjack
post 21.10.2015, 19:04:11
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.10.2015

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


Grzebie i grzebie w tym kodzie, ale nie za bardzo rozumiem na jakiej zasadzie mam sobie "zrobić" var_dump($meta['yikes_woo_products_tabs']) ? smile.gif

Próbowałem to gdzieś dodać, ale cały czas wyskakuje mi błąd.
Go to the top of the page
+Quote Post
kapslokk
post 21.10.2015, 19:15:06
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. var_dump($meta['yikes_woo_products_tabs']);exit;


Sprawdzasz sobie, które pole tej tablicy chcesz przypisać do $dodatkowa_zmienna2 i później robisz:

  1. $dodatkowa_zmienna2 = $meta['yikes_woo_products_tabs']['>>>tutaj wstawiasz index<<<'];
Go to the top of the page
+Quote Post
Capitanjack
post 21.10.2015, 19:46:10
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.10.2015

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


kapslokk, wybacz mi moją niewiedzę, ale nie mam na codzień styczności z PHP i dopiero w nim raczkuję wink.gif

W jaki sposób sprawdzić/przypisać ten index? Przeszukałem Google, ale niestety na próżno.
Go to the top of the page
+Quote Post
kapslokk
post 21.10.2015, 19:53:16
Post #8





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


var_dump wyświetli Ci zawartość tablicy np:
Kod
array (size=2)
  'x' => string 'y' (length=1)
  'y' => string 'z' (length=1)


U siebie mam włączonego xdebuga, u Ciebie może być troszkę inaczej, ale ogólnie bardzo podobnie.
W każdym razie jeżeli chcesz aby w $dodatkowa_zmienna2 znalazła się wartość y to robisz $meta['yikes_woo_products_tabs']['x'], jeżeli z to $meta['yikes_woo_products_tabs']['y'] i analogicznie...

PS. wybaczam biggrin.gif

Ten post edytował kapslokk 21.10.2015, 19:56:46
Go to the top of the page
+Quote Post
Capitanjack
post 21.10.2015, 21:04:36
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.10.2015

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


I właśnie z wyświetleniem var_dump jest problem, bo całość działa na zasadzie:

plik.php pobierający inforamcje o produktach ze sklepu -> osobna platforma integrująca sklep z allegro -> aukcja na allegro

Gdy ma mi wyświetlić var_dump nie chcę mnie przepuścić dalej do wystawienia aukcji "Wystąpił błąd przy pobieraniu produktów z bazy danych sklepu" (komunikat z platformy zarządzania)

Aktualnie kod wygląda tak:

  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. var_dump($meta['yikes_woo_products_tabs']);exit;
  3. $p = array();
  4. $p['name'] = $prod['post_title'];
  5. $p['model'] = $meta['_sku'];
  6. $dodatkowa_zmienna1 = $prod['post_content'];
  7. $dodatkowa_zmienna2 = $meta['yikes_woo_products_tabs'];
  8. $p['description'] = $dodatkowa_zmienna1.'<hr>'.$dodatkowa_zmienna2;
  9. $p['weight'] = $meta['_weight'];


Gdy usunę
  1. var_dump($meta['yikes_woo_products_tabs']);exit;
aukcja wyświetla się normalnie tylko zamiast $dodatkowa_zmienna2 wyświetla się Array

Kiedy usunę
  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. var_dump($meta['yikes_woo_products_tabs']);exit;
aukcja wyświetla się tak jak ma, jednak $dodatkowa_zmienna 2 jest w postaci zserializowanej.

Jakieś pomysły co robić?

Dzięki za cierpliwość biggrin.gif
Go to the top of the page
+Quote Post
IProSoft
post 22.10.2015, 15:54:03
Post #10





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Jeśli chcesz sprawdzić co zawiera ta tablica to dodaj:
  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. error_log( serialize($meta['yikes_woo_products_tabs'], 3, 'log.log' )

Choć jesli widzisz postać zserializowaną to powinineś to wiedzieć.

Wybierz klucz jaki chcesz wyświetlać i wpisz np
  1. $meta['yikes_woo_products_tabs']

Innym wyjściem jest:
  1. $meta['yikes_woo_products_tabs'] = unserialize($meta['yikes_woo_products_tabs']);
  2. $dodatkowa_zmienna2 = implode( '<>br /', $meta['yikes_woo_products_tabs'] );



--------------------
Manual prawdę Ci powie.
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: 17.05.2024 - 16:15