2015-09-09 17 views
5

Zobacz na dole, aby wyświetlić najnowszy kod ...Jak utworzyć tabelę HTML z tablicą wielowymiarową za pomocą SMARTY?

Tam, gdzie najbardziej walczę, mam do czynienia z tym specyficznym rodzajem macierzy. Zobacz poniżej. Wyświetlane za pomocą var_dump w PHP. Poniżej zobaczysz 3 zestawy wartości. Chcę mieć możliwość utworzenia trzech kolumn z tymi danymi. Wartości następnie wypełniają wiersze.

array(3) { [0]=> array(28) { [0]=> string(4) "2160" [1]=> string(5) "63800" [2]=> string(6) "175820" [3]=> string(6) "234823" [4]=> string(6) "253080" [5]=> string(6) "256680" [6]=> string(6) "258760" [7]=> string(6) "258840" [8]=> string(6) "259560" [9]=> string(6) "258480" [10]=> string(6) "258550" [11]=> string(6) "258660" [12]=> string(6) "258480" [13]=> string(6) "258300" [14]=> string(6) "256140" [15]=> string(6) "257770" [16]=> string(6) "255960" [17]=> string(6) "255780" [18]=> string(6) "252520" [19]=> string(6) "253980" [20]=> string(6) "252540" [21]=> string(6) "250560" [22]=> string(6) "245700" [23]=> string(6) "253080" [24]=> string(6) "248580" [25]=> string(6) "248860" [26]=> string(6) "249660" [27]=> string(6) "246780" } [1]=> array(34) { [0]=> array(28) { [0]=> string(4) "2160" [1]=> string(5) "63800" [2]=> string(6) "175820" [3]=> string(6) "234823" [4]=> string(6) "253080" [5]=> string(6) "256680" [6]=> string(6) "258760" [7]=> string(6) "258840" [8]=> string(6) "259560" [9]=> string(6) "258480" [10]=> string(6) "258550" [11]=> string(6) "258660" [12]=> string(6) "258480" [13]=> string(6) "258300" [14]=> string(6) "256140" [15]=> string(6) "257770" [16]=> string(6) "255960" [17]=> string(6) "255780" [18]=> string(6) "252520" [19]=> string(6) "253980" [20]=> string(6) "252540" [21]=> string(6) "250560" [22]=> string(6) "245700" [23]=> string(6) "253080" [24]=> string(6) "248580" [25]=> string(6) "248860" [26]=> string(6) "249660" [27]=> string(6) "246780" } [1]=> string(4) "2160" [2]=> string(5) "63800" [3]=> string(6) "175820" [4]=> string(6) "234823" [5]=> string(6) "253080" [6]=> string(6) "256680" [7]=> string(6) "258760" [8]=> string(6) "258840" [9]=> string(6) "259560" [10]=> string(6) "258480" [11]=> string(6) "258550" [12]=> string(6) "258660" [13]=> string(6) "258480" [14]=> string(6) "258300" [15]=> string(6) "256140" [16]=> string(6) "257770" [17]=> string(6) "255960" [18]=> string(6) "255780" [19]=> string(6) "252520" [20]=> string(6) "253980" [21]=> string(6) "252540" [22]=> string(6) "250560" [23]=> string(6) "245700" [24]=> string(6) "253080" [25]=> string(6) "248580" [26]=> string(6) "248860" [27]=> string(6) "249660" [28]=> string(6) "246780" [29]=> string(4) "2150" [30]=> string(5) "63800" [31]=> string(6) "175420" [32]=> string(6) "234843" [33]=> string(6) "253080" } [2]=> array(41) { 

[0]=> array(28) { [0]=> string(4) "2160" [1]=> string(5) "63800" [2]=> string(6) "175820" [3]=> string(6) "234823" [4]=> string(6) "253080" [5]=> string(6) "256680" [6]=> string(6) "258760" [7]=> string(6) "258840" [8]=> string(6) "259560" [9]=> string(6) "258480" [10]=> string(6) "258550" [11]=> string(6) "258660" [12]=> string(6) "258480" [13]=> string(6) "258300" [14]=> string(6) "256140" [15]=> string(6) "257770" [16]=> string(6) "255960" [17]=> string(6) "255780" [18]=> string(6) "252520" [19]=> string(6) "253980" [20]=> string(6) "252540" [21]=> string(6) "250560" [22]=> string(6) "245700" [23]=> string(6) "253080" [24]=> string(6) "248580" [25]=> string(6) "248860" [26]=> string(6) "249660" [27]=> string(6) "246780" } 

[1]=> array(34) { [0]=> array(28) { [0]=> string(4) "2160" [1]=> string(5) "63800" [2]=> string(6) "175820" [3]=> string(6) "234823" [4]=> string(6) "253080" [5]=> string(6) "256680" [6]=> string(6) "258760" [7]=> string(6) "258840" [8]=> string(6) "259560" [9]=> string(6) "258480" [10]=> string(6) "258550" [11]=> string(6) "258660" [12]=> string(6) "258480" [13]=> string(6) "258300" [14]=> string(6) "256140" [15]=> string(6) "257770" [16]=> string(6) "255960" [17]=> string(6) "255780" [18]=> string(6) "252520" [19]=> string(6) "253980" [20]=> string(6) "252540" [21]=> string(6) "250560" [22]=> string(6) "245700" [23]=> string(6) "253080" [24]=> string(6) "248580" [25]=> string(6) "248860" [26]=> string(6) "249660" [27]=> string(6) "246780" } [1]=> string(4) "2160" [2]=> string(5) "63800" [3]=> string(6) "175820" [4]=> string(6) "234823" [5]=> string(6) "253080" [6]=> string(6) "256680" [7]=> string(6) "258760" [8]=> string(6) "258840" [9]=> string(6) "259560" [10]=> string(6) "258480" [11]=> string(6) "258550" [12]=> string(6) "258660" [13]=> string(6) "258480" [14]=> string(6) "258300" [15]=> string(6) "256140" [16]=> string(6) "257770" [17]=> string(6) "255960" [18]=> string(6) "255780" [19]=> string(6) "252520" [20]=> string(6) "253980" [21]=> string(6) "252540" [22]=> string(6) "250560" [23]=> string(6) "245700" [24]=> string(6) "253080" [25]=> string(6) "248580" [26]=> string(6) "248860" [27]=> string(6) "249660" [28]=> string(6) "246780" [29]=> string(4) "2150" [30]=> string(5) "63800" [31]=> string(6) "175420" [32]=> string(6) "234843" [33]=> string(6) "253080" } [2]=> string(4) "2160" [3]=> string(5) "63800" [4]=> string(6) "175820" [5]=> string(6) "234823" [6]=> string(6) "253080" [7]=> string(6) "256680" [8]=> string(6) "258760" [9]=> string(6) "258840" [10]=> string(6) "259560" [11]=> string(6) "258480" [12]=> string(6) "258550" [13]=> string(6) "258660" [14]=> string(6) "258480" [15]=> string(6) "258300" [16]=> string(6) "256140" [17]=> string(6) "257770" [18]=> string(6) "255960" [19]=> string(6) "255780" [20]=> string(6) "252520" [21]=> string(6) "253980" [22]=> string(6) "252540" [23]=> string(6) "250560" [24]=> string(6) "245700" [25]=> string(6) "253080" [26]=> string(6) "248580" [27]=> string(6) "248860" [28]=> string(6) "249660" [29]=> string(6) "246780" [30]=> string(4) "2150" [31]=> string(5) "63800" [32]=> string(6) "175420" [33]=> string(6) "234843" [34]=> string(6) "253080" [35]=> string(4) "2110" [36]=> string(5) "63800" [37]=> string(6) "175820" [38]=> string(6) "234823" [39]=> string(6) "252180" [40]=> string(6) "256680" } } 

$flock jest równy przypisanej zmiennej do tablicy. $numFlocks wynosi tablicy 1,2,3

<table> 
{section name=stand loop=$numFlocks}  

    <tr> 
     {foreach from=$numFlocks item=columns} 
      <td>{$flock[stand].$columns}</td> 
     {/foreach} 
    </tr> 
{/section} 

</table> 

Powyższy tworzy tablicę jak poniżej.

Array 2160 63800

To jest daleko, czego szukam. Oczywiście dostaję moje trzy kolumny, ale nie rozumiem, dlaczego otrzymuję tylko trzy rzędy i wszystkie wartości są błędne.

Poniżej znajduje się mój kod PHP, który tworzy powyższą tablicę $ flock.

for ($x = 1; $x <= $numFlocksTot; $x++) { 

    $result1 = mysql_query("SELECT Amount_eggs FROM farm_weekly WHERE Flock_id = '" . $x . "' AND Client_id = '" . $_SESSION["id"] . "'", $connection) or die("Query failed : " . mysql_error()); 

    while ($line1 = mysql_fetch_assoc($result1)) 
    { 
     $val[] = $line1["Amount_eggs"]; 
    } 

    $flock[] = array_merge($flock, $val); 
} 

Naprawiłem mojego PHP,

for ($x = 1; $x <= $numFlocksTot; $x++) { 

$Q = "SELECT units FROM farm_weekly WHERE Flock_id = '" . $x . "' AND Client_id = '" . $_SESSION["id"] . "'"; 

$result1 = mysql_query($Q, $connection) or die("Query failed : " .  mysql_error()); 

while ($line1 = mysql_fetch_assoc($result1)) 
{ 
    $val = $line1["units"]; 
    array_push($flock, $val); 
} 

    array_push($result, $flock); 
    unset($flock); 
    $flock[] = array(); 
} 

VAR_EXPORT wypluwa:

array (0 => array (), 1 => array (0 => array (), 1 => '2160', 2 => '63800', 3 => '175820', 4 => '234823', 5 => '253080', 6 => '256680', 7 => '258760', 8 => '258840', 9 => '259560', 10 => '258480', 11 => '258550', 12 => '258660', 13 => '258480', 14 => '258300', 15 => '256140', 16 => '257770', 17 => '255960', 18 => '255780', 19 => '252520', 20 => '253980', 21 => '252540', 22 => '250560', 23 => '245700', 24 => '253080', 25 => '248580', 26 => '248860', 27 => '249660', 28 => '246780',), 2 => array (0 => array (), 1 => '2150', 2 => '63800', 3 => '175420', 4 => '234843', 5 => '253080',), 3 => array (0 => array (), 1 => '2110', 2 => '63800', 3 => '175820', 4 => '234823', 5 => '252180', 6 => '256680',),) 

Jednak moja SMART Table jest nadal powodujące problemy:

<tr> 
    {foreach from=$numFlocks item=columns} 
    {section loop=$flock name=unit} 
     <td>{$flock[unit].$columns}</td> 
    {/section} 
    {/foreach} 
</tr> 

Powyższy próba daje mi tylko jeden wiersz z 10 kolumny. Pierwsza kolumna jest pusta, następnie pierwsze trzy pozycje dla każdej wewnętrznej tablicy, ale potem się zatrzymuje.

+0

macierzy wygląda dość dziwnie po edycji –

+0

Tak tak, dziękuję. Dodałem mój kod PHP, który tworzy tablicę, aby podać więcej szczegółów. – Mick

+1

Tablica będzie łatwiejsza do debugowania, jeśli użyjesz 'var_export'. –

Odpowiedz

0

SMART/HTML

<th>Blank</th> 
    {foreach from=$numFlocks item=foo} 
<th>Flock {$foo}</th> 
    {/foreach} 
</tr> 

{section loop=$flock[1] name=unit} 
    <tr {if $smarty.section.unit.first}style="display:none"{/if}> 
{foreach from=$flock item=foo} 
    <td>{$foo[unit]}</td> 
{/foreach} 
    </tr> 
{/section} 

kod PHP

for ($x = 1; $x <= $numFlocksTot; $x++) { 

$Q = "SELECT Amount_eggs FROM farm_weekly WHERE Flock_id = '" . $x . "' AND Client_id = '" . $_SESSION["id"] . "'"; 

$result1 = mysql_query($Q, $connection) or die("Query failed : " . mysql_error()); 

while ($line1 = mysql_fetch_assoc($result1)) 
{ 
    $val = $line1["Amount_eggs"]; 
    array_push($flock, $val); 
} 

array_push($result, $flock); 
unset($flock); 
$flock[] = array(); 
} 
0
{$flock[stand].$columns} 

Na pierwszy rzut oka zmienna $columns jest używana nieprawidłowo.
Używasz go jako nazwy pola, ale wartości, które zawiera $columns, mogą być również tablicami i niekoniecznie odpowiadają rzeczywistym nazwom pól.

+0

Jakieś dalsze komentarze lub sugestie?Czy tablica wygląda dobrze, aby osiągnąć to, czego chcę? – Mick

+0

sama tablica jest właśnie tym, czym jest. Nie znam tła danych, ich reprezentacji, jaka jest (możliwa) logika, która za tym stoi. Mogę podać ci przykład dla tego zestawu danych, ale to może ci nie pomóc. – Lexib0y

+0

Dane powyżej opisują różne lata w tym przypadku trzy lata. Każda wartość w ciągu roku równa się jednostkom tygodniowo. Zasadniczo chcę pokazać tabelę, w której kolumny to lata, a wiersze to tygodnie, a wszystkie komórki pokazują jednostki tego tygodnia. Wszystkie tygodnie zaczynają się w tym samym tygodniu, ale mogą nie zakończyć tego samego. Niektóre kolumny mogą mieć więcej wierszy niż inne. – Mick

Powiązane problemy