首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将mysql记录从设定的日期合并到一个时间表中?

将mysql记录从设定的日期合并到一个时间表中?
EN

Stack Overflow用户
提问于 2013-11-21 06:34:11
回答 1查看 246关注 0票数 0

我正试着为5个人制定一个小的预约时间表,供日常使用。我现在唯一的问题是把同一批工作人员的所有约会都列在一栏里。我试过几种不同的方法,但到目前为止没有运气。我会发布我得到的最好的两次尝试。

下面是我从为第一次尝试编写的代码中获得的示例输出。

http://jsfiddle.net/yy885/CXcjR/2/

它单独显示约会,因为对此输出的查询只是对指定日期的工作人员的正常查询。我的问题是,我无法找到一种方法将这3条记录合并并输出到这个时间表中的一列中。现在,如果我每个人都有5个约会,那么这将显示25条记录(25列),这些记录将不能很好地工作。根据我到目前为止所掌握的代码,我可以想出一种快速的方法来解决问题,但我不喜欢使用它。一次只显示一名工作人员。但是,这样的方式对于要标记约会的女孩来说是很困难的,因为她可能会忽略时间表,错误地将日期/时间分配给客户。

代码语言:javascript
运行
复制
<?php

include("connect.php");//connect to the database.
//$todaydate = date('m/d/Y');
$todaydate = "11/22/2013";
$staffd = "Jerry";
$query = mysql_query('SELECT * FROM appointment2 where date="'.$todaydate.'" AND      staff="'.$staffd.'"');
$num_row = mysql_num_rows ($query);

if ($num_row > 0 ) {
$i=0;
while($i < $num_row){  

$date = mysql_result($query,$i,"date");
$clientid = mysql_result($query,$i,"clientid");
$staff = mysql_result($query,$i,"staff");
$status = mysql_result($query,$i,"status");
$paid = mysql_result($query,$i,"paid");
$comment = mysql_result($query,$i,"comment");

$t0900 = mysql_result($query,$i,"0900");
$t0915 = mysql_result($query,$i,"0915");
$t0930 = mysql_result($query,$i,"0930");
$t0945 = mysql_result($query,$i,"0945");
$t1000 = mysql_result($query,$i,"1000");
$t1015 = mysql_result($query,$i,"1015");
$t1030 = mysql_result($query,$i,"1030");
$t1045 = mysql_result($query,$i,"1045");
$t1100 = mysql_result($query,$i,"1100");
$t1115 = mysql_result($query,$i,"1115");
$t1130 = mysql_result($query,$i,"1130");
$t1145 = mysql_result($query,$i,"1145");
$t1200 = mysql_result($query,$i,"1200");
$t1215 = mysql_result($query,$i,"1215");
$t1230 = mysql_result($query,$i,"1230");
$t1245 = mysql_result($query,$i,"1245");
$t1300 = mysql_result($query,$i,"1300");
$t1315 = mysql_result($query,$i,"1315");
$t1330 = mysql_result($query,$i,"1330");
$t1345 = mysql_result($query,$i,"1345");
$t1400 = mysql_result($query,$i,"1400");
$t1415 = mysql_result($query,$i,"1415");
$t1430 = mysql_result($query,$i,"1430");
$t1445 = mysql_result($query,$i,"1445");
$t1500 = mysql_result($query,$i,"1500");
$t1515 = mysql_result($query,$i,"1515");
$t1530 = mysql_result($query,$i,"1530");
$t1545 = mysql_result($query,$i,"1545");
$t1600 = mysql_result($query,$i,"1600");
$t1615 = mysql_result($query,$i,"1615");
$t1630 = mysql_result($query,$i,"1630");
$t1645 = mysql_result($query,$i,"1645");
$t1700 = mysql_result($query,$i,"1700");
$t1715 = mysql_result($query,$i,"1715");
$t1730 = mysql_result($query,$i,"1730");
$t1745 = mysql_result($query,$i,"1745");
$t1800 = mysql_result($query,$i,"1800");
$t1815 = mysql_result($query,$i,"1815");
$t1830 = mysql_result($query,$i,"1830");
$t1845 = mysql_result($query,$i,"1845");
$t1900 = mysql_result($query,$i,"1900");
$t1915 = mysql_result($query,$i,"1915");
$t1930 = mysql_result($query,$i,"1930");
$t1945 = mysql_result($query,$i,"1945");
$t2000 = mysql_result($query,$i,"2000");
$t2015 = mysql_result($query,$i,"2015");
$t2030 = mysql_result($query,$i,"2030");
$t2045 = mysql_result($query,$i,"2045");


echo       '<table border="1">';
echo       '<tr><td style="word-wrap: break-word">'.$date.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">&nbsp;&nbsp;&nbsp;'.$staff.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t0900.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t0915.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t0930.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t0945.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1000.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1015.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1030.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1045.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1100.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1115.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1130.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1145.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1200.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1215.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1230.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1245.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1300.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1315.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1330.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1345.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1400.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1415.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1430.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1445.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1500.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1515.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1530.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1545.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1600.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1615.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1630.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1645.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1700.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1715.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1730.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1745.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1800.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1815.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1830.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1845.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1900.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1915.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1930.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t1945.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t2000.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t2015.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t2030.'</td></tr>';
echo       '<tr><td style="word-wrap: break-word">'.$t2045.'</td></tr>';
echo       '</table>';

++$i; } } else { echo "No record found"; } 
?>

第二次尝试。我用日期、时间、人员和事件重写了mysql。我使用concat将时间和事件放入一个字符串中。所以我使用的查询只是调用这个,日期和员工的名字。然后,我将这些结果放入数组中并提取出来。

这是结果。

代码语言:javascript
运行
复制
0945 Event A part 1
1115 Event A part 2
1315 Event B part 1
1630 Event B part 2
1745 Event B part 3
1900 Event C part 1
1945 Event C part 2
2015 Event B part 4

但是我不知道该怎么做才能把它们很好地写进时间表。我可以把它们放进桌子里,但是它不会显示那些空的插槽,这会使它很难读懂。

下面是我为这一尝试使用的代码。

代码语言:javascript
运行
复制
<?php
include("connect.php");//connect to the database.
$todaydate = "11/22/2013";
$staffd = "Jerry";

$query = 'SELECT CONCAT(time," ",event) FROM appointment3 where date="'.$todaydate.'" AND staff="'.$staffd.'"';
$result = mysql_query($query) or die ("no query");

$result_array = array();
while($row = mysql_fetch_assoc($result))
{
    $new_arr[] = $row['CONCAT(time," ",event)'];    
}
sort($new_arr);
foreach ($new_arr as $value) {
    echo $value."<br />\n";
}
?>

任何建议都是受欢迎的,因为我仍然认为我的方式行不通.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 06:48:43

首先,与其有500行回显<tr>...</tr>,不如在它们上循环。

如果空窗口打扰您,只需生成它们!它们不包含任何东西,所以你可以用它来填补所缺的时间。

如果您的时间表存储在关联数组中,则可以使用以下方法完成

代码语言:javascript
运行
复制
$lines = ...;

$hours = [];
foreach ($lines as $line)
{
    $hour = substr($line, 0, 4);
    $hours[$hour] = $line;
}

然后,可以使用以下方法生成默认的空事件:

代码语言:javascript
运行
复制
for ($i = 0; $i < 24; $i ++)
    for ($j = 0; $j < 60; $j += 5)
    {
        $hour = sprintf('%02d%02d', $i, $j);
        if (!isset($hours[$hour]))
            $hours[$hour] = "$hour (empty)";
    }

var_dump($hours);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20114073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档