2012-10-24 142 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