我有一个小问题,一个for()循环以动态方式在另一个foreach()循环中显示值。
代码的小背景:
输出表是根据从名为&的表中的1列(名称为#34; coloane")中的一个mysql查询SELECT(第一个选择)获取的值动态创建的。 #34;分类&#34 ;;
存储在列" coloane"中的值实际上是另一个名为" articles"
第一个mysql选择是从列" coloane"中获取值。所以我可以创建第二个。 在第二个表返回行(num_rows()> 0)后,我开始创建表。
该表有2个始终存在的静态列,其余列根据不同的标准动态添加。
情节:
此处的值组合如下:
'<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
答案 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>';
}
这就是诀窍:)。
希望这会帮助遇到类似问题的其他人:)
祝你好运, 麦克