gpt4 book ai didi

PHP while 循环和表头仅显示是否设置了 db 值

转载 作者:行者123 更新时间:2023-11-29 15:00:57 24 4
gpt4 key购买 nike

这是我的代码。

<table border="1" style="width:800px">
<?php $schedule_db = mysql_query("SELECT * FROM schedule WHERE '00:00' is not null and '01:00' is not null and '02:00' is not null and '03:00' is not null and '04:00' is not null and '05:00' is not null and '06:00' is not null and '07:00' is not null and '08:00' is not null and '09:00' is not null and '10:00' is not null and '11:00' is not null and '12:00' is not null and '13:00' is not null and '14:00' is not null and '15:00' is not null and '16:00' is not null and '17:00' is not null and '18:00' is not null and '19:00' is not null and '20:00' is not null and '21:00' is not null and '22:00' is not null and '23:00' is not null")
or die(mysql_error()); ?>
<form method="post" action="config_action.php">
<?php while($schedule = mysql_fetch_array( $schedule_db )) { ?>
<tr><?php if(isset($schedule['00:00'])) { ?><td style="width:32px"><?php echo $schedule['00:00'] ?></td><?php } if(isset($schedule['02:00'])) { ?><td style="width:32px"><?php echo $schedule['02:00'] ?></td><?php } if(isset($schedule['03:00'])) { ?><td style="width:32px"><?php echo $schedule['03:00'] ?></td><?php } if(isset($schedule['04:00'])) { ?><td style="width:32px"><?php echo $schedule['04:00'] ?></td><?php } if(isset($schedule['05:00'])) { ?><td style="width:32px"><?php echo $schedule['05:00'] ?></td><?php } if(isset($schedule['06:00'])) { ?><td style="width:32px"><?php echo $schedule['06:00'] ?></td><?php } if(isset($schedule['07:00'])) { ?><td style="width:32px"><?php echo $schedule['07:00'] ?></td><?php } if(isset($schedule['08:00'])) { ?><td style="width:32px"><?php echo $schedule['08:00'] ?></td><?php } if(isset($schedule['09:00'])) { ?><td style="width:32px"><?php echo $schedule['09:00'] ?></td><?php } if(isset($schedule['10:00'])) { ?><td style="width:32px"><?php echo $schedule['10:00'] ?></td><?php } if(isset($schedule['11:00'])) { ?><td style="width:32px"><?php echo $schedule['11:00'] ?></td><?php } if(isset($schedule['12:00'])) { ?><td style="width:32px"><?php echo $schedule['12:00'] ?></td><?php } if(isset($schedule['13:00'])) { ?><td style="width:32px"><?php echo $schedule['13:00'] ?></td><?php } if(isset($schedule['14:00'])) { ?><td style="width:32px"><?php echo $schedule['14:00'] ?></td><?php } if(isset($schedule['15:00'])) { ?><td style="width:32px"><?php echo $schedule['15:00'] ?></td><?php } if(isset($schedule['16:00'])) { ?><td style="width:32px"><?php echo $schedule['16:00'] ?></td><?php } if(isset($schedule['17:00'])) { ?><td style="width:32px"><?php echo $schedule['18:00'] ?></td><?php } if(isset($schedule['19:00'])) { ?><td style="width:32px"><?php echo $schedule['19:00'] ?></td><?php } if(isset($schedule['20:00'])) { ?><td style="width:32px"><?php echo $schedule['20:00'] ?></td><?php } if(isset($schedule['21:00'])) { ?><td style="width:32px"><?php echo $schedule['21:00'] ?></td><?php } if(isset($schedule['22:00'])) { ?><td style="width:32px"><?php echo $schedule['22:00'] ?></td><?php } if(isset($schedule['23:00'])) { ?><td style="width:32px"><?php echo $schedule['23:00'] ?></td><?php } ?></tr>
<?php } ?>
</form>
</table>

我想要做的是有一个表标题(只是所有其他行上方的一行),显示每列的时间,但前提是该列中有一个值。

我想我的代码是这样的:

<tr><?php if(isset($schedule['00:00'])) { ?><td style="width:32px">00:00</td><?php } if(isset($schedule['01:00'])) { ?><td style="width:32px">01:00</td><?php } ?> etc.

但是,因为它是在 while 循环中,所以它会在每个实际行之前发生,这不是我想要发生的,我只想它在顶部发生一次。

如何解决这个问题?有什么我可以附加到它以使其只循环一次吗?

谢谢!

最佳答案

然后不要在 while 循环中输出行。将所有数据保存到 var 中。然后,如果 var 包含内容,则输出标题行,然后输出包含所有内容行的 var。

编辑

好吧,这是我写过的最难看的代码,您可能可以使用数组和其他东西来使代码变得更小。但这是获得想法的代码片段...捕获所有行。在执行此操作时,请检查每个字段是否已填写。如果是这样,则您将需要在标题行中为其添加一列。我们通过将 data0 设置为 true 来实现这一点。处理完整个数据后,我们检查每个变量并查看它是否为真。如果是这样,则打印标题行中的列。所以最后你会看到,你输出了 table-tag,然后是 headrow-var,然后是包含所有格式化数据的字符串,然后是结束 table-tag。这样你就明白了基本的想法。将标题行和其他行存储在单独的变量中,并按正确的顺序放置它们......

// Get data from database-table...
$schedule_db = mysql_query('...your query...') or die(mysql_error());

$data0 = false;
$data1 = false;
$data2 = false;
// reapeat this for all hours till 23...

while($schedule = mysql_fetch_array($schedule_db))
{
if(isset($schedule['00:00']))
{
$data0 = true;
$row = '<td style="width: 32px;">' . $schedule['00:00'] . '</td>';
}

// Reapeat this for every hour you need...
if(isset($schedule['01:00']))
{
$data1 = true;
$row .= '<td style="width: 32px;">' . $schedule['01:00'] . '</td>';
}

//...

$rows .= $row;
}

$headrow = '<tr>';
if($data0 === true)
$headrow .= '<th>00:00</th>'

if($data1 === true)
$headrow .= '<th>01:00</th>';

// Repeat for all hours...


$headrow = '</tr>';

echo '<table>';
echo $headrow;
echo $rows;
echo '</table>';

关于PHP while 循环和表头仅显示是否设置了 db 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com