0

我正在编写一个代码来显示最近的商店位置及其营业状态(例如商店是否按月营业或关闭)。我正在使用以下代码,该代码适用于距离,但我想对列表进行排序以显示数据及其打开状态,然后按距离对列表进行排序。如果条件代码进入查询,你能帮我把我的 PHP 放在下面吗?我有 2 列'start_date'的值为'int'月份,并且'end_date'......我正在使用以下 php 代码来显示 html 中的状态。你能帮我改进我的查询,先按打开状态对结果进行排序,然后按距离对结果进行排序

$currMonth = date('m');

$query="SELECT *,
            6371 * 2 * ASIN(SQRT( POWER(SIN(($lat - latitude) * pi()/180 / 2), 2) +     COS($lat * pi()/180) * COS(latitude * pi()/180) *
            POWER(SIN(($long - longitude) * pi()/180 / 2), 2) )) as
            distance, $currMonth >= start_date as open FROM table_name 
            GROUP BY Id HAVING distance <= $km ORDER by distance ASC ,open ASC";


if (($currMonth >= $row['start_date']) && ($currMonth <= $row['end_date']))
$Status = "open";
else
$Status = "close";
4

1 回答 1

1

替换您的查询的这一行

$currMonth >= start_date as open FROM table_name

有了这个:

IF($currMonth >= start_date AND $currMonth <= end_date, 'open', 'closed') as open FROM table_name

它使用这样的内联 IF 条件 -IF(condition, true_result, false_result)

如果条件为真,则结果为true_result。如果条件为假,则结果为false_result

ORDER如果要先按打开状态排序,然后再按距离排序,还需要更改子句的顺序:

... ORDER BY open ASC, distance ASC
于 2012-10-09T14:50:07.357 回答