0

お店の最寄りの場所を営業中のステータスで表示するコードを書いています(お店が月ごとに開いているか閉じているかなど)。私は次のコードを使用していますが、距離に対しては正常に機能していますが、リストを並べ替えてデータをオープンステータスで表示し、リストを距離で並べ替えたいと考えています。条件コードをクエリに入れる場合、PHP を下に置くのを手伝ってもらえますか?月の'start_date'値を持つ 2 つの列があり、 ... 次の php コードを使用して、html にもステータスを表示しています。最初にオープンステータスで結果をソートし、次に距離でソートするようにクエリを改善するのを手伝ってくれませんか'int''end_date'

$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の場合、結果はfalse_resultです。

ORDERまた、最初にオープンステータスで注文し、次に距離で注文する場合は、句の順序を変更する必要があります。

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