PHP结果集和HTML定位

时间:2015-07-31 16:39:02

标签: php html

我有定位html标签的问题我确实试图解决问题,但对我来说代码看起来很好,但是输出告诉了一些不同的我尝试做了解决SQL查询的输出然而我无法实现这个,当我在论坛中请求帮助时,我得到了用PHP做起来会容易得多。所以我已经生成了以下代码,但我没有得到所需的结果:

 <body>

<div class="container">
    <?php  
        $sdate = '';
            foreach($rows as $row) {
                if($row['shieldDate'] != $sdate){
                    $sdate = $row['shieldDate'];
                    echo '<h2>';
                    echo $row['shieldDate'],'&nbsp','opponent','&nbsp',$row['shieldTeam'];
                    echo '</h2>';

                     echo "
                     <p>The .table class adds basic styling (light padding and only horizontal dividers) to a table:</p>            
                      <table class='table'>
                        <thead>
                          <tr>
                            <th>Player</th>
                            <th>Score</th>
                          </tr>
                        </thead>
                        <tbody>
                                ";

            echo "<tr>";        
            echo "<td>";
            echo $row["firstname"],'&nbsp', $row["lastname"];
            echo "</td>";
            echo "<td>";
            echo $row["score"];
            echo "</td>";
            echo "</tr>";

            }else{

            echo "<tr>";
            echo "<td>";
            echo $row["firstname"],'&nbsp', $row["lastname"];
            echo "</td>";
            echo "<td>";
            echo $row["score"];
            echo "</td>";
            echo "</tr>";

            }
        }               
    ?>

    </tbody>
  </table>
</div>

</body>

我正在努力实现以下输出: enter image description here

但是我得到了:

enter image description here

1 个答案:

答案 0 :(得分:0)

您不会在两个日期之间关闭tbodytable代码 每次遇到新日期时,都会打开一个新的table标记,但在获得新的h2日期标题之前,您永远不会将其关闭。添加一行以关闭它。

$sdate = '';
foreach($rows as $row) {
    if($row['shieldDate'] != $sdate){
    // It's a new date
        if (!empty($sdate)) {
        // It's not the first date: close previous table
            echo '</tbody></table>';
        }

        $sdate = $row['shieldDate'];
        echo '<h2>';
        echo $row['shieldDate'],'&nbsp','opponent','&nbsp',$row['shieldTeam'];
        echo '</h2>';

        echo "<p>The .table class adds basic styling (light padding and only horizontal dividers) to a table:</p>            
            <table class='table'>
                <thead>[...]</thead>
                <tbody>";

                [...]
    } else {

        [...]

    }
}  

if (!empty($sdate)) {
    // There has been at least one date (at least one table): close it
    echo '</tbody></table>';
}

请注意,[...]if说明中的else内容相同。

你可以这样做,让事情变得更清洁。您拥有的重复代码越少,读取就越容易。您的代码越容易阅读,就越好。

foreach($rows as $row) {
    if($row['shieldDate'] != $sdate){
        // Do your h2 and open table stuff
    }

    echo "<tr>";
    echo "<td>";
    // etc. No need to put it in the if AND in the else instructions.
}