本人学php不久,感觉用php输出大段的html比较麻烦,请问像如下的代码有什么好的化简办法?
<table width="100%" border="2">
<tr>
<td width="6%">班级</td>
<td width="6%">作业编号</td>
<td width="15%">留作业日期</td>
<td width="15%">交作业日期</td>
<td width="50%">作业内容</td>
<td width="8%">管理</td>
</tr>
<?php
$query=sprintf("select * from homework where teacher='%s' and date>='%s'",$_SESSION['teacherid'],date("Y-m-d"));
mysql_query("set names gb2312");
$result = mysql_query($query);
while ($row=mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$row['class']."</td>";
echo "<td>".$row['number']."</td>";
echo "<td>".substr($row['date'],0,10)."</td>";
echo "<td>".substr($row['duetime'],0,10)."</td>";
echo "<td>".$row['content']."</td>";
echo "<td onclick=\"deletehw('".$row['hwid']."')\">删除</td>";
echo "</tr>";
}
?>
</table>我觉得echo太多了,还是说输出数据库表格就是这样的?
<table width="100%" border="2">
<tr>
<td width="6%">班级</td>
<td width="6%">作业编号</td>
<td width="15%">留作业日期</td>
<td width="15%">交作业日期</td>
<td width="50%">作业内容</td>
<td width="8%">管理</td>
</tr>
<?php
$query=sprintf("select * from homework where teacher='%s' and date>='%s'",$_SESSION['teacherid'],date("Y-m-d"));
mysql_query("set names gb2312");
$result = mysql_query($query);
while ($row=mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>".$row['class']."</td>";
echo "<td>".$row['number']."</td>";
echo "<td>".substr($row['date'],0,10)."</td>";
echo "<td>".substr($row['duetime'],0,10)."</td>";
echo "<td>".$row['content']."</td>";
echo "<td onclick=\"deletehw('".$row['hwid']."')\">删除</td>";
echo "</tr>";
}
?>
</table>我觉得echo太多了,还是说输出数据库表格就是这样的?
我嘛,现在不写html了,写xml,让xsl模板去搞定html的事,嘿嘿
{
echo <<< HTML
<tr>
td>$row[class]</td>
<td>$row[number]</td>
<td>$row[date]</td>
<td>$row[duetime]</td>
<td>$row[content]</td>
<td onclick="deletehw('$row[hwid]')">删除</td>
</tr>
HTML;
}你的 date 和 duetime 本来就是10个字符,不需要截取
代码的美观性较差所以就有了模板引擎,把繁杂的充填html的工作交给程序完成
//这样呢。。
while ($row=mysql_fetch_array($result)){
$str = "<tr><td>{$row['class']}</td><td>{$row['number']}</td><td>".substr($row['date'],0,10)."</td><td>".substr($row['duetime'],0,10)."</td><td>{$row['content']}</td><td onclick=\"deletehw('{$row['hwid']}');\">删除</td>\n";
echo $str;
}
我自己google了一下,才知道php表示字符串有一种heredoc技术:
这里有说明:
http://www.php.net/manual/en/language.types.string.php所以我改成了这样:
<table width="100%" border="2">
<tr>
<td width="6%">班级</td>
<td width="6%">作业编号</td>
<td width="15%">留作业日期</td>
<td width="15%">交作业日期</td>
<td width="50%">作业内容</td>
<td width="8%">管理</td>
</tr>
<?php
$query=sprintf("select * from homework where teacher='%s' and date>='%s'",$_SESSION['teacherid'],date("Y-m-d"));
mysql_query("set names gb2312");
$result = mysql_query($query);
while ($row=mysql_fetch_array($result))
{
echo <<<HTML
<tr>
<td>$row[class]</td>
<td>$row[number]</td>
<td>$row[date]</td>
<td>$row[duetime]</td>
<td>$row[content]</td>
<td onclick="deletehw('$row[hwid]')">删除</td>
</tr>
HTML;
}
?>
</table>heredoc的名字可以随便起,符合命名规则且保持一致就行了。结束标记一定要在新一行开头。可是这样一来我就不能截取字符串了。显示的时间像这样:2011-05-05 19:34:10
mysql中我用的是datatime。我考虑改一下数据表结构了。xml和模版考虑以后再学,我先用教笨的办法吧,毕设赶工期,还有几个功能未实现。。