PHP回显数据库中的修改列表

时间:2014-06-22 23:40:25

标签: php mysql

尝试创建一个脚本,以便根据开始日期和结束日期之间的日期列表检查按表单添加到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.(对此我不知所措,所以我觉得我已经把它变得比它需要的更复杂了)谢谢你能提供帮助

1 个答案:

答案 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;
}