Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Выборка в зависимости от даты?

Выборка в зависимости от даты?


     06.07.2017    Общие вопросы по PHP, MySQL    1130

вопрос
Здравствуйте. Нужна помощь!!! Проблема с CASE mysql.

Я делаю следующее(это лишь отрывок моей выборки):

(CASE
	WHEN DATEDIFF(CURDATE(),(SELECT MAX(dataru) FROM `dle_serialdata` WHERE post_id=sea.id))>=6 THEN 1
    WHEN DATEDIFF(CURDATE(),(SELECT MAX(dataru) FROM `dle_serialdata` WHERE post_id=sea.id))>=4 AND DATEDIFF(CURDATE(),(SELECT MAX(dataru) FROM `dle_serialdata` WHERE post_id=sea.id))<6 THEN 2
    WHEN DATEDIFF(CURDATE(),(SELECT MAX(dataru) FROM `dle_serialdata` WHERE post_id=sea.id))<=3 THEN 3
    ELSE 4 
END) AS serdata


Делаю проверку в самой БД, все выдает верно. Суть простая тут мне выдает максимально указанную дату для сериала и присваивает ей значение. Проще говоря у меня будет меняться картинка в зависимости от даты!

Ниже я пытаюсь сделать условие:

if ($row['serdata'] = 1) {
	echo "123";
	  }
 elseif ($row['serdata'] = 2) {
 echo "456";
 }
  elseif ($row['serdata'] = 3){
	  echo "789";
  } 
  elseif ($row['serdata'] = 4){
	  echo "000";
  }
else {
    echo "NULL";	
  }



Видимо я не правильно делаю условия, потому как у меня выводиться не корректно, почему-то у меня выводит только $row['serdata'] = 1 ко всем моим значениям. Хотя у каждого сериала THEN разные от 1 до 4. Эти условия у меня в цикле while расположены.

Помогите, не могу додуматься, как правильно сделать вывод. Заранее спасибо!

Ответил: dj-avtosh



$switchMap = [

  1 => "123",
  2 => "456",
  3 => "789",
  4 => "000",

];

echo ( isset ( $switchMap[$row['serdata']] ) ? $switchMap[$row['serdata']] : "NULL" );

3 комментария

Derp
Юзер

Derp - 6 июля 2017 18:13 -

блин, это жесткий косяк)) Видимо уже бошка кипит, нужен отдых) Спасибо огромное!

dj-avtosh
PHP-developer

dj-avtosh - 6 июля 2017 18:14 -



switch ( $row['serdata'] )  
{

    case 1 : 

      echo "123";

    break;

    case 2 : 

      echo "456";

    break;

    case 3 : 

      echo "789";

    break;

    case 4 : 

      echo "000";

    break;

    default :

      echo "NULL";

} 


По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 6 июля 2017 18:19 -

Декларация:


$switchMap = [

  1 => "123",
  2 => "456",
  3 => "789",
  4 => "000",

];

echo ( isset ( $switchMap[$row['serdata']] ) ? $switchMap[$row['serdata']] : "NULL" );


По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх