2016-03-04 39 views
1

我正在处理一个项目,我从用户输入一系列日期,然后打印出这两个日期之间的结果。目前,我从数据库获取数据并将其打印出来没有任何问题。问题在于表格的格式和结构。从数据库使用PHP动态地打印表格的问题

当前表格正在打印表格的标题,每次打印结果时,我遇到的问题都会改变。

提供的代码是我一直在使用的。

这是一个类,所以请尝试解释需要做什么,而不是简单地给我代码!

<form method="post" action="index.php"> 
Date Range From: 
<input type="text" id="dateFrom" name="dateFrom" value=""> 
To: 
<input type="text" id="dateTo" name="dateTo" value=""> 
<input type="submit" id="submit"> 
</form> 

<?php 
include('../inclass/db_connect.php'); 

if(isset($_POST['dateFrom'])){$dateFrom = $_POST['dateFrom'];}else{$dateFrom=0;}; 
if(isset($_POST['dateTo'])){$dateTo = $_POST['dateTo'];}else{$dateTo=0;}; 

$result =$pdo->prepare("SELECT matchDate, player1, player2, result, eco FROM matches WHERE matchDate BETWEEN :a AND :b LIMIT 250"); 
$result->bindParam(':a', $dateFrom); 
$result->bindParam(':b', $dateTo); 
$result->execute(); 

for($i=0; $row = $result->fetch(); $i++){ 
?> 
<table border="1"> 
    <tr> 
     <th>Match Date</th> 
     <th>Player 1</th> 
     <th>Player 2</th> 
     <th>Result</th> 
     <th>ECO Code</th> 
    </tr> 
    <tr> 
     <td><?php echo $row['matchDate']; ?></td> 
     <td><?php echo $row['player1']; ?></td> 
     <td><?php echo $row['player2']; ?></td> 
     <td><?php echo $row['result']; ?></td> 
     <td><?php echo $row['eco']; ?></td> 
    </tr> 
</table> 
<?php 
} 
?> 

http://cps276.net/zgambrell/04/index.php

+0

你能告诉一个有效的日期范围,以便我们检查你的链接吗? –

+0

2000/06/06 - 2001/06/06 – Zgbrell

+0

我给出的答案 –

回答

0

你应该将表和表头圈外或你最终会加入他们查询返回的每一行。代码应该大致如下所示:

<table> 
    <!-- table header --> 
    <tr> 
    <th>..</th> 
    .. 
    </tr> 

    <!-- Records --> 
    <?php 
    for (?;?;?) { 
    ?> 
    <tr> 
    <td><?php echo $row['?'] ?></td> 
    .. 
    </tr> 
    <?php } ?> 
<!-- End of table --> 
</table> 
+0

当我将表头移动到循环外部时,它只将第一个循环放入表中,其他数据记录未被处理并放入表中正确的行和列中。你是否知道我可以拥有它,所有的数据都被格式化成表格? – Zgbrell

+0

看起来你要么没有正确地封装php脚本,要么他们放错了位置。我尝试从日期范围链接运行php脚本,并查看源代码生成,似乎关闭表标记放置在for循环。 –

0

表HTML代码foreach循环中。这就是为什么它为每个记录打印。将表格柱头置于for循环之外。

<table border="1"> 
     <tr> 
      <th>Match Date</th> 
      <th>Player 1</th> 
      <th>Player 2</th> 
      <th>Result</th> 
      <th>ECO Code</th> 
     </tr> 

    for($i=0; $row = $result->fetch(); $i++){ 
    ?> 
     <tr> 
      <td><?php echo $row['matchDate']; ?></td> 
      <td><?php echo $row['player1']; ?></td> 
      <td><?php echo $row['player2']; ?></td> 
      <td><?php echo $row['result']; ?></td> 
      <td><?php echo $row['eco']; ?></td> 
     </tr> 

    <?php 
    } 
    ?> 
</table>