我正在运行以下脚本从我的数据库中的结果中绘制一个表:
$user =& JFactory::getUser();
$currentUser = $user->id;
$query = "SELECT * FROM jos_modelform_submissions WHERE user_id='".$currentUser."' AND model_type='model1'";
$db->setQuery($query);
$tableResults = $db->query();
$formLayout .= $tableResults;
echo "<div style='overflow:auto;'><table border='1' cellspacing='0' cellpadding='14'>
<tr bgcolor='#0D7CCD'>";
echo "<TD style='text-align:center;color:#FFFFFF;' width='25px'><b>ID</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='40px'><b>User ID</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='200px'><b>Input</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='600px'><b>Output</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='110px'><b>Model Type</b></TD>
<TD style='text-align:center;color:#FFFFFF;' width='100px'><b>Date/Time</b></TD>
</tr>";
echo "<tr><td colspan ='6'><div style='width:1075px;height:300px;overflow:auto;'><table border='1' cellspacing='0' cellpadding='14'>";
while ($row = mysql_fetch_array($tableResults))
{
$mix = array("<", "/>", ">", "/");
$output1 = str_replace($mix, "#", $row['output']);
$output2 = str_replace("#", "<BR/>", $output1);
echo "<tr onclick=\"alert('Test');\" onmouseover=\"document.body.style.cursor='pointer'\" onmouseout=\"document.body.style.cursor='default'\">";
echo "<TD style='text-align:center;' width='25px'>" . $row['id'] . "</td>";
echo "<TD style='text-align:center;' width='40px'>" . $row['user_id'] . "</td>";
echo "<TD width='200px'>" . $row['input'] . "</td>";
echo "<TD width='600px'>" .stripslashes($output2). "</td>";
echo "<TD style='text-align:center;' width='110px'>" . $row['model_type'] . "</td>";
echo "<TD style='text-align:center;' width='100px'>" . $row['date_time'] . "</td>";
echo "</tr>";
}
echo "</table> </div></td></tr></table></div></br></br>";
表格很好但在我的页面底部我得到了资源ID#的输出。我怎么能摆脱这个?某处的语法或逻辑是否有错误?您可以在此处看到运行的代码:
答案 0 :(得分:2)
你回应$formLayout ?
从你的代码:
$tableResults = $db->query();
$formLayout .= $tableResults; // what does this line do ????
回显query()的返回将导致“Resource ###”
的输出回显文件句柄(从fopen()返回)将产生相同的结果
答案 1 :(得分:1)
正如我所见,如果你有一个零元素,你就不会处理。
if (!$tableResults = $db->query()) {
echo $db->stderr();
return false;
}
你之前也使用过Joomla的功能,为什么不再使用它?而不是使用mysql函数,使用$ row = $ db-&gt; loadAssocList();和foreach。
$row = $db->loadAssocList();
foreach ($row as $key=>$value)
{
$mix = array("<", "/>", ">", "/");
$output1 = str_replace($mix, "#", $value['output']);
$output2 = str_replace("#", "<BR/>", $output1);
echo "<tr onclick=\"alert('Test');\" onmouseover=\"document.body.style.cursor='pointer'\" onmouseout=\"document.body.style.cursor='default'\">";
echo "<TD style='text-align:center;' width='25px'>" . $value['id'] . "</td>";
echo "<TD style='text-align:center;' width='40px'>" .$value['user_id'] . "</td>";
echo "<TD width='200px'>" . $value['input'] . "</td>";
echo "<TD width='600px'>" .stripslashes($output2). "</td>";
echo "<TD style='text-align:center;' width='110px'>" . $value['model_type'] . "</td>";
echo "<TD style='text-align:center;' width='100px'>" . $value['date_time'] . "</td>";
echo "</tr>";
}
可能有帮助。
另外我对HTML部分的看法:将HTML放入PHP代码就好了......我认为这是老式的编程风格。尽量避免混合PHP和HTML,如上例所示。尝试在HTML文件中使用HTML,在php文件中使用php代码,并将它们最小化地混合使用。我建议使用任何CMS或模板引擎,并分离php和HTML代码。
答案 2 :(得分:0)
您发布的代码不会输出资源ID。