사용자에게 날짜를 묻는 페이지를 만들었고 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()'또는 뭔가를 전달하십시오. –