-2

当我在某些地方创建元素时,我会返回 html 代码。让函数返回一个数组,然后为列表或表格中的每个项目创建 html,还是让 html 作为函数的一部分更好?

例如

function failedScansTable($eventId)
{
    echo "<table class='basic-table'>";
    $sql = mysql_query("SELECT total_errors FROM errors WHERE id_event = $eventId");
    while ($row = mysql_fetch_array($sql))
        {
            $totalErrors = $row['total_errors'];
            echo "<tr class='basic-table-total'><th colspan='3'>Total Rejected Scans</th><th>$totalErrors</th></tr>";
        }
    echo "</table>";
}
4

4 回答 4

2
  • 该函数通常应该返回一些东西而不是echo-ing
  • 该函数通常不应生成 HTML 代码,而是返回数据(例如值数组),然后可以在视图(仅生成 HTML 的应用程序的特定部分)中使用。查看模型-视图-控制器架构,了解如何分离关注点。
  • PHP 也被创建为用作模板语言,因此不要通过字符串连接生成 HTML,您应该使用以下内容:

    <table>
        <?php foreach (failedScansTable() as $entry): ?>
            <tr> ... </tr>
        <?php endforeach ?>
    </table>
    
  • 您不应再使用mysql_*函数,因为它们已被正式弃用。请考虑使用PDO

  • 始终转义附加到代码中的部分。
    • $eventId您应该在将其附加到 SQL 代码(mysql_real_escape_string()或者,更好的是PDO)之前转义
    • $totalErrors您应该在将其附加到 HTML 代码之前转义( htmlspecialchars())
于 2013-03-15T10:06:26.070 回答
1

更好,试试这个

function failedScansTable($eventId)
{
     $string= "<table class='basic-table'>";
     $sql = mysql_query("SELECT total_errors FROM errors WHERE id_event = $eventId");
     while ($row = mysql_fetch_array($sql))
     {
        $totalErrors = $row['total_errors'];
        $string.= "<tr class='basic-table-total'><th colspan='3'>Total Rejected Scans</th><th>$totalErrors</th></tr>";
     }
     $string.= "</table>";
     return array('html'=>$string, 'totalError'=>$totalErrors);
}
于 2013-03-15T10:02:30.607 回答
0

试试这个 :

function failedScansTable($eventId)

{

$html = "<table class='basic-table'>";

$sql = mysql_query("SELECT total_errors FROM errors WHERE id_event = $eventId");

while ($row = mysql_fetch_array($sql))

    {

        $totalErrors = $row['total_errors'];

        $html.="<tr class='basic-table-total'><th colspan='3'>Total Rejected Scans</th><th>$totalErrors</th></tr>";

    }

$html.="</table>";

return $html;

}
于 2013-03-15T10:06:18.527 回答
0

如果您的代码要变得更大,最好遵循一种设计模式,例如MVC

因此,最好将模型与视图分开。该数组是您的数据模型;而 html,即您呈现数据的方式,就是视图。

于 2013-03-15T10:06:56.457 回答