Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapisaniem tablicy do bazy danych
Forum PHP.pl > Forum > PHP
ZenekN
Hej mam problem z zapisaniem tablicy do bazy danych, otrzymuję w takim wyniku problemem dla mnie jest to że ilość produktów w tablicy może być nieograniczona.

  1. 'product' => array(
  2. 'iloval' => array(
  3. (int) 0 => '1',
  4. (int) 1 => '1'
  5. ),
  6. 'productidval' => array(
  7. (int) 0 => '4794',
  8. (int) 1 => '3976'
  9. ),
  10. )


a chciałbym ją przetransformować poprzez pętle do takiej postaci

  1. $array = array(
  2.  
  3. 'iloval' => $zmienna1,
  4. 'productidval' => $zmienna2
  5. ));


$zmienna1 ma zawierać wartości iloval czyli (1, 1)
natomiast zmienna2 ma zawierać wartości productidval czyli (4794, 3976)
nospor
Byloby naprawde milo, jakbys raczył napisac co mają zawierac $zmienna1 oraz $zmienna2
daWeb
  1. $items = array(
  2. 'product' => array(
  3. 'iloval' => array(
  4. 0 => '1',
  5. 1 => '1'
  6. ),
  7. 'productidval' => array(
  8. 0 => '4794',
  9. 1 => '3976'
  10. ),
  11. ));
  12. $newOrder = array();
  13.  
  14. foreach($items['product'] as $name => $value) {
  15.  
  16. $newOrder[$name] = array_sum($value);
  17. }
  18.  
ZenekN
Hej dzięki za pomoc ale nie do końca o to mi chodziło

problem mam taki że gdy zapisuje do bazy danych

to zapis w bazie danych wygląda w ten sposób




a chciałbym aby wyglądał w ten sposób



daWeb
bez SQL'a nic nie poradzimy.
ZenekN
Za chwilę wrzucę ale dzieje się to z powodu że pierwszy jest (1, null) (1, null) a drugi (null, 4794) (null, 3976)
nospor
Cytat
że pierwszy jest (1, null) (1, null) a drugi (null, 4794) (null, 3976)
Tyle to sie mozna bylo domyslec i bez kodu smile.gif
daWeb
Wrzuć konkretny przykład, tak żeby było wiadomo jak ma wyglądać tablica którą chcesz przetworzyć w pętli i skąd ona pochodzi.
ZenekN
  1. /app/Controller/CartsController.php (line 118)
  2.  
  3. 'Orderproduct' => array(
  4. 'iloval' => '1',
  5. 'productidval' => null
  6. )
  7. )
  8.  
  9. Notice (8): Undefined index: productidval [APP/Controller/CartsController.php, line 114]
  10.  
  11. /app/Controller/CartsController.php (line 118)
  12.  
  13. 'Orderproduct' => array(
  14. 'iloval' => '1',
  15. 'productidval' => null
  16. )
  17. )
  18.  
  19. Notice (8): Undefined index: productidval [APP/Controller/CartsController.php, line 114]
  20.  
  21. /app/Controller/CartsController.php (line 118)
  22.  
  23. 'Orderproduct' => array(
  24. 'iloval' => '1',
  25. 'productidval' => null
  26. )
  27. )
  28.  
  29. Notice (8): Undefined index: iloval [APP/Controller/CartsController.php, line 113]
  30.  
  31. /app/Controller/CartsController.php (line 118)
  32.  
  33. 'Orderproduct' => array(
  34. 'iloval' => null,
  35. 'productidval' => '4794'
  36. )
  37. )
  38.  
  39. Notice (8): Undefined index: iloval [APP/Controller/CartsController.php, line 113]
  40.  
  41. /app/Controller/CartsController.php (line 118)
  42.  
  43. 'Orderproduct' => array(
  44. 'iloval' => null,
  45. 'productidval' => '3976'
  46. )
  47. )
  48.  
  49. Notice (8): Undefined index: iloval [APP/Controller/CartsController.php, line 113]
  50.  
  51. /app/Controller/CartsController.php (line 118)
  52.  
  53. 'Orderproduct' => array(
  54. 'iloval' => null,
  55. 'productidval' => '2108'
  56. )
  57. )
  58.  
  59.  
  60.  


Czyli teraz pytanie jak złączyć te tablice smile.gif
nospor
Pokaz w jaki sposob ty te tablice budujesz... Tam jest klucz do rozwiązania "zagadki"
ZenekN
  1. if($this->request->data){
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. foreach($this->request->data['product']['iloval'] as $arrk => $arrv){
  10.  
  11.  
  12. $tablica[] = array(
  13.  
  14. 'iloval' => $arrv
  15. );
  16.  
  17.  
  18.  
  19.  
  20. }
  21.  
  22. foreach($this->request->data['product']['productidval'] as $arrk => $arrv){
  23.  
  24.  
  25. $tablica[] = array(
  26.  
  27. 'productidval' => $kk
  28. );
  29.  
  30.  
  31.  
  32.  
  33. }
  34.  
  35.  
  36.  
  37.  
  38. foreach($tablica as $tablicak){
  39.  
  40. $data =array(
  41. 'Orderproduct' => array(
  42.  
  43. 'iloval' => $tablicak['iloval'],
  44. 'productidval' => $tablicak['productidval']
  45. )
  46.  
  47. );
  48.  
  49.  
  50. }
  51.  
  52.  
  53.  
  54. }
daWeb
Dlaczego rozdrabniasz to na tyle foreach? to można zrobić w jednym miejscu
nospor
  1. foreach($this->request->data['product']['iloval'] as $arrk => $arrv){
  2.  
  3.  
  4.  
  5.  
  6.  
  7. $tablica[] = array(
  8.  
  9.  
  10.  
  11. 'iloval' => $arrv,
  12. 'productidval' => $this->request->data['product']['productidval'][$arrk]
  13.  
  14. );
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24. }

i juz
ZenekN
ok działa, ja zaś robiłem z to rozwiązanie z iteracja $i++ i tutaj mnie trop zgubił a wystarczyło pobrać klucz tablicy wink.gif
nospor
Ok
A na przyszlosc podawaj od razu właściwy kod a nie trzeba przez 10 postow go z Ciebie wyciągać. No to żadna frajda.
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.