2015-09-09 10 views
5

Vedere il fondo per visualizzare il codice più recente ...Come creare una tabella HTML con un array multidimensionale con SMARTY?

Dove mi trovo a lottare di più si tratta di questo specifico tipo di array. Vedi sotto. Visualizzato con var_dump in PHP. Sotto vedrai 3 set di valori. Voglio essere in grado di creare tre colonne con questi dati. I valori quindi riempiono le righe.

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 è uguale alla variabile assegnata alla matrice. $numFlocks è uguale a una matrice di 1,2,3

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

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

</table> 

che questo produce una tabella come la seguente.

Array 2160 63800

Questo è lontano quello che sto cercando. Ovviamente sto ottenendo le mie tre colonne ma non capisco perché sto ottenendo solo tre righe e i valori sono tutti sbagliati.

Di seguito è il mio codice PHP che crea l'array sopra $ 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); 
} 

ho fissato il mio 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 sputa fuori:

problemi
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',),) 

Tuttavia la mia tabella di SMART è ancora causando:

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

È possibile che questo il tentativo mi dà solo una riga con 10 colonne. La prima colonna è vuota, quindi le prime tre voci per ogni matrice interna, ma poi si interrompe.

+0

vostro array sembra abbastanza strano dopo modifica –

+0

Sì lo fa, grazie. Ho aggiunto il mio codice PHP che crea l'array per fornire maggiori dettagli. – Mick

+1

L'array sarebbe più facile da eseguire il debug se si utilizza 'var_export'. –

risposta

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} 

codice 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} 

A prima vista, la variabile $columns è errata.
Lo si utilizza come nome di campo, ma i valori che contiene $columns possono anche essere matrici e non corrispondono necessariamente ai nomi di campo effettivi.

+0

Qualche ulteriore commento o suggerimento?L'array sembra ok per ottenere ciò che voglio? – Mick

+0

la matrice stessa è proprio quello che è. Non conosco lo sfondo dei dati, ciò che rappresenta, qual è la logica (possibile) dietro di essi. Posso darti un esempio solo per questo set di dati, ma questo potrebbe non aiutarti. – Lexib0y

+0

I dati sopra riportati descrivono diversi anni in questo caso di tre anni. Ogni valore all'interno dell'anno è uguale a unità a settimana. Fondamentalmente voglio mostrare una tabella in cui le colonne sono anni e le righe sono settimane e tutte le celle mostrano le unità di quella settimana. Le settimane iniziano tutte la stessa settimana ma potrebbero non finire lo stesso. Quindi alcune colonne potrebbero avere più file di altre. – Mick