将数组与数据库进行比较

时间:2014-03-05 15:44:37

标签: php mysql foreach

我在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”,“10:30” :00 9点00" 分○○秒, “9时三十〇分00秒”, “10:00:00”,“10时三十分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

2 个答案:

答案 0 :(得分:0)

你的代码似乎很好。如果需要,您可以尝试其他解决方案:

$ result = mysqli_query($ con,'SELECT * FROM consulta WHERE 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>';

            }
    }

答案 1 :(得分:0)

嗯,当然,您可以将'time'字段转换为char,然后从行中删除所有':',然后再次检查匹配。

根据我的经验,我在比较'日期'字段方面存在问题,因为我的服务器位置(巴西),而且我可以看到,你也来自这里。

希望它有所帮助。

编辑:

另外,从$hours循环移除while数组,并从中删除':'。