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