Php 如何在mysql中求和不同的值
我在mysql上遇到了一个小问题。我有一套日期范围。Ex:从2011年1月1日至2011年6月1日,该范围的价格为每天4500美元。下一个日期范围从2001年7月1日开始至2011年12月1日,该范围的价格为每天300美元 如果有人在ex:05-04-2011和10-07-2011之间注册了一天,我需要添加天数的价格。在这两个日期范围之间,价格是不同的。如何分别添加它们 我是马·tblPhp 如何在mysql中求和不同的值,php,mysql,datetime,date,Php,Mysql,Datetime,Date,我在mysql上遇到了一个小问题。我有一套日期范围。Ex:从2011年1月1日至2011年6月1日,该范围的价格为每天4500美元。下一个日期范围从2001年7月1日开始至2011年12月1日,该范围的价格为每天300美元 如果有人在ex:05-04-2011和10-07-2011之间注册了一天,我需要添加天数的价格。在这两个日期范围之间,价格是不同的。如何分别添加它们 我是马·tbl 谢谢你可以做一个循环 每次增加日期,然后进行查询,以了解该日期值落在哪个列中。。因此,你可以减少相应的金额
谢谢你可以做一个循环 每次增加日期,然后进行查询,以了解该日期值落在哪个列中。。因此,你可以减少相应的金额 为此,您需要管理日期,比如一个月有多少天。。如果年份发生变化,则还需要将月份设置为1 我做了一个代码。。。。显示日历。你可以随机应变
$strt_日期='01-04-2011';
$end_date='05-07-2011';
$date_array=array();
$date_数组=分解('-',$strt_date);
$back_strt_date=$date_数组[2]。“-”$date_数组[0]。“-”$date_数组[1];//YYYY-MM-DD
$front_strt_date=$date_数组[1]。“-”$date_数组[0]。“-”$date_数组[2];//年月日
$date_array=array();
$date_数组=分解('-',$end_date);
$back_bk_date=$date_数组[2]。“-”$date_数组[0]。“-”$date_数组[1];//YYYY-MM-DD
$front_end_date=$date_数组[1]。“-”$date_数组[0]。“-”$date_数组[2];//年月日
//正在提取选定日期间隔的数据
//$rs_couse_cnt=get_course_cnt($back_strt_date,$back_bk_date);
如果($rs\u couse\u cnt=='未找到记录'){
echo“未找到任何记录。”;
出口
}
//将字符串转换为时间戳
$sdate=strottime($front\strt\u date);
$edate=strottime($front\u end\u date);
//正在获取日期的开始和结束月份。。。
$st_dt=array();
$en_dt=array();
//将日期字符串分解到数组中
$st_dt=爆炸('-',$strt_日期);
$en_dt=爆炸('-',$end_date);
//正在为变量指定月份值。。。
$st_mon=$st_dt[0];
$en_mon=$en_dt[0];
//计算月差。。
$mon_diff=$en_mon-$st_mon;
//正在将年份值分配给变量。。。。
$st_year=$st_dt[2];
$en_year=$en_dt[2];
//正在将时间戳转换为所需的日期格式。。。
$st_日期=日期($F jS Y',$sdate);
$en_date=日期('F jS Y',$edate);
回显“$st_日期-$en_日期”;
//echo“
开始月为$st_mon,结束月为$en_mon,月差为$mon_diff”;
//echo“
开始年份为$st_年,结束年份为$en_年”;
$ttl_cnt=0;
对于($i=$st_mon;($st_year从2011年6月2日到2011年6月30日的费率是多少?不清楚您要加在一起的是什么。您是否需要获得用户在每个价格下注册的天数,然后根据此调整总体价格?表中的金额是每天、每月的价格等???@T.布赖恩·琼斯:金额是每天的价格。因此,从2011年1月1日到2011年6月1日,价格是每天4500英镑,与其他日期范围相同。我需要计算一个总数,例如:如果用户注册的日期范围是2011年3月14日到2011年11月8日。因此,价格应该每天计算。@binil:在2011年6月2日到2011年6月30日之间,将有一个默认价格范围,并且应该补充的是,我真正需要的是:我有一个酒店搜索表单,用户可以来这里选择到达日期和离开日期。管理员可以在一段时间内更改价格。管理员为2011年1月15日至2011年2月20日分配1000美元,为2011年2月21日至2011年5月30日分配5000美元。如果用户在2011年1月10日至10日之间搜索酒店2011年2月28日。在第2个月的第21个月,价格发生了变化。因此,我需要计算从2011年1月10日到2011年2月20日的1000美元价格,以及从2011年2月21日到2011年2月28日的5000美元价格。这将是整个时间段的总和。因此,我需要编写一个代码来添加它们。
$strt_date = '01-04-2011';
$end_date = '05-07-2011';
$date_array = array();
$date_array = explode('-',$strt_date);
$back_strt_date = $date_array[2]."-".$date_array[0]."-".$date_array[1];// YYYY-MM-DD
$front_strt_date = $date_array[1]."-".$date_array[0]."-".$date_array[2];// MM-DD-YYYY
$date_array = array();
$date_array = explode('-',$end_date);
$back_bk_date = $date_array[2]."-".$date_array[0]."-".$date_array[1]; // YYYY-MM-DD
$front_end_date = $date_array[1]."-".$date_array[0]."-".$date_array[2]; // MM-DD-YYYY
// fetching data for selected date interval
//$rs_couse_cnt = get_course_cnt($back_strt_date,$back_bk_date);
if($rs_couse_cnt =='No record Found'){
echo "No Records Found.";
exit;
}
// converting string in to TIMESTAMP
$sdate = strtotime($front_strt_date);
$edate = strtotime($front_end_date);
//getting starting and ending month of date...
$st_dt = array();
$en_dt = array();
// exploding date string in to array
$st_dt = explode('-',$strt_date);
$en_dt = explode('-',$end_date);
// assigning month value to variables...
$st_mon = $st_dt[0];
$en_mon = $en_dt[0];
// calculating month diff..
$mon_diff = $en_mon - $st_mon;
// assinging year value to variables....
$st_year = $st_dt[2];
$en_year = $en_dt[2];
//converting TIMESTAMP into desired date format...
$st_date = date('F jS Y',$sdate);
$en_date = date('F jS Y',$edate);
echo " <center><h2>$st_date - $en_date</h2></center>";
//echo " <br />start month is $st_mon & end month is $en_mon & month diff is $mon_diff";
//echo " <br />start year is $st_year & end year is $en_year";
$ttl_cnt =0;
for($i=$st_mon;($st_year<=$en_year);$i++){
$end = $en_mon+1;
if($i == $end && $st_year == $en_year){
break;
}
// this will continue until all months are completed
$st_mon_time_stamp = mktime(0,0,0,$i,1,$st_year);
echo "<br /><br /><center> <h3> ".date("F Y",$st_mon_time_stamp)."</h3></center>";
$no_of_days = date("t",$st_mon_time_stamp);
$str_cal ='<table border="1px" width="100%">
<thead>
<th>Sunday</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saturday</th>
</thead>
<tbody>';
$cnt = 1;
$week = 0;
$mon_cnt = 0;
for($j=1;$j<=$no_of_days;$j++){
if($cnt >= $no_of_days){
break;
}
if($cnt == 1){
// for first row....
$time_stamp = mktime(0,0,0,$i,$cnt,$st_year);
$str_cal .='<tr>';
if(date("l",$time_stamp) == 'Sunday'){
$space = 0;
}
else if(date("l",$time_stamp) == 'Monday'){
$space = 1;
}
else if(date("l",$time_stamp) == 'Tuesday'){
$space = 2;
}
else if(date("l",$time_stamp) == 'Wednesday'){
$space = 3;
}
else if(date("l",$time_stamp) == 'Thursday'){
$space = 4;
}
else if(date("l",$time_stamp) == 'Friday'){
$space = 5;
}
else if(date("l",$time_stamp) == 'Saturday'){
$space = 6;
}
$dis = 7 - $space; //exit;
while($space != 0){
// this will display spaces in first row...
$str_cal .='<td> </td>';
$space--;
}
while($dis != 0){
// this will display calender date in first row...
if(strlen($i) == 1 && strlen($cnt)==1){
$date = $st_year.'-0'.$i.'-0'.$cnt;
}
else{
$date = $st_year.'-'.$i.'-'.$cnt;
}
$flg = 0;
for($rs=0;$rs<count($rs_couse_cnt);$rs++){
if($rs_couse_cnt[$rs]['EnrolledDate'] == $date){
$time_stmp = strtotime($date);
$str_cal .='<td>'.date('j S',$time_stmp).'<br /><br />Count : <a href="light_box_course.php" onClick="$.showAkModal(\'light_box_course.php?type=list&session_id='.$session_id.'&campus_id='.$campus_id.'&strt_date='.$rs_couse_cnt[$rs]['EnrolledDate'].'&end_date='.$rs_couse_cnt[$rs]['EnrolledDate'].'\',\'\',500,500);return false;">'.$rs_couse_cnt[$rs]['CourseCount'].'</a></td>';
$cnt++;
$mon_cnt += $rs_couse_cnt[$rs]['CourseCount'];
$flg = 1;
break;
}
}
if($flg == 0){
$time_stmp = strtotime($date);
$str_cal .='<td>'.date('j S',$time_stmp).'<br /><br /> </td>';
$cnt++;
}
$dis--;
}
$str_cal .='</tr>';
}
else{
// for rest of the rows...
$str_cal .='<tr>';
for($w=0;$w<7;$w++){
if($cnt<=$no_of_days){
if(strlen($i) == 1){
$date = $st_year.'-0'.$i.'-'.$cnt;
}
else{
$date = $st_year.'-'.$i.'-'.$cnt;
}
$flg = 0;
for($rs=0;$rs<count($rs_couse_cnt);$rs++){
if($rs_couse_cnt[$rs]['EnrolledDate'] == $date){
$time_stmp = strtotime($date);
$str_cal .='<td>'.date('j S',$time_stmp).'<br /><br />Count :<a href="light_box_course.php" onClick="$.showAkModal(\'light_box_course.php?type=list&session_id='.$session_id.'&campus_id='.$campus_id.'&strt_date='.$rs_couse_cnt[$rs]['EnrolledDate'].'&end_date='.$rs_couse_cnt[$rs]['EnrolledDate'].'\',\'\',500,500);return false;">'.$rs_couse_cnt[$rs]['CourseCount'].'</a></td>';
$flg = 1;
$cnt++;
$mon_cnt += $rs_couse_cnt[$rs]['CourseCount'];
break;
}
}
if($flg == 0){
$time_stmp = strtotime($date);
$str_cal .='<td>'.date('j S',$time_stmp).'<br /><br /> </td>';
$cnt++;
}
}
else{
$str_cal .='<td> </td>';
}
}
$str_cal .='</tr>';
}
}
$ttl_cnt += $mon_cnt;
if($mon_cnt != 0){
$str_cal .='<tr>
<td> Monthly Count :</td>
<td colspan="6"><a href="light_box_course.php" onClick="$.showAkModal(\'light_box_course.php?type=list&session_id='.$session_id.'&campus_id='.$campus_id.'&strt_date='.$st_year."-".(strlen($i)==1?"0".$i:$i)."-"."01".'&end_date='.$st_year."-".(strlen($i)==1?"0".$i:$i)."-".$no_of_days.'\',\'\',500,500);return false;">'.$mon_cnt.'</td>
</tr>';
}else{
$str_cal .='<tr>
<td> Monthly Count :</td>
<td colspan="6">'.$mon_cnt.'</td>
</tr>';
}
$str_cal .='</tbody>
</table>';
if($i == 12){
$i=0;
$st_year ++;
}
echo $str_cal;
}