Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tablica wielowymiarowa do tabeli html, Wygenerowanie tabeli z tablicy wielowymiarowej, ustawienie kolumn
KarolOl
post 12.01.2016, 14:31:48
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.07.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post 12.01.2016, 15:33:10
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KarolOl
post 12.01.2016, 15:54:50
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.07.2014

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


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.
Go to the top of the page
+Quote Post
nospor
post 12.01.2016, 15:57:24
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
zmienić formę zbierania tablicy
yy... ale ja ci nie kazalem zmieniac zadnej formy.... Wszystko jak miales tak masz miec.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
KarolOl
post 12.01.2016, 15:58:25
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.07.2014

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


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.

Ten post edytował KarolOl 12.01.2016, 16:00:16
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: 13.06.2025 - 05:52