-----更新-----
非常感谢@Tin Tran。以下是任何感兴趣的人的工作代码:
db_functions.php:
function fill_appts($id_sales) {
include '../scripts/mysql_login_pdo.php';
$query = "SELECT leads.fname,
leads.lname,
leads.addr_city,
appointments.appt_date,
appointments.appt_time,
appointments.id_lead,
d.dayDesc
FROM ( SELECT 'Monday' as dayDesc,1 as dayOrder
UNION SELECT 'Tuesday', 2
UNION SELECT 'Wednesday', 3
UNION SELECT 'Thursday', 4
UNION SELECT 'Friday', 5
UNION SELECT 'Saturday', 6
UNION SELECT 'Sunday', 7
)as d
LEFT JOIN appointments ON (DAYNAME(appointments.appt_date) = d.dayDesc)
INNER JOIN leads ON (leads.id = appointments.id_lead)
WHERE MONTH(appointments.appt_date) = MONTH(NOW())
AND appointments.id_sales = :id_sales
ORDER BY appointments.appt_date ASC,appointments.appt_time ASC,d.dayOrder ASC";
$stmt = $db->prepare($query);
$stmt->execute(array(
':id_sales' => $id_sales
));
$lastDay = '';
$last_appt_date = '';
$schedule_appts = '';
$schedule_appts .= '<table class="appointments">';
while ($row = $stmt->fetchObject()) {
$id_lead = $row->id_lead;
$fname = $row->fname;
$lname = $row->lname;
$addr_city = $row->addr_city;
$appt_date = $row->appt_date;
$appt_time = $row->appt_time;
$dayName = $row->dayDesc;
if (($dayName != $lastDay) && ($appt_date != $last_appt_date)) {
$schedule_appts .= "<tr class='weekday' value='$appt_date'><td>" . date('l m/d', strtotime($appt_date)) . "</td></tr>";
}
$schedule_appts .= "<tr id='$id_lead'><td><div class='appt'>" .
$fname . ' ' . $lname . '<br />' .
$appt_date . '<br />' .
$appt_time . "</div></td></tr>";
$lastDay = $dayName;
$last_appt_date = $appt_date;
}
$schedule_appts .= '</table>';
$db = null;
return $schedule_appts;
结果:
-----更新结束-----
-----更新-----
今天早上做了一点工作。我使用更改的代码获得了重复的日期名称。关于如何选择不同的工作日有什么想法吗?
db_functions.php:
...
function fill_appts($id_sales) {
include '../scripts/mysql_login_pdo.php';
$query = "SELECT `leads`.`fname`, "
. "`leads`.`lname`, "
. "`leads`.`addr_city`, "
. "`appointments`.`appt_date`, "
. "`appointments`.`appt_time`, "
. "`appointments`.`id_lead` "
. "FROM `leads`,`appointments` "
. "WHERE `leads`.`id` = `appointments`.`id_lead` "
. "AND MONTH(`appointments`.`appt_date`) = MONTH(NOW()) "
. "AND `appointments`.`id_sales` = :id_sales "
. "ORDER BY `appointments`.`appt_time` ASC";
$stmt = $db->prepare($query);
$stmt->execute(array(
':id_sales' => $id_sales
));
$schedule_appts = '';
$schedule_appts .= '<table class="appointments">';
while ($row = $stmt->fetchObject()) {
$id_lead = $row->id_lead;
$fname = $row->fname;
$lname = $row->lname;
$addr_city = $row->addr_city;
$appt_date = $row->appt_date;
$appt_time = $row->appt_time;
//------------------------Problematic area-----------------------
$schedule_appts .= "<tr class='weekday' value='$appt_date'><td>" . date('l', strtotime($appt_date)) . "</td></tr>";
//---------------------------------------------------------------
$schedule_appts .= "<tr id='$id_lead'><td><div class='appt'>" .
$fname . ' ' . $lname . '<br />' .
$appt_date . '<br />' .
$appt_time . "</div></td></tr>";
}
$schedule_appts .= '</table>';
$db = null;
return $schedule_appts;
}
...
-----结束更新-----
这是以下帖子的延续: PHP/MySQL - Dispatch Scheduler - Vertical Column
如前一篇文章所述,我离目标越来越近了。我正处于我希望约会在适当的工作日下方垂直堆叠的地步。我将展示我所拥有的和我想要的东西的图像,因为这会更容易理解。
我有什么:
我想要的:
这是我的代码,它生成第一张图片。我在“fill_appts”函数中指出了我认为我的问题所在:
日程表.php:
...
<div id="schedule_wrapper_all">
<?php print get_schedule_all(); ?>
</div>
...
db_functions.php:
function get_schedule_all() {
$headers = get_table_headers();
$appointments = appointments();
$schedule_builder = '';
$schedule_builder .= '<table class="appt_table">';
$schedule_builder .= $headers;
$schedule_builder .= $appointments;
$schedule_builder .= '</table>';
return $schedule_builder;
}
function get_table_headers() {
include '../scripts/mysql_login_pdo.php';
$query = "SELECT DISTINCT `appointments`.`id_sales`,`users`.`fname`,`users`.`lname` "
. "FROM `appointments`,`users` "
. "WHERE `appointments`.`id_sales` = `users`.`id` "
. "ORDER BY `appointments`.`id_sales` ASC";
$stmt = $db->prepare($query);
$stmt->execute();
$schedule_headers = '';
$schedule_headers .= '<tr>';
while ($row = $stmt->fetchObject()) {
$id_sales = $row->id_sales;
$fname = $row->fname;
$lname = $row->lname;
$schedule_headers .= "<th id='$id_sales'>" . $fname . ' ' . $lname . "</th>";
}
$schedule_headers .= '</tr>';
$db = null;
return $schedule_headers;
}
function fill_appts($id_sales) {
include '../scripts/mysql_login_pdo.php';
$query = "SELECT `leads`.`fname`, "
. "`leads`.`lname`, "
. "`leads`.`addr_city`, "
. "`appointments`.`appt_date`, "
. "`appointments`.`appt_time`, "
. "`appointments`.`id_lead` "
. "FROM `leads`,`appointments` "
. "WHERE `leads`.`id` = `appointments`.`id_lead` "
. "AND MONTH(`appointments`.`appt_date`) = MONTH(NOW()) "
. "AND `appointments`.`id_sales` = :id_sales "
. "ORDER BY `appointments`.`appt_time` ASC";
$stmt = $db->prepare($query);
$stmt->execute(array(
':id_sales' => $id_sales
));
$schedule_appts = '';
$schedule_appts .= '<table class="appointments">';
$schedule_appts .= get_weekdays();
while ($row = $stmt->fetchObject()) {
$id_lead = $row->id_lead;
$fname = $row->fname;
$lname = $row->lname;
$addr_city = $row->addr_city;
$appt_date = $row->appt_date;
$appt_time = $row->appt_time;
------------------------------------------------------------------------------------
//THIS IS WHERE I BELIEVE I NEED TO LOOP THROUGH RESULTS AGAIN:
// foreach ($day as $weekday){
$schedule_appts .= "<tr id='$id_lead'><td><div class='appt'>" .
$fname . ' ' . $lname . '<br />' .
$appt_date . '<br />' .
$appt_time . "</div></td></tr>";
// }
//END LOOP
------------------------------------------------------------------------------------**
}
$schedule_appts .= '</table>';
$db = null;
return $schedule_appts;
}
function appointments() {
include '../scripts/mysql_login_pdo.php';
$query = "SELECT DISTINCT `id_sales` FROM `appointments` ORDER BY `id_sales` ASC";
$stmt = $db->prepare($query);
$stmt->execute();
$appointments = '';
$appointments .= '<tr>';
while ($row = $stmt->fetchObject()) {
$id_sales = $row->id_sales;
$appointments .= '<td>';
$appointments .= fill_appts($id_sales);
$appointments .= '</td>';
}
$appointments .= '</tr>';
$db = null;
return $appointments;
}
function get_weekdays() {
$monday = date("Y-m-d",strtotime('monday this week'));
$tuesday = date("Y-m-d",strtotime('tuesday this week'));
$wednesday = date("Y-m-d",strtotime('wednesday this week'));
$thursday = date("Y-m-d",strtotime('thursday this week'));
$friday = date("Y-m-d",strtotime('friday this week'));
$saturday = date("Y-m-d",strtotime('saturday this week'));
$sunday = date("Y-m-d",strtotime('sunday this week'));
$week = "<tr class='weekday' value='$monday'><td>Monday</td></tr>"
. "<tr class='weekday' value='$tuesday'><td>Tuesday</td></tr>"
. "<tr class='weekday' value='$wednesday'><td>Wednesday</td></tr>"
. "<tr class='weekday' value='$thursday'><td>Thursday</td></tr>"
. "<tr class='weekday' value='$friday'><td>Friday</td></tr>"
. "<tr class='weekday' value='$saturday'><td>Saturday</td></tr>"
. "<tr class='weekday' value='$sunday'><td>Sunday</td></tr>";
return $week;
}
如您在我的函数中所见,这显示了给定月份内所有员工的所有约会。我同意脚本为每个月的每一天生成工作日名称,或者动态地只在当天安排约会时才生成工作日。我基于一周编写了“get_weekdays”函数,需要对其进行更新以检查一个月内的每一天。如果那部分太多了,我会继续研究答案。
提前感谢您的指导。与上一篇文章一样,我不是在找人为我编写函数,只是在正确的方向上给我一记 ;)
最佳答案
看看DAYNAME()功能。然后也许不是获取所有工作日,而是一次获取一个并循环遍历您的结果集以查看它是否是同一天并将其打印出来。 要重置到结果集的开头,您可以使用 http://www.php.net/manual/en/mysqli-result.data-seek.php
正如我的评论中提到的:尝试下面的查询并查看
SELECT leads.fname,
leads.lname,
leads.addr_city,
appointments.appt_date,
appointments.appt_time,
appointments.id_lead,
d.dayDesc
FROM ( SELECT 'Monday' as dayDesc,1 as dayOrder
UNION SELECT 'Tuesday', 2
UNION SELECT 'Wednesday', 3
UNION SELECT 'Thursday', 4
UNION SELECT 'Friday', 5
UNION SELECT 'Saturday', 6
UNION SELECT 'Sunday', 7
)as d
LEFT JOIN appointments ON (DAYNAME(appointments.appt_date) = d.dayDesc)
INNER JOIN leads ON (leads.id = appointments.id_lead)
WHERE MONTH(appointments.appt_date) = MONTH(NOW())
AND appointments.id_sales = :id_sales
ORDER BY d.dayOrder ASC,appointments.appt_time ASC
关于PHP/MySQL - 在适当的工作日安排约会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21011009/
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
使用Ruby1.9.2运行IDE提示说需要gemruby-debug-base19x并提供安装它。但是,在尝试安装它时会显示消息Failedtoinstallgems.Followinggemswerenotinstalled:C:/ProgramFiles(x86)/JetBrains/RubyMine3.2.4/rb/gems/ruby-debug-base19x-0.11.30.pre2.gem:Errorinstallingruby-debug-base19x-0.11.30.pre2.gem:The'linecache19'nativegemrequiresinstall
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我知道全局变量$!包含最新的异常对象,但我对下面的语法感到困惑。谁能帮助我理解以下语法?rescue$! 最佳答案 此构造可防止异常停止您的程序并使堆栈跟踪冒泡。它还会将该异常作为值返回,这很有用。a=get_me_datarescue$!在此行之后,a将保存请求的数据或异常。然后您可以分析该异常并采取相应措施。defget_me_dataraise'Nodataforyou'enda=get_me_datarescue$!puts"Executioncarrieson"pa#>>Executioncarrieson#>>#更现实的
我在我正在处理的一些代码中发现了这一点。它旨在解决从磁盘读取key文件的要求。在生产环境中,key文件的内容位于环境变量中。旧代码:key=File.read('path/to/key.pem')新代码:key=File.read('|echo$KEY_VARIABLE')这是如何工作的? 最佳答案 来自IOdocs:Astringstartingwith“|”indicatesasubprocess.Theremainderofthestringfollowingthe“|”isinvokedasaprocesswithappro
我今天看到了一个ruby代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem