Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tablica wielowymiarowa do tabeli html
Forum PHP.pl > Forum > PHP
KarolOl
Witam,
Mam problem z wygenerowaniem tabeli html, z tablicy (którą sam wcześniej tworzę, może źle ją dobrałem).
Oto przykład:
  1. Array ( [2015-12-30] => Array ( ) [2015-12-31] => Array ( ) [2016-01-01] => Array ( ) [2016-01-02] => Array ( ) [2016-01-03] => Array ( ) [2016-01-04] => Array ( [Erema] => 859 ) [2016-01-05] => Array ( [Erema] => 897 [KRUSZARKA WEIMA] => 1205 ) [2016-01-06] => Array ( [Erema] => 1302 ) [2016-01-07] => Array ( [Erema] => 3409 ) [2016-01-08] => Array ( ) [2016-01-09] => Array ( ) [2016-01-10] => Array ( ) [2016-01-11] => Array ( ) )


Oczywiście tablica w zależności jaki zakres czasowy wygeneruje może zawierać wiele "miejsc" na których pracował dany człowiek ([erema] => ilosc kg za dzień), stąd głównie mój problem z uniwersalną funkcją.

Bez problemu wylicze ile mam kolumn w danej tablicy:
  1. $linie_unikalne=array_values(array_filter(array_unique($linie)));


Wyrysuje nagłówek, ale problem z treścią (bo chciałbym mieć taki układ że w wierszach daty, a w nagłówkach nazwy linii a na przecięciu masy.

Treść oczywiście mogę wyświetlić ale to nie to co chciałbym uzyskać bo klasycznie przerobie to tak na tabele:
  1. function recurse_array($values){
  2. $content = '';
  3. if( is_array($values) ){
  4. foreach($values as $key => $value){
  5. if( is_array($value) ){
  6. $content.="$key = ".recurse_array($value)."<br/>";
  7. }else{
  8. $content.="$key = $value ";
  9. }
  10.  
  11. }
  12. }
  13. return $content;
  14. }
  15.  
  16. $array_text = recurse_array($masy);
  17.  

  1. 2015-12-30 =
  2. 2015-12-31 =
  3. 2016-01-01 =
  4. 2016-01-02 =
  5. 2016-01-03 =
  6. 2016-01-04 = Erema = 859
  7. 2016-01-05 = Erema = 897 KRUSZARKA WEIMA = 1205
  8. 2016-01-06 = Erema = 1302
  9. 2016-01-07 = Erema = 3409
  10. 2016-01-08 =
  11. 2016-01-09 =
  12. 2016-01-10 =
  13. 2016-01-11 =


A chciałbym coś w stylu
  1. erema Kruszarka Weima
  2. 2015-12-30
  3. 2015-12-31
  4. .
  5. .
  6. .

Nie mam pomysłu jak to odwrócić, może ktoś mnie naprowadzi.
nospor
problem jest stosunkowo prosty.
Wpierw musisz miec tablice z miejscami.

$places = ['Erema', 'kruszarka']; //oczywiscie ta tablica wygenerowana dynamicznie

A potem lecisz sobie po datach i wyswietlasz
  1. <table>
  2. <tr><th>Puste TH</th><th>Tutaj TH z miejscami z tablicy $polaces</th></tr>
  3. <?php
  4. //a teraz lecisz po datach
  5. foreach ($linie as $date => $plcs){
  6. echo '<tr>';
  7. echo '<td>'.$date.'</td>';
  8. //teraz lecisz po tablicy z miejscami i jak jest, to wyswietlasz lub nie jak nie ma
  9. foreach ($places as $place) {
  10. echo '<td>';
  11. if (isset($plcs[$place]))
  12. echo $plcs[$place];
  13. else
  14. echo 'n/a';
  15. echo '</td>';
  16. }
  17. echo '</tr>';
  18. }
  19. ?>
  20. </table>
KarolOl
Czyli tak jak myślałem początkowo, zmienić formę zbierania tablicy. Muszę tylko przemyśleć czy mogę ją zmienić w ten sposób by uzyskać sumę wartości (kg) dla poszczególnych dni, wyciągam dane z kilku tabel i stąd taka forma tablicy była
  1. $masy[$timestamp_add_form][$linia]+=$waga_netto;

W tych miejscach sprawdzam jeszcze dwa razy czy wystepuje mnie interesujacy rekord i albo odejmuje go albo dodaje do tablicy
Na zasadzie
  1. $masy[$timestamp_add_form][$linia_tmp] -= ($waga_netto_poprzednika);
  2. $masy[$timestamp_add_form][$linia_tmp] += ($waga_netto_tmp);


I było to dla mnie wygodne bo uzyskuje od razu masę na dany dzień posegregowane linia. Ale postaram się to odwrócić tak jak piszesz.
nospor
Cytat
zmienić formę zbierania tablicy
yy... ale ja ci nie kazalem zmieniac zadnej formy.... Wszystko jak miales tak masz miec.
KarolOl
Dobra mam tablice:
  1. $places = ['Erema', 'kruszarka'];


Bo właśnie po to ją generuje by uzyskać nagłówki. Pojade teraz po dacie i powinno wyjść.

--
No tak własnie odpisałem w tym samym czasie jak ujrzałem na oczy.
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.