Php 将数组与数据库进行比较
我将客户花费的时间存储在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” 09:00:00、09:30:00、10:00:00、10:30:00 我不明白怎么了?我怎么能一次就把我们所有的东西整理好呢Php 将数组与数据库进行比较,php,mysql,foreach,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” 09: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
$result=mysqli\u查询($con,'SELECT*FROM consulta
其中professional=1
客户机=0’;
while($row=mysqli\u fetch\u数组($result)){
//1-将小时数放入数组中:
$hours=数组(“09:00:00”、“09:30:00”、“10:00:00”、“10:30:00”);
//2-为数组的每个元素指定var$hour
foreach(小时为$hour)
{
//3-使用de数据库的每个元素检查数组的每个元素:
如果($row['hora']==$hour){
//在数据库中找到了小时
echo“”.$hour.
”;
}否则{
//找不到时间
echo“”.$hour.
”;
}
}//端部foreach
}//结束时
在本例中,如果我echo$row['hora']
'代码>它给了我:
09:00:00
10:00:00您的代码看起来不错。如果需要,您可以尝试其他解决方案:
$result=mysqli_query($con,'SELECT*FROM consulta,其中professional=1,cliente=0')
//变量转储($result);
$hours=数组(“09:00:00”、“09:30:00”、“10:00:00”、“10:30:00”);
而($row=mysqli\u fetch\u数组($result,mysqli\u ASSOC)){
if(在数组中($row['hora',$hours))
{
echo'”.$row['hora']。
';
}
否则{
echo'”.$row['hora']。
';
}
}
第二版:
//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>';
}
}
//Improme todos los elementos以数组形式呈现$hours
而($row=mysqli\u fetch\u数组($result,mysqli\u ASSOC)){
$rows[]=$row['hora'];
}
foreach(小时为$hour){
if(在_数组中($hour,$rows))
{
echo“”.$hour.
”;
}
否则{
echo“”.$hour.
”;
}
}
当然,您可以将“time”字段转换为char,然后从行中删除所有“:”,然后再次检查匹配项
根据我的经验,我在比较“日期”字段时遇到了问题,因为我的服务器位置(巴西),正如我所见,您也来自这里
希望能有帮助
编辑:
另外,从while
循环中删除$hours
数组,并从中删除“:”。我觉得您的代码很好。如果我用简单的整数替换您的时间,并将其与整数表进行比较,则输出完全符合预期。它也适用于字符串!啊,除了我认为您每次都在完整地遍历这两个数组之外!它给了我一个错误:第43行的/Applications/MAMP/htdocs/trobadaVirtual/reserva calendari/3/9.1.php中的数组到字符串转换while这里不需要while?尝试while($row=mysqli_fetch_Array($result))而不是foreach($result as$row),也许我可以在数组中转换数据库的结果。我想现在他们不是。你知道怎么做吗?这只给出了数据库中的小时数,而不是所有的小时数。我不知道我是否理解。如何将时间字段转换为字符?。顺便说一句,我来自安道尔(欧洲的一个小国),我没有听说过服务器有任何问题?那是我的错。嗯,这取决于,这个数据库是生产数据库还是开发数据库?我在本地使用Mamp
//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>';
}
}