私は、ユーザーに日付を尋ね、APIからの結果を出力するページを作成しました。 apiでは開始日と終了日が必要です。開始日と終了日は7日を超えてはなりません。私はそれを設定したので、ユーザーは日付を入力することができ、終了日は7日後に自動的に設定されます。APIで日付変数を使用
私は日付関数を使用する際に問題が発生しています。ユーザーが選択を入力する前に、今日の日付が自動的に使用されるようになりました。
今日の日付か将来の日付かをユーザーが選択できるようにするために、ユーザーの入力を待つようにAPIコールを呼び出すが、どうすればよいかわからない。
<?php
$startDate = date('Y-m-d', strtotime(isset($_GET['start'])? $_GET['start'] :date('Y-m-d')));
$endDate = date('Y-m-d', strtotime('+7 days', strtotime($startDate)));
if($startDate){
echo "$endDate";
$params = array(
'start_date' => $startDate,
'end_date' => $endDate,
'api_key' => 'coXJeNygdeuxVKs9yJLecWbfuXsY54Wi9gq37HuN'
);
$data = json_decode(callAPI('GET', 'https://api.nasa.gov/neo/rest/v1/feed', $params));
echo "<h1>Near-Earth Object (NEO) Report between " . $params['start_date'] . " and " . $params['end_date'] . "</h1>";
foreach ($data->near_earth_objects as $date => $count) {
echo "<p>" . sizeof($count) . " objects detected on $date</p>";
echo "<ol>";
foreach ($data->near_earth_objects->$date as $near_earth_object) {
echo "<li>" . $near_earth_object->name . " <a href='" . $near_earth_object->nasa_jpl_url . "'>" . $near_earth_object->nasa_jpl_url . "</a><br>";
echo "Estimated Diameter: " . $near_earth_object->estimated_diameter->meters->estimated_diameter_min . "-" . $near_earth_object->estimated_diameter->meters->estimated_diameter_max . " metres<br>";
echo "<ul>";
foreach ($near_earth_object->close_approach_data as $close_approach) {
echo "<li>Close approach on " . $close_approach->close_approach_date . " velocity " . $close_approach->relative_velocity->kilometers_per_hour . " km/h " . "missing " . $close_approach->orbiting_body . " by " . $close_approach->miss_distance->kilometers . " km</li> ";
}
echo "</ul></li>";
}
echo "</ol>";
}
}
?>
ユーザーに選択肢を与える前にこのコードを呼び出すと、このコードの誤りではありません。あなたはこのコードを呼び出すものであればそれを修正する必要があります。 'strtotime(...、date( 'Y-m-d'))'は単にCPUサイクルの無駄であることに注意してください。 PHPが "今"を取ってそれを文字列に変換し、その文字列を "今"の値に戻して解析するよう強制する上で、** NO **ポイントがあります。単に 'time()'などを渡してください。 –