2015-09-09 5 views
5

सबसे हालिया कोड देखने के लिए नीचे देखें ...SMARTY के साथ बहु-आयामी सरणी वाला HTML तालिका कैसे बनाएं?

जहां मैं सबसे अधिक संघर्ष कर रहा हूं, इस विशिष्ट प्रकार के सरणी से निपट रहा है। निचे देखो। PHP में var_dump का उपयोग करके प्रदर्शित किया गया। नीचे आप मानों के 3 सेट देखेंगे। मैं इस डेटा के साथ तीन कॉलम बनाने में सक्षम होना चाहता हूं। मान तब पंक्तियों को भरते हैं।

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 सरणी करने के लिए आवंटित चर के बराबर है। $numFlocks ऊपर से नीचे की तरह एक मेज पैदा करता है 1,2,3

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

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

</table> 

की एक सरणी के बराबर है।

सरणी 2160 63800

यह वह जगह है मैं क्या देख रहा हूँ दूर। मैं स्पष्ट रूप से अपने तीन कॉलम प्राप्त कर रहा हूं लेकिन मुझे नहीं पता कि मुझे केवल तीन पंक्तियां क्यों मिल रही हैं और मूल्य सभी गलत हैं।

नीचे मेरा PHP कोड है जो उपरोक्त सरणी $ झुंड बनाता है।

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); 
} 

मैं अपने पीएचपी को ठीक करने के

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 बाहर थूक:

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

हालांकि मेरी स्मार्ट तालिका अभी भी खड़ी कर रहा है समस्याओं:

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

ऊपर प्रयास केवल मुझे 10 पंक्ति के साथ एक पंक्ति देता है कॉलम। पहला कॉलम खाली है, फिर प्रत्येक आंतरिक सरणी के लिए पहली तीन प्रविष्टियां लेकिन फिर बंद हो जाती हैं।

+0

संपादित –

+0

के बाद आपका सरणी काफी अजीब लग हाँ यह करता है, धन्यवाद। मैंने अपना PHP कोड जोड़ा है जो अधिक जानकारी देने के लिए सरणी बनाता है। – Mick

+1

यदि आप इसके बजाय 'var_export' का उपयोग करते हैं तो सरणी डीबग करना आसान होगा। –

उत्तर

0

स्मार्ट/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} 

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} 

पहली नजर में, $columns चर का उपयोग गलत है।
आप इसे फ़ील्ड नाम के रूप में उपयोग कर रहे हैं, लेकिन $columns में वे मान भी सरणी हो सकते हैं, और आवश्यक रूप से वास्तविक फ़ील्ड नामों के अनुरूप नहीं हैं।

+0

कोई और टिप्पणी या सुझाव?क्या मैं चाहता हूं कि प्राप्त करने के लिए सरणी ठीक दिखती है? – Mick

+0

सरणी स्वयं ही यही है। मुझे डेटा की पृष्ठभूमि नहीं पता है, यह क्या दर्शाता है, इसके पीछे (संभव) तर्क क्या है। मैं आपको केवल इस डेटा सेट के लिए एक उदाहरण दे सकता हूं, लेकिन इससे आपकी मदद नहीं हो सकती है। – Lexib0y

+0

उपरोक्त डेटा तीन वर्षों में इस मामले में अलग-अलग वर्षों का वर्णन करता है। साल के भीतर प्रत्येक मूल्य प्रति सप्ताह इकाइयों के बराबर है। असल में मैं एक टेबल दिखाना चाहता हूं जहां कॉलम साल हैं और पंक्तियां सप्ताह हैं और सभी कक्ष उस सप्ताह की इकाइयां दिखाते हैं। सप्ताह एक ही सप्ताह में शुरू होते हैं लेकिन यह पूरा नहीं हो सकता है। तो कुछ कॉलम में दूसरों की तुलना में अधिक पंक्तियां हो सकती हैं। – Mick

संबंधित मुद्दे