Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_Mysqli - Fatal编程技术网

Php 管理员批准后显示日期之间的图像

Php 管理员批准后显示日期之间的图像,php,mysql,mysqli,Php,Mysql,Mysqli,只有一个“是”批准时,所有内容都显示良好。(由于管理区域中的代码,无法进行是/是批准) 如果在同一日期范围内有两个日期的“是/否”组合,则行数=0,因此显示“填充图像”。我只希望显示“是”批准,而忽略“否” 我认为我需要做的是,在检查匹配日期的数据库之后,检查ID数组,然后查询数组中的Yes批准 我可能是错的,但如果这是正确的,如何最好地实施 谢谢 <?php include('mysql_connect.php');{ $location='1'; }

只有一个“是”批准时,所有内容都显示良好。(由于管理区域中的代码,无法进行是/是批准)

如果在同一日期范围内有两个日期的“是/否”组合,则行数=0,因此显示“填充图像”。我只希望显示“是”批准,而忽略“否”

我认为我需要做的是,在检查匹配日期的数据库之后,检查ID数组,然后查询数组中的Yes批准

我可能是错的,但如果这是正确的,如何最好地实施

谢谢

     <?php 



include('mysql_connect.php');{

  $location='1';

  }
  {
 $resultSet = $mysqli->query("SELECT * FROM advert WHERE adloc = '$location'");


if($resultSet->num_rows > 0){
    while($rows = $resultSet->fetch_assoc())
    {
        $id = $rows ['id'];
        $start = $rows ['start'];
        $end = $rows ['enddate'];
        $business = $rows ['business'];
        $email = $rows ['email'];
        $tel = $rows ['tel'];
        $web = $rows ['web'];
        $advert = $rows ['image'];

    $Date = date('Y-m-d');
    $Date=date('Y-m-d', strtotime($Date));; 
    $DateBegin = date('Y-m-d', strtotime("$start"));
    $DateEnd = date('Y-m-d', strtotime("$end"));
}
}
if (($Date > $DateBegin) && ($Date < $DateEnd))
    {
$sql = "SELECT * FROM advert WHERE id = $id AND approval = 'Y'";
$sth = $mysqli->query($sql);



if($sth->num_rows == 0){echo "FILLER IMAGE";
}
else
{

$result=mysqli_fetch_array($sth);
$output= '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';

    }
    }
}
?>

<?php 
echo "$output";
?>

实际上您错了,因为您使用了从while中获取的最后一个id

您可以像这样直接从sql查询中筛选介于和之间的日期

使用运算符和

如果你只需要一个结果,区别于其他人的批准!='Y'

那就

SELECT 
 *
FROM advert
WHERE 
   adloc = '$location' AND
   (NOW() BETWEEN start AND enddate) AND
   approval = 'Y'
LIMIT 1
当审核为Y且介于日期范围之间时,此字段将返回一个别名字段,其中包含1;如果不是其他记录,则返回0

现在,您的代码将只包含一个查询

$query = "query ";
$smt = $mysqli->query($query);
if($smt->num_rows > 0)
{
    $result=mysqli_fetch_array($smt);
    $output= '<img src="data:image/jpeg;base64,'.base64_encode($result['image']).'"/>';
}else
    // not results
$query=“query”;
$smt=$mysqli->query($query);
如果($smt->num_rows>0)
{
$result=mysqli\u fetch\u数组($smt);
$output='';
}否则
//不是结果

您可以在sql查询的CASE子句中使用BETWEEN条件!您是否可以编辑您的问题,以便用户能够理解您的问题。要查询出两个指定日期之间审批状态为“Y”的所有广告,您试图实现什么目标?是@Nouphal.M。应该只有一个广告显示为Y,因为不可能批准多个广告。请尝试选择*FROM advert WHERE(现在()在开始日期和结束日期之间),批准='Y'谢谢@MTroy。完全不熟悉这种技术。只是想让我的头脑清醒一下。在我的代码中应该在哪里使用它?我看到没有变量用于开始和结束?您不需要进行多个查询,然后只需测试num rows>0并获取图像,否则您的另一个操作(查找更新的代码)哦,sry,没有看到您只需要一个结果,然后我更新我的代码谢谢@MTroy正在尝试。非常感谢!将$result快速更改为$rows,但我相信如果您看到它,您一定会知道@姆特罗伊
$query = "query ";
$smt = $mysqli->query($query);
if($smt->num_rows > 0)
{
    $result=mysqli_fetch_array($smt);
    $output= '<img src="data:image/jpeg;base64,'.base64_encode($result['image']).'"/>';
}else
    // not results