我在使用while循环时遇到问题。虽然循环工作但它不返回一行中的数据。我知道为什么会这样,但我不知道如何解决它。
$bonusai = mysql_query("SELECT summa, date FROM tb_history WHERE type =
'bonus' AND user_id = '$usid' ORDER BY id DESC");
while ($r1 = mysql_fetch_assoc($bonusai)) { ?>
<tr>
<td>
<?php echo ($r1['summa'] == 0.01) ? date('Y-m-d H:i:s', $r1['date']) : ''; ?>
</td>
<td colspan="2">
<?php echo ($r1['summa'] == 0.01) ? '+' : ''; ?>
</td>
<td>
<?php echo ($r1['summa'] == 0.02) ? date('Y-m-d H:i:s', $r1['date']) : ''; ?>
</td>
<td colspan="2"><?php echo ($r1['summa'] == 0.02) ? '+' : ''; ?></td>
</tr>
<?php } ?>
$bonusai
查询结果:
如您所见,行中只有一个结果。它应该像这样在同一行显示两个数据(使用inspect元素更改):
在我看来,我应该用if三元运算符和while循环或更改查询结构来改变一些东西。也许我应该使用嵌套while循环?所有数据都在同一个MySQL表中,所以我不能使用JOIN。我应该用什么来将每条MySQL记录放在同一行?
P.S我知道,我不应该使用已弃用的mysql_*
。
答案 0 :(得分:2)
您正在尝试为获取的数据库中的每一行输出2行。
$bonusai = mysql_query("SELECT summa, date FROM tb_history WHERE type =
'bonus' AND user_id = '$usid' ORDER BY id DESC");
$leftAdded = false;
while ($r1 = mysql_fetch_assoc($bonusai)) {
if ($r1['summa'] == 0.01) {
echo '<tr><td>'.date('Y-m-d H:i:s', $r1['date']) .'</td>';
$leftAdded = true;
}
else {
if ( $leftAdded == false ) {
echo '<tr><td></td>';
}
$leftAdded = false;
echo '<td>'. date('Y-m-d H:i:s', $r1['date']) .'</td></tr>';
}
}
这样做是将tr标记放在第一位,将/ tr放在第二位。唯一的问题是,如果你没有得到SQL的第二位,那么close tr标签将会丢失,所以如果需要,你可能需要添加代码来捕获它。
编辑:我已经添加了代码,以防左栏未添加。
答案 1 :(得分:0)
如果有用,可以尝试使用此代码。
<?php
$sel="select * from demo";
$res=$con->query($sel);
while($r=$res->fetch_object())
{
?>
<tr>
<td><input type="checkbox" name="ch[]" value="<?php echo $r->id; ?>" /></td>
<td><?php echo $r->id; ?></td>
<td><?php echo $r->name; ?></td>
<td><?php echo $r->email ?></td>
<td><?php echo $r->password; ?></td>
<td><?php echo $r->gender; ?></td>
<td><?php echo $r->number ?></td>
<td><?php echo $r->address?></td>
<td><?php echo $r->city; ?></td>
<td><?php echo $r->hobby; ?></td>
<td><a href="delete.php?did=<?php echo $r->id; ?>">Delete</a></td>
<td><a href="edit.php?eid=<?php echo $r->id; ?>">Edit</a></td>
</tr>
<?php } ?>
答案 2 :(得分:0)
你可以试试这个:
$bonusai = mysql_query("SELECT summa, date FROM tb_history WHERE type =
'bonus' AND user_id = '$usid' ORDER BY id DESC");
$i=1;
while ($r1 = mysql_fetch_assoc($bonusai)) { ?>
<?php if($i%2 != 0 ){ echo '<tr>'; ?>
<td>
<?php echo date('Y-m-d H:i:s', $r1['date']); ?>
</td>
<td>+</td>
<td>
<?php echo date('Y-m-d H:i:s', $r1['date']); ?>
</td>
<td>+</td>
<?php if($i%2 == 0 ){ echo '</tr>'; ?>
<?php $i++;
} ?>