Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重复列表_Php_Mysql - Fatal编程技术网

Php 重复列表

Php 重复列表,php,mysql,Php,Mysql,我的编码有两个部分,第一部分将呼出开始日期和结束日期之间的日期(我可能的日期)。第二部分回显存储在MYSQL数据库中的日期(事件日期)。我现在遇到的问题是,当我尝试回显变量以查找可能的日期和事件日期时。它们在这些单独的部分中回显完整的列表,但在最后一部分中,它只回显两个变量列表中的最后一个值。我试着让它们成为全局变量,但仍然有相同的结果。代码如下: <?php //Section one// $date1 = '10/06/2014'; $date2 = '30/06/2014';

我的编码有两个部分,第一部分将呼出开始日期和结束日期之间的日期(我可能的日期)。第二部分回显存储在MYSQL数据库中的日期(事件日期)。我现在遇到的问题是,当我尝试回显变量以查找可能的日期和事件日期时。它们在这些单独的部分中回显完整的列表,但在最后一部分中,它只回显两个变量列表中的最后一个值。我试着让它们成为全局变量,但仍然有相同的结果。代码如下:

 <?php
 //Section one//
$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'));
}
//section two - Event dates in the MYSQL database//


 $con=mysqli_connect("localhost","apple","Orange1","cal");
  // 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");
}

// Section three - Removing 'event dates list' from 'possible dates list' //

echo "test"."<br>";
echo "$possible"."<br>";
echo "$taken"."<br>";



?>

计划从可能的日期中删除存储在MYSQL数据库中的事件日期,以生成一个新的列表,但在上一节中确保$APPLIBE和$TAKED代表了正确的值,但它们没有

我目前得到的是:
测试
30062014
17082014

而我应该得到:
测试

10062014

您正在覆盖循环中的变量$PROABLE和$TAKED(foreach,while)

您可以使用数组:

$possible=array(); # before foreach loop!
...
$possible[]=($date->format('dmY'));
或者将其全部添加为字符串(取决于您的需要):

$problem=”“#在foreach循环之前!
...
$mablue.=($date->format('dmY'))。“
”;
您在每次迭代
foreach
时都会覆盖
$mably
。也许你的意思是
$mable[]=[…]
?从那里开始,在
while
循环中,您可以使用
unset($mablue[array\u search($take,$mablue)])
删除数据库中存在的项。我认为您需要
if($datemonth<10){
,因为我认为您不需要“011”同样,当试图用代数方法确定一个数字是否小于另一个数字时,不应使用引号。无法使用ddmmyyyy格式确定一个日期小于另一个日期。as 02062014将小于01052014。最好将所有日期转换为时间格式(从纪元开始的秒数)通过strotime(…),然后可以执行直接的数字比较。谢谢,我会尝试一下,看看我是否可以让它工作。
$possible=""; # before foreach loop!
...
$possible.= ($date->format('dmY'))."<br>";