如何阻止php'for loop'创建多个表头

时间:2017-11-08 07:11:47

标签: php html

我正在创建一个使用PDO方法从SQL数据库中获取数据的表。数据加载正常,但我遇到的问题是我正在使用的'for循环'在每个(表行)之后乘以(表头)。

我想知道问题可能是什么解决方案。

感谢任何帮助,谢谢!

以下是代码:

<?php

for($i=0; $row = $result->fetch(); $i++){

?>

    <table id="eventstable">
      <tr>
        <th>Event ID</th>
        <th>Event Name</th>
        <th>Location</th>
        <th>Date</th>
      </tr>
      <tr>
        <td><?php echo $row['event_id']; ?></td>
        <td><?php echo $row['event_name']; ?></td>
        <td><?php echo $row['event_location']; ?></td>
        <td><?php echo $row['event_date']; ?></td>
      </tr>
    </table>

        <?php }


 ?>

最上面是连接文件,它创建了与本地数据库的连接,以及一个语句,它引入了我想要从数据库中显示的信息,如下所示:

$result = $conn->prepare("SELECT * FROM events");
$result->execute();

3 个答案:

答案 0 :(得分:0)

很少有可能的解决方案 i)将标题部分和表格开始和结束标记放在for循环之外。如果没有数据,这将为您提供带有标题的空表。
ii)仅在i = 0时放置if条件和打印头,并将表标签放在循环外。如果没有数据,这将为您提供一个空表。

编辑:方法II(因为你正在学习)

<table id="eventstable">

<?php

for($i=0; $row = $result->fetch(); $i++){

if($i == 0){
?>


      <tr>
        <th>Event ID</th>
        <th>Event Name</th>
        <th>Location</th>
        <th>Date</th>
      </tr>


      <?php  }//if statment ends here ?>
   <tr>
    <td><?php echo $row['event_id']; ?></td>
    <td><?php echo $row['event_name']; ?></td>
    <td><?php echo $row['event_location']; ?></td>
    <td><?php echo $row['event_date']; ?></td>
  </tr>


        <?php }


 ?>

我建议你学习以后,使用比循环更好的方法。查看php PDO手册并查看while或foreach的使用。它会有所帮助。

答案 1 :(得分:0)

试试这个:

    <table id="eventstable">
      <tr>
        <th>Event ID</th>
        <th>Event Name</th>
        <th>Location</th>
        <th>Date</th>
      </tr>
<?php

foreach($result->fetch() as $row){

?>
      <tr>
        <td><?php echo $row['event_id']; ?></td>
        <td><?php echo $row['event_name']; ?></td>
        <td><?php echo $row['event_location']; ?></td>
        <td><?php echo $row['event_date']; ?></td>
      </tr>
<?php }


 ?>
    </table>

答案 2 :(得分:0)

只放入循环,循环应该是什么,其他一切都应该在循环之外。

例如,您的代码可能如下所示

        <table id="eventstable">
          <tr>
            <th>Event ID</th>
            <th>Event Name</th>
            <th>Location</th>
            <th>Date</th>
          </tr>
<?php        
    for($i=0; $row = $result->fetch(); $i++){        
    ?>    
          <tr>
            <td><?php echo $row['event_id']; ?></td>
            <td><?php echo $row['event_name']; ?></td>
            <td><?php echo $row['event_location']; ?></td>
            <td><?php echo $row['event_date']; ?></td>
          </tr>        
 <?php 
     }
     ?>
        </table>