php函数与html
当我在某些地方创建元素时,我将返回html代码。让函数返回一个数组,然后为列表或表中的每个项目创建html,或者让html作为函数的一部分,这样更好吗 e、 gphp函数与html,php,html,function,Php,Html,Function,当我在某些地方创建元素时,我将返回html代码。让函数返回一个数组,然后为列表或表中的每个项目创建html,或者让html作为函数的一部分,这样更好吗 e、 g 功能失败扫描稳定($eventId) { 回声“; $sql=mysql\u查询(“从错误中选择总错误,其中id\u事件=$eventId”); while($row=mysql\u fetch\u数组($sql)) { $totalErrors=$row['total_errors']; echo“总拒绝扫描数$totalErrors
功能失败扫描稳定($eventId)
{
回声“;
$sql=mysql\u查询(“从错误中选择总错误,其中id\u事件=$eventId”);
while($row=mysql\u fetch\u数组($sql))
{
$totalErrors=$row['total_errors'];
echo“总拒绝扫描数$totalErrors”;
}
回声“;
}
更好,试试这个
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);
}
功能失败扫描稳定($eventId)
{
$string=“”;
$sql=mysql\u查询(“从错误中选择总错误,其中id\u事件=$eventId”);
while($row=mysql\u fetch\u数组($sql))
{
$totalErrors=$row['total_errors'];
$string.=“总拒绝扫描数$totalErrors”;
}
$string.=“”;
返回数组('html'=>$string,'totalError'=>$totalErrors);
}
试试这个:
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;
}
功能失败扫描稳定($eventId)
{
$html=“”;
$sql=mysql\u查询(“从错误中选择总错误,其中id\u事件=$eventId”);
while($row=mysql\u fetch\u数组($sql))
{
$totalErrors=$row['total_errors'];
$html.=“总拒绝扫描数$totalErrors”;
}
$html.=”;
返回$html;
}
- 函数通常应该返回一些内容,而不是
-ingecho
- 该函数通常不应生成HTML代码,而是返回数据(如值数组),而不是在视图中使用(应用程序中仅生成HTML的特定部分)。请看一看,了解如何分离关注点
- 创建PHP也是为了用作模板语言,因此您不应该通过字符串连接来生成HTML,而应该使用如下内容:
<table> <?php foreach (failedScansTable() as $entry): ?> <tr> ... </tr> <?php endforeach ?> </table>
...
- 您不应该再使用
函数,因为它们已被正式弃用。考虑一下。mysql.*
- 始终转义附加到代码中的部分。
- 在将其附加到SQL代码之前,应该先转义
($eventId
或者更好的方法是)mysql\u real\u escape\u string()
- 在将其附加到HTML代码()之前,应先转义
$totalErrors
- 在将其附加到SQL代码之前,应该先转义
因此,最好将模型与视图分开。数组是您的数据模型;html就是视图,它是显示数据的方式。我认为函数总是返回一些值是件好事。将该html分配给一个变量,并在最后返回该变量。我认为最好是函数返回一个数组,然后用它创建一个html。。。因为我认为这会让事情更容易理解在我看来这取决于你使用它的目的。如果表显示在一个位置且仅显示一个位置,则返回数组。如果您正在到处显示表,可能有不同的数据,请将其与html一起使用。不要使用
mysql\uu
函数,因为它们已被弃用。请改用PDO。谢谢您的输入。如果你有任何关于如何改进的信息,我很高兴听到,因为我正在学习,但是一个没有信息的声明实际上没有多大用处Hi Tapas,谢谢你的代码。这样做的好处是什么?我认为这里还需要$totalErrors。所以你应该两个都返回。作为var返回有什么好处?谢谢你的信息。我正在调查警察局。我通常会检查正在添加的字符串,但这是一个示例,而不是一个函数,我会让除我之外的任何人使用它。为什么没有回音或html代码呢?这是因为功能吗?我将只使用此函数创建一个表,这样信息就不会在其他任何地方使用。@AlanDoolan,无论数据来自何处,您都应该将其转义。即使您自己创建数据,在字符串中需要撇号(这将导致SQL语法错误)或小于号(这将不会在HTML中生成所需的结果)也并不少见。因此,无论你做什么,只要你将某种东西从一种语言连接到另一种语言,就不必检查它,而是总是逃避它。@AlanDoolan,关于echo
-ing,如果你沿着这条路走下去,你的应用程序最终将以某种方式组成,这将使以后的重构变得极其困难。如果这是你用来生成HTML的唯一功能,虽然它不是特别漂亮,但它应该可以做到,但是如果你打算扩展应用程序,即使只是一点点,从长远来看,这也不会起作用。使用这种方法除了组织之外,还有什么好处?它的整体功能会更好吗?这确实是主观的。MVC并不总是最合适的做事方法。但是,我同意将数据访问与输出分离是一种很好的做法。无论是MVC还是多层体系结构,还是其他将数据与视图分离的设计模式,都可以使用logic@AlanDoolan其优点是数据和显示数据的方式是解耦的。例如,如果您想更改它的外观,您不需要触摸数据模型,只需更改视图即可。另外,如果你想测试你的代码,单独测试它们会容易得多。@Mark我同意你的看法。MVC本身也有很多变体。最好使用适合的图案。
<table>
<?php foreach (failedScansTable() as $entry): ?>
<tr> ... </tr>
<?php endforeach ?>
</table>