Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] tablica wielowymiarowa
Forum PHP.pl > Forum > Przedszkole
bemol
Witam, mam wielowymiarową tablicę i nie bardzo mogę sobie poradzić z wyświetleniem jej.

Jest ona przesyłana metodą POST i wygląda tak (mniej wiecej):

Array {

[Field20] = > [1] i [2] i [3] ... (dowolna ilość)
[Field23] = > [1] i [2] i [3] ... (dowolna ilość)
[Field30] = > [1] i [2] i [3] ... (dowolna ilość)
[Field31] = > [1] i [2] i [3] ... (dowolna ilość)
[Field32] = > [1] i [2] i [3] ... (dowolna ilość)
[Hours] = > [1] { [1] i [2] i [3] ... (liczba dni miesiąca) } i [2] {} i [3] {} (dowolna ilość)
[Status] = > [1] { [1] i [2] i [3] ... (liczba dni miesiąca) } i [2] {} i [3] {} (dowolna ilość)
}

a teraz tak bardziej po ludzku. Zaznaczam sobie dowolną ilość pracowników z bazy danych (od 1 nawet do 100), po przesłaniu formularza z pracownikami wyświetla mi się 'karta' pracownika w której znajduje się:
[Field20] - stawka za godzinę
[Field23]- Współczynnik kwalifikacyjny w stosunku do najniższej stawki
[Field30] - Premia za stanowisko (w zł)
itd.
oraz:
['Hours'] gdzie mam tyle inputów ile jest dni w danym miesiącu (w każdym z nich wpisuję liczbę przepracowanych godzin pracownika)
lub wybieram jeden z radiobuttonów (zwolnienie lekarskie, urlop lub niepracowal)
Stąd pierwszy z indeksów tablicy jest identyfikatorem pracownika, a druga jest dniem miesiąca.

Jeśli coś jest niezrozumiałe proszę pisać.

A oto jedna z prób, która nie wyszła
  1. <?php
  2. foreach ($_POST as $Field => $Fields){
  3.  echo $Field.'<br /><br />';
  4.    for ($i=0;$i<count($Fields);$i++) {
  5.      echo $Fields[$i].'<br />';
  6.    }
  7.  }
  8. ?>


Proszę o pomoc
erix
  1. <?php
  2. echo $Fields[$i].'<br />';
  3. ?>

Przecież masz indeksy tekstowe, a nie liczbowe. [;
bemol
Tak, ale indexy tekstowe są pierwsze, które wywala pętla foreach, a kolejne są liczbowe, np:
Hours[2][22] itp.

Właściwie ten kod działa, ale przy Hours wyświetla mi Array sad.gif wychodzi na to ze musze jeszcze w pętli for zrobić kolejną pętle z warunkiem if dla Hours i Status.

pomozcie, bo mecze sie od wczoraj a efektu nie widac :/
Darti
Ja to sobie zawsze takie dane przysłane POSTem wyświetlam za pomocą print_r a później to już z górki - mam ściągę jak te tablice rozgryźć
p.s. może pokaż jak ta tablica wygląda wyświetlona przez print_r (np dla jednego pracownika)
bemol
W takim razie tak mniej więcej wygląda print_r($_POST) dla dwóch pracowników:
  1. <?php
  2. Array ( [Field20] => Array ( [1] => 4,00 [2] => ) [Field23] => Array ( [1] => 1,00 [2] => 1,00 ) [Field30] => Array ( [1] => 2.130,00 [2] => ) [Field31] => Array ( [1] => 132 [2] => ) [Field32] => Array ( [1] => 123,00 [2] => ) [Hours] => Array ( [1] => Array ( [1] => 10 [2] => 10 [3] => 10 [4] => 11 [5] => 11 [6] => 11 [7] => 11 [9] => 11 [10] => 11 [11] => 11 [12] => 12 [13] => 12 [14] => 12 [15] => 12 [16] => 12 [17] => 12 [18] => 12 [19] => 12 [20] => 12 [21] => 12 [22] => 12 [23] => 12 [24] => 12 [25] => 12 [26] => 12 [27] => 12 [28] => 12 [29] => 12 [30] => 12 [31] => 12 ) [2] => Array ( [22] => 12 [23] => 12 [24] => 12 [25] => 12 [26] => 12 [27] => 12 [28] => 12 [29] => 12 [30] => 12 [31] => 12 ) ) [Status] => Array ( [1] => Array ( [1] => Working [2] => Working [3] => Working [4] => Working [5] => Working [6] => Working [7] => Working [8] => L4 [9] => Working [10] => Working [11] => Working [12] => Working [13] => Working [14] => Working [15] => Working [16] => Working [17] => Working [18] => Working [19] => Working [20] => Working [21] => Working [22] => Working [23] => Working [24] => Working [25] => Working [26] => Working [27] => Working [28] => Working [29] => Working [30] => Working [31] => Working ) [2] => Array ( [1] => Notworking [2] => Notworking [3] => U [4] => U [5] => L4 [6] => L4 [7] => L4 [8] => L4 [9] => U [10] => U [11] => U [12] => U [13] => U [14] => Notworking [15] => Notworking [16] => Notworking [17] => Notworking [18] => Notworking [19] => U [20] => U [21] => U [22] => Working [23] => Working [24] => Working [25] => Working [26] => Working [27] => Working [28] => Working [29] => Working [30] => Working [31] => Working ) ) )
  3. ?>


część danych dla 2 pracownika nie zostało wypełnionych (Field20,[23 - domyślny 1,00],30,31,32)
Darti
  1. <?php
  2. $o ='';
  3. foreach ($_POST['Field20'] as $key => $value){
  4.    $o.= 'Field20: '.$value.'<br>';
  5.    $o.= 'Field23: '.$_POST['Field23'][$key].'<br>';
  6.    $o.= 'Field30: '.$_POST['Field30'][$key].'<br>';
  7.    $o.= 'Field31: '.$_POST['Field31'][$key].'<br>';
  8.    $o.= 'Field32: '.$_POST['Field32'][$key].'<br>';
  9.    $o.='<br>HOURS:<br>';
  10.    foreach ($_POST['Hours'][$key] as $dzien=>$godzin){
  11.        $o.= $dzien .': '.$godzin. 'godzin'.'<br>';
  12.    }
  13.    foreach ($_POST['Status'][$key] as $dzien=>$status){
  14.        $o.= $dzien .': '.$status.'<br>';
  15.    }
  16.    
  17.    $o.= '<br>----------------------------------------<br>';    
  18. }
  19. echo $o;
  20. ?>
bemol
kurcze, kod wydawał mi się poprawny i myślalem ze juz bedzie dobrze, a to wynik:
Kod
<?php
Warning: Invalid argument supplied for foreach() in /home/***/clearing.php on line 62

Warning: Invalid argument supplied for foreach() in /home/***/clearing.php on line 65

Warning: Invalid argument supplied for foreach() in /home/***/clearing.php on line 62

Warning: Invalid argument supplied for foreach() in /home/***/clearing.php on line 65
Field20: 3,00
Field23:
Field30:
Field31:
Field32:

HOURS:

----------------------------------------
Field20: 3,00
Field23:
Field30:
Field31:
Field32:

HOURS:

----------------------------------------
?>


Chodzi o
  1. <?php
  2. foreach ($_POST['Hours'][$pracownik] as $dzien=>$godzin){
  3. ?>

i
  1. <?php
  2. foreach ($_POST['Status'][$pracownik] as $dzien=>$status){
  3. ?>
Darti
skopiuj i wklej jeszcze raz .... za szybki kolego jestes smile.gif
bemol
działa wyśmienicie smile.gif duży plus smile.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.