2012-10-24 173 views
-1

你好,我創造了WordPress的PHP腳本生成一個動態HTML表格的數據是從數據庫中獲取,PHP多個foreach循環

功能是這樣的:

1)主題 2)主題 3)項

對於每一個[主題]有[主題]併爲每個[話題]有多個[項目]

我要顯示的每個[專題]作爲一個新的行和其下[物品]將會失效玩

這裏是我的功能,不工作幫助我糾正我的代碼。

function dynamic_table($attr) { 

global $wpdb; 

$ThemeCode = $attr['theme']; 
$Themes = getThemeinfo($ThemeCode); 
$sr = 1; 

$dt_list = $wpdb->get_results("SELECT * FROM wp_mtresources WHERE ThemeCode= '$ThemeCode'"); 
if(!empty($dt_list)) { 
    echo '<h2>' . $Themes['Desc'] . '</h2> 
     <table style="margin: auto; margin-bottom: 30px;" border="0" cellspacing="0" cellpadding="0"> 
     <tbody> 
      <tr> 
       <th>Topic</th> 
       <th>Presenation</th> 
       <th>Worksheets</th> 
       <th>Other Resources</th> 
      </tr> 
      '; 
    foreach ($dt_list as $dt) { 
     $tp_list = $wpdb->get_results("SELECT * FROM wp_mtresources WHERE TopicCode= '$dt->TopicCode'"); 

     $Topics = getTopicsinfo($dt->ThemeCode, $dt->TopicCode);  
      echo ' 
       <tr> 
        <td colspan="4" style="text-align:center;"><a href=""> ' . $Topics['TopicDesc'] . ' </a></td> 
       </tr>'; 
      foreach ($tp_list as $tp) { 

       echo ' 
        <tr> 
         <td>' . $tp->ResourceLocation.'</td>  
         <td></td> 
         <td></td> 
         <td></td> 
        </tr>  
       '; 

      } 
    } 
     echo '</tbody> 
       </table>';  
} else { 
    return 'No Theme or Topic found.'; 
} 


} 
add_shortcode('dt', 'dynamic_table'); 

這裏是意想不到的結果 Screenshot

+1

不是你的具體問題的解決方案,但你永遠不應該做在一個循環SQL選擇。更好地首先獲取所需的所有數據並循環訪問對象或數組。 – pebbo

+0

你期望什麼?不工作並不能幫助我們調試你的問題 – GBD

+0

你能指導我如何做到這一點?任何小例子對我來說都會很有幫助 – Amanullah

回答

2

首先我想從你的數據庫中選擇

PDO example.. 
while($rows = $query->fetch(PDO:FETCH_ASSOC)){ 
    $data = $rows; 
} 

現在一切都與你的表名作爲關鍵$ data數組英寸

保存任何其他數據在其他陣列

$another_array = ['example', 'example']; < - 只是一個例子可以是另一個數據庫檢索等上面,不論剛剛數據的另一陣列!

然後對於每個循環,循環中的數組,但訪問其他陣列的一個..

$array1 = ['one', 'two', 'three']; 
$array2 = ['a', 'b', 'c']; 

foreach($array1 as $k => $v){ 
    echo $v.' - '.$array2[$k]; 
} 

結果看起來就像..

一個 - 一個 2 - B 3 - c

對不起,如果這不夠清楚!

0

在我的實例之一,我不喜歡這樣

$i=0; 
$count=10; 
echo count($_POST['dates']);echo'<br>'; 
while($i<10) 
{ 
$date = ($_POST['dates'][$i]) ; 
$fee = ($_POST['fee'][$i]); 
echo "The value of is".$date .'-------'.$fee; 
echo'<br>'; 
$i=$i+1; 
} 

and it gave answer like 
The value of is2017-02-28-------800 
The value of is2017-02-21-------1000 
The value of is2017-02-13-------200 
+0

在這裏,我知道最大大小是10的對象 – Bineesh