PHP仅在另一个foreach()循环内的for()循环中显示第一个值

时间:2015-01-06 16:07:13

标签: php mysql

我有一个小问题,一个for()循环以动态方式在另一个foreach()循环中显示值。

代码的小背景:

  1. 输出表是根据从名为&的表中的1列(名称为#34; coloane")中的一个mysql查询SELECT(第一个选择)获取的值动态创建的。 #34;分类&#34 ;;

  2. 存储在列" coloane"中的值实际上是另一个名为" articles"

  3. 的表中某些列的名称
  4. 第一个mysql选择是从列" coloane"中获取值。所以我可以创建第二个。 在第二个表返回行(num_rows()> 0)后,我开始创建表。

  5. 该表有2个始终存在的静态列,其余列根据不同的标准动态添加。

  6. 情节:

    • 我将从第一个选择中获得的值 - #34; coloane" - 为表格标题制作[th]'
    • 这个爆炸我将它存储在变量" $ rows_th";
    • 为表头创建[th]'我使用foreach()循环(这里我也删除任何下划线);
    • 之后我继续使用另一个foreach()来创建[tbody]和[td],只是为第二个选择的值完成了这个foreach;
    • 在这个foreach()里面我创建了另一个循环,在变量" $ rows_th"上使用for()函数所以表格长度相同;
    • 此处的值组合如下:

       '<td id="'.$i.'">'.$values_td[$rows_th[$i]].'</td>';
      

    主要问题是,使用上面列出的格式,它只显示第一个值

    当我尝试验证&#34; $ values_td [$ rows_th [$ i]]&#34;使用is_string()函数,我发现第一个值是一个字符串,之后,每隔一个值都不是一个字符串......

    进行了测试:

         if (is_string($values_td[$rows_th[$i]]))
           print '<td id="'.$i.'">Value found!!!</td>';
         } else {
           print '<td id="'.$i.'">No luck...</td>';
         }
    

    关于可能出错的任何想法?

    我知道我错过了什么,但我似乎无法弄明白: - /

    此处列出了整个代码:http://pastebin.com/4MFifh92

2 个答案:

答案 0 :(得分:0)

你不能做以下事情:

SELECT * FROM results_query_header_by_cat WHERE `id` = 3;

然后:

SELECT * FROM results_query_content_by_cat WHERE `id_category` = 3;

然后结果:

echo '[thead]';
foreach ( $results as $result ){
    foreach( $result['coloane'] as $header ){
        echo '[th]'.$header.'[/th]';
    }
} 
echo '[/thead][tbody]';
foreach ( $records as $record ){
    echo '[tr][td]' . 
     $result['producator'] . '[/td][td]' .
     $result['model'] . '[/td][td]' .
     $result['imei'] . '[/td][td]' .
     $result['locatie'] . '[/td][/tr]';
}
echo '[/tbody]';

这就是你要找的东西吗?

是的:我没有尝试过,但我想象它是这样的。只是:

  • 按类别ID

  • 获取标题
  • 按类别ID获取记录。

  • 使用循环回显第一个结果集作为标题

  • 将第二个结果集作为循环中具有列的表行进行回显。

答案 1 :(得分:0)

与此同时,在朋友的帮助下,我终于找到了出错的地方。

变量从字符串变为数字,因为在名为&#34; categories&#34;的表中,名为&#34; coloane&#34;内部的值由&#34;,&#34; (逗号)和&#34; &#34; (空间),像这样

  ------------------------------------------
  | coloane                                |
  ------------------------------------------
  make, model, location, comments, status
  ------------------------------------------

要解决这个问题,我发现我可以尝试在简单的foreach()循环中执行str_replace:)

这样的事情:

 $i=0;
 foreach($rows_th as $values_th) {
        $i++;
        $cols_td = str_replace(' ', '', $values_th);
        $actual_value = $values_td->$cols_td;
        print '<td id="'.$i.'">'.$actual_value.'</td>';
 }  

这就是诀窍:)。

希望这会帮助遇到类似问题的其他人:)

祝你好运, 麦克