我将客户花费的时间存储在MySql数据库中。现在我想在网络上显示所有小时(和半小时),按9,9,30,10,10,30的顺序排列...并显示哪几个小时是空闲的。这里的代码只有在数据库中有一个小时的情况下才能工作。如果我在网络上的数据库中有两个小时,它会重复所有的小时两次,如果我在数据库中有3个小时,它会重复3次…例如,我在数据库中有9:00:00和10:00:00,第一次给出了红色的9,第二次只给出了10的红色: 09:00:00","09:30:00","10:00:00","09:30:00","10:00:00","10:30:00“,"10:30:00”
我不明白出了什么问题?我怎么能把所有的都整理好,而且只有一次呢?
$result = mysqli_query($con, 'SELECT * FROM consulta
WHERE professional=1
AND client=0');
while ($row = mysqli_fetch_array($result)) {
// 1- put the hours in a array:
$hours = array("09:00:00","09:30:00","10:00:00","10:30:00");
// 2- give each element of the array the var $hour
foreach ($hours as $hour)
{
// 3- check each element of the array with each element of de database:
if ($row['hora'] == $hour) {
// hour was found in the database
echo '<p style="color:blue;">'. $hour .'</p>';
} else {
// hour was not found
echo '<p style="color:red;">'. $hour .'</p>';
}
}// end foreach
} // end while在这个例子中,如果我使用echo $row['hora'] . '<br>';,它会给我:
09:00:00
10:00:00
发布于 2014-03-06 00:07:20
你的代码看起来不错。如果您愿意,可以尝试另一种解决方案:
$result = mysqli_query($con,'SELECT * FROM consulta professional=1 AND cliente=0');
// var_dump($result);
$hours = array("09:00:00","09:30:00","10:00:00","10:30:00");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
if (in_array($row['hora'], $hours))
{
echo '<p style="color:blue;">'.$row['hora'] .'</p>';
}
else{
echo '<p style="color:red;">'. $row['hora'] .'</p>';
}
}第二个版本:
//imprime todos los elementos presentes en array $hours
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
$rows[] = $row['hora'];
}
foreach ($hours as $hour) {
if (in_array($hour, $rows))
{
echo '<p style="color:blue;">'.$hour .'</p>';
}
else{
echo '<p style="color:red;">'. $hour .'</p>';
}
}发布于 2014-03-06 00:20:14
当然,您可以将“time”字段转换为char,然后删除行中所有的“:”,然后再次检查匹配项。
根据我的经验,由于我的服务器位置(巴西),我在比较'date‘字段时遇到了问题,正如我所看到的,你也来自这里。
希望能有所帮助。
编辑:
另外,从while循环中删除$hours数组,并删除其中的“:”。
https://stackoverflow.com/questions/22202364
复制相似问题