尝试创建一个脚本,以便根据开始日期和结束日期之间的日期列表检查按表单添加到mysql数据库的日期。如果日期冲突,它们将从开始日期到结束日期列表中删除,不会产生任何冲突。这就是我到目前为止所做的:
`
$date1 = '10/06/2014';
$date2 = '30/06/2014';
function returnDates($fromdate, $todate) {
$fromdate = \DateTime::createFromFormat('d/m/Y', $fromdate);
$todate = \DateTime::createFromFormat('d/m/Y', $todate);
return new \DatePeriod(
$fromdate,
new \DateInterval('P1D'),
$todate->modify('+1 day')
);
}
$datePeriod = returnDates($date1, $date2);
foreach($datePeriod as $date) {
$possible=$date->format('dmY');
}`
$con=mysqli_connect("localhost","user","pass","table");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM events");
while($row = mysqli_fetch_array($result)) {
$dateday = $row['Day'];
$datemonth = $row['Month'];
$dateyear = $row['Year'];
if($datemonth<"12"){
$newmonthdate=("0$datemonth");
}else{
$newmonthdate=("$datemonth");
}
$taken="$dateday$newmonthdate$dateyear";
}
if( $taken=$possible){
echo $taken;
最后一点是我坚持使用的部分,让它打印出从开始日期到结束日期的日期列表,这些日期不包含mysql数据库中的日期。目前我的日期格式为23062014.(对此我不知所措,所以我觉得我已经把它变得比它需要的更复杂了)谢谢你能提供帮助
答案 0 :(得分:0)
好的,所以你可以从一个可能的日期数组开始,如下所示:
$datePeriod = returnDates($date1, $date2);
foreach($datePeriod as $date) {
$possible[] = $date->format('dmY');
}
在你的while循环中:
$taken = "$dateday$newmonthdate$dateyear";
array_remove($possible, $taken);
在while循环之后,您可以遍历$ possible数组,该数组现在只包含可用日期。
array_remove函数如下:
function array_remove(&$source, $value) {
$result = array();
foreach ($source as $s_value) {
if ($s_value != $value) {
$result[] = $s_value;
}
}
$source = $result;
}