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 <

我正在尝试编写PHP代码,通过数组循环创建HTML表。我一直在尝试这样做:

<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,您可以在其中拆分PHP 编写代码并将HTML放在中间

  • 当你们分开的时候,这叫什么 PHP代码与HTML之间? (如果有专门术语)


  • 您可以在每种循环中混合使用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)广泛使用虽然分离逻辑和内容是绝对可取的,但你的第一个回音建议也不能做到这一点,而且比“内联”编码可读性和可维护性要差得多。