我正在处理一个项目,我正在从用户那里获取一系列日期的输入,然后在这两个日期之间打印出结果。目前,我从数据库中获取数据并打印它们没有任何问题。问题在于表格的格式和结构。
目前,每次打印结果时,表格都会打印表格的标题,而我正在改变这些问题。
提供的代码就是我一直在使用的代码。
这是一个课程,所以请尝试解释需要做什么,而不是简单地给我代码!
<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
}
?>
答案 0 :(得分:0)
您应该将表和表标题移出循环,否则最终会为查询返回的每一行添加它们。代码应大致如下所示:
<table>
<!-- table header -->
<tr>
<th>..</th>
..
</tr>
<!-- Records -->
<?php
for (?;?;?) {
?>
<tr>
<td><?php echo $row['?'] ?></td>
..
</tr>
<?php } ?>
<!-- End of table -->
</table>
答案 1 :(得分:0)
表html代码在ForEach循环中。这就是它为每条记录打印的原因。将表colum头放在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>