PHP做,而HTML在两者之间
我正在尝试编写PHP代码,通过数组循环创建HTML表。我一直在尝试这样做:PHP做,而HTML在两者之间,php,html,Php,Html,我正在尝试编写PHP代码,通过数组循环创建HTML表。我一直在尝试这样做: <div id="results"> <table class="sortable"> <?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?> <?php do: ?> <tr> <?php for ($i = 0; $i <
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?>
<?php do: ?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php while (($row = next($results)) != false); ?>
</table>
</div>
因此,有两个问题:
您可以在每种循环中混合使用php和html,但您当前的循环无法工作,因为
$row
在第一次到达那里时没有定义。您可以在每种循环中混合使用php和html,但是您当前的循环不起作用,因为它第一次到达那里时没有定义。我不知道有这样的do while语法,但是您仍然可以这样结束PHP块:
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?>
<?php do { ?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php } while (($row = next($results)) != false); ?>
</table>
</div>
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC);
if ($results) {
while ($row = next($results)) {
?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php }
} ?>
</table>
</div>
我不知道有这样的do-while语法,但您仍然可以这样结束PHP块:
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?>
<?php do { ?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php } while (($row = next($results)) != false); ?>
</table>
</div>
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC);
if ($results) {
while ($row = next($results)) {
?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php }
} ?>
</table>
</div>
您可以使用花括号:
<?php do { ?>
foo
<?php } while ($i--); ?>
福
您可以使用花括号:
<?php do { ?>
foo
<?php } while ($i--); ?>
福
虽然我从来没有像您的示例中那样使用冒号语法,但除了第一次通过$row时未赋值之外,所有内容看起来基本正确
我会把它换成这样:
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?>
<?php do { ?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php } while (($row = next($results)) != false); ?>
</table>
</div>
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC);
if ($results) {
while ($row = next($results)) {
?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php }
} ?>
</table>
</div>
这是对嵌入式php标记的过度使用。。当PHP比HTML更多时,最好使用PHP并回显HTML。虽然我从未像您的示例中那样使用冒号语法,但除了第一次通过$row时未赋值外,所有内容看起来基本正确 我会把它换成这样:
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC); ?>
<?php do { ?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php } while (($row = next($results)) != false); ?>
</table>
</div>
<div id="results">
<table class="sortable">
<?php $results = $statement->fetchAll(PDO::FETCH_ASSOC);
if ($results) {
while ($row = next($results)) {
?>
<tr>
<?php for ($i = 0; $i < count($columns); $i++): ?>
<td><?php echo $row[$i] ?></td>
<?php endfor; ?>
</tr>
<?php }
} ?>
</table>
</div>
这是对嵌入式php标记的过度使用。。当PHP多于HTML时,最好使用PHP并重复HTML。它没有特殊名称:) 您可能会发现使用herdoc语法比像这样进出PHP/HTML要干净一些,不过:
您可以在herdoc块中使用变量,这样您就可以在线访问数据库结果,而无需使用大括号和新行。它没有特殊名称:) 您可能会发现使用herdoc语法比像这样进出PHP/HTML要干净一些,不过: 你可以在herdoc块中使用变量,这样你就可以在线访问你的数据库结果,而不用大括号和新行。你最好的办法是在字符串中回显HTML,所有内容都在标记中。 您现在所做的是dowhile中的一个空for循环,这基本上是没有意义的 2) 我相信这就是所谓的“内联”编码,代码和HTML混合在一起,但这种做法是不可取的,因为在为web开发时,通常需要将逻辑(PHP)和内容(HTML)分开。1)最好的办法是在字符串中回显HTML,所有内容都在标记中。 您现在所做的是dowhile中的一个空for循环,这基本上是没有意义的 2) 我相信这就是所谓的“内联”编码,代码和HTML混合在一起,但这种做法是不可取的,因为在为web开发时,您通常希望将逻辑(PHP)和内容(HTML)分开。否。与: PHP为它的一些控制结构提供了另一种语法;即if、while、for、foreach和switch 另一方面,
do{?>…No.来自:
PHP为它的一些控制结构提供了另一种语法,即if、while、for、foreach和switch
另一方面,do{?>…do/while在此实现中失败,因为在第一次执行时,$row未定义。do/while在此实现中失败,因为在第一次执行时,$row未定义。是。可用于每次运行循环时都检查条件的while循环,而不是第一次未检查条件的do。是。可用于每次运行循环时都检查条件的while循环,而不是第一次未检查条件时的do循环。“内联编码”绝对不受欢迎-绝大多数PHP+(x)都广泛使用它HTML项目。虽然分离逻辑和内容绝对是可取的,但您的第一个回音建议也不能做到这一点,而且比“内联”编码可读性和可维护性差得多。“内联编码”肯定不会受到反对——它被绝大多数PHP+(x)广泛使用虽然分离逻辑和内容是绝对可取的,但你的第一个回音建议也不能做到这一点,而且比“内联”编码可读性和可维护性要差得多。