我需要一些帮助来修复我的一些代码。
我有一个查询,从表中取出一些行,但我需要它在列'Price'中的一个合计值。
我已经得到了总计算工作良好和输出,但它似乎打破了我的重复区域进一步向下的页面。我假设这与WHILE语句有关,但我不完全确定如何修复它。谁能建议一种方法来修复它或提供一个替代方案。
mysql_select_db($database_otters, $otters);
$query_CartDetails = "SELECT eventregistrations.*, swimmers.*, events.*, eventtypes.*, timetable.* FROM eventregistrations LEFT JOIN swimmers ON eventregistrations.SwimmerID=swimmers.SwimmerID LEFT JOIN events ON eventregistrations.EventID=events.EventID JOIN eventtypes ON events.EventTypeID=eventtypes.EventTypeID JOIN timetable ON eventregistrations.ParentDiaryID=timetable.DiaryID WHERE eventregistrations.SessionID = '$sessionid'";
$CartDetails = mysql_query($query_CartDetails, $otters) or die(mysql_error());
$row_CartDetails = mysql_fetch_assoc($CartDetails);
$totalRows_CartDetails = mysql_num_rows($CartDetails);
$cartvalue= 0;
while ($num = mysql_fetch_assoc($CartDetails)) {
$cartvalue += $num['Price'];
}
这是重复区域的代码,如果我注释掉上面的'cartvalue'部分,它可以正常工作:
<?php do { ?>
<tr>
<td><?php echo $row_CartDetails['Fixture']; ?></td>
<td><?php echo $row_CartDetails['EventType']; ?></td>
<td><?php echo $row_CartDetails['SwimmerFName']; ?> <?php echo $row_CartDetails['SwimmerSName']; ?></td>
<td>£<?php echo $row_CartDetails['EventCost']; ?></td>
</tr>
<?php } while ($row_CartDetails = mysql_fetch_assoc($CartDetails)); ?>
问题就在这里
while ($num = mysql_fetch_assoc($CartDetails)) {
$cartvalue += $num['Price'];
}
循环遍历结果集,白循环后的指针将被设置为结果集的末尾。因此,如果您对同一结果集进行进一步迭代,则可能一无所获。
在这种情况下,当你需要再次进行迭代时,你需要使用
重置指针mysql_data_seek
所以在运行第二个循环之前做一些
mysql_data_seek($CartDetails, 0) ; // this will set the pointer to the 1st row
你好,一个可能的原因,我可以弄清楚是做while循环将运行第一次总是无论while条件为真与否,所以我建议你使用while循环
<?php while ($row_CartDetails = mysql_fetch_assoc($CartDetails)) { ?>
<tr>
<td><?php echo $row_CartDetails['Fixture']; ?></td>
<td><?php echo $row_CartDetails['EventType']; ?></td>
<td><?php echo $row_CartDetails['SwimmerFName']; ?> <?php echo $row_CartDetails['SwimmerSName']; ?></td>
<td>£<?php echo $row_CartDetails['EventCost']; ?></td>
</tr>
<?php } ?>
以上代码将保存额外的