D1va
@D1va

Как вывести записи полученные с API — только за текущую дату в PHP?

Есть PHP страница на которой календарь с записями. Он выводит даже записи что ранее на 3 дня. Я хотела бы выводить его на главной за текущую дату. Что нужно изменить?

//Calendar
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://urlAPI");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$response = curl_exec($ch);
curl_close($ch);
$cal = json_decode($response); // echo $cal[0]['obj']['russian'];

if (is_array($cal) || is_object($cal))
{

$last = $html = '';
foreach( $cal as $row ) {
  $img = ''. $home .''. $row->obj->img->orig .'';
  $newDate = date("H:i", strtotime($row->episode));
  $date = date("l, j F", strtotime($row->episode));
  if ( $last != $date ) {
    if ( $last) $html .= '</div>';
	$html .= '<div id="list">';
	$html .= '<div class="list"  style="width:99.7%;">';
    $html .= '<div>';
	$html .= '</br >';
    $html .= '<h2>'.$date.'</h2>';
    $last = $date;
  }
  $html .= '<div class="item">';
  $html .= '<div class="item-img"><img src='.$img.' width="179" height="240" alt="'.$row->obj->name.'" title="'.$row->obj->russian.'">';
  $html .= '</br ><div class="prod-item-name" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:5px;">'.$row->obj->russian.'</div></div>';
  $html .= '<p>'.$kind.' '.$row->next_episode.' EP. in '.$newDate.'</p>';
  $html .= '</br >';
  $html .= '</div>';
}
$html .= ($html?'</div></div></div>':'');
echo $html;
}
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@Mellorn
Ну, если в самом простом варианте:
$currentDate = date('Ymd');

foreach ($cal as $row) {
    if ($currentDate === date('Ymd', strtotime($row->episode))) {
        // Это текущая дата, пишем свою логику.
    }
}

Или же на отрицании:
$currentDate = date('Ymd');

foreach ($cal as $row) {
    if ($currentDate !== date('Ymd', strtotime($row->episode))) {
        continue; // Пропускаем все записи, которые не относятся к текущей дате.
    }

    // Пишем обработку.
}


А вообще, у вас тут немножечко ужас ужасный.
По хорошему, тут всё переписывать надо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
if (strtotime($row->episode) >= strtotime(date("Y-m-d"))) {
	/* .... */
}

P/S: не правильно
</br >

правильно
<br />
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы