Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Нужна помощь по синтаксису php

Код

 

 

<? php
	{	    	
          if ( $this->request['topics_limit_mod_count_fix'] == 1 )
	                	{
			$topics_limit_mod_count_fix = ( intval($this->request['topics_limit_mod_count_temp'] ) );
						}

	       else

	   if ( $this->request['topics_limit_mod_count_temp'] > 0 )
		                {
			$topics_limit_mod_count_temp = ( intval($this->request['topics_limit_mod_count_temp'] ) );
					    }		

	   if ( $this->request['topics_limit_mod_days'] > 0 )
	                   	{
			$topics_limit_mod_days = ( intval($this->request['topics_limit_mod_days'] ) );
					    }
	}



	     IPSMember::save( $this->warn_member['member_id'], array( 'core' => array(   'mt_ppd_limit' => $topics_limit_mod_count_fix,
		                                                                             'temp_mt_ppd_limit' => $topics_limit_mod_count_temp,
	                                                                            	 'limit_days'	=> $topics_limit_mod_days
																				                     ) ) );

 

 

По задумке $topics_limit_mod_count_fix получает результат если отмечен чекбокс, и делает запись в 'mt_ppd_limit'.

 

Если приходит ответ без отмеченнго чекбокса, $topics_limit_mod_count_temp и $topics_limit_mod_days получают данные и делают записи в 'temp_mt_ppd_limit', 'limit_days'.

 

Праблема заключается в том, что если отмечен чекбокс, и производится запись полученного значения в 'mt_ppd_limit', то а ячейках 'temp_mt_ppd_limit' и 'limit_days' значения перезаписываются в 0, а если чекбокс не отмечен, то наоборот записываются данные в 'temp_mt_ppd_limit' и 'limit_days', но при этом ячейка 'mt_ppd_limit' перезаписывается в 0...

 

Как сделать чтобы при отмеченном чекбоксе изменялись данные только ячейки 'mt_ppd_limit' (не перезаписывая 'temp_mt_ppd_limit' и 'limit_days'), а без чекбокса только 'temp_mt_ppd_limit' и 'limit_days' (не перезаписывая 'mt_ppd_limit')??

Рекомендованные сообщения

Ставьте else, работайте над логикой, в этом коде кроме вас никто не разберется.

  • Автор

Условие else выполняется, но насколько понимаю дело в записи сохранения

 

IPSMember::save( $this->warn_member['member_id'], array( 'core' => array(   'mt_ppd_limit' => $topics_limit_mod_count_fix,
                                                                                        'temp_mt_ppd_limit' => $topics_limit_mod_count_temp,
                                                                                        'limit_days'   => $topics_limit_mod_days
                                                                                                        ) ) );

 

т.е. запись происходит в любом случае, только если значение имеется, оно записывается, если нет - ставится 0

Правильно, а как иначе?

  • Автор

По другому попробую объяснить...

 

Логика:

 

Получаем данные из присланной формы, в которой параметр отмечен чекбоксом (значение 1)

 

          if ( $this->request['topics_limit_mod_count_fix'] == [b]1[/b] ) // если параметр "1", то берем значение из параметра [b]topics_limit_mod_count_temp[/b]
	                	{
			$topics_limit_mod_count_fix = ( intval($this->request['[b]topics_limit_mod_count_temp[/b]'] ) ); // Получили значение

 

И кодом

 

IPSMember::save( $this->warn_member['member_id'], array( 'core' => array(   'mt_ppd_limit' => $topics_limit_mod_count_fix
                                                                                                                     )));

Делаем запись в таблице 'members', столбец 'mt_ppd_limit'

 

Если форма пришла без отмеченного чекбокса, то все равно считывается информация с $topics_limit_mod_count_fix и делается и делается запись кодом

IPSMember::save( $this->warn_member['member_id'], array( 'core' => array(   'mt_ppd_limit' => $topics_limit_mod_count_fix
                                                                                                                     )));

Но уже 0 значение... Как должен выглядить код, чтобы не производить запись в БД, если пришедшее значение не равно 1?

 

Более понятней объяснить не получается...

Но уже 0 значение... Как должен выглядить код, чтобы не производить запись в БД, если пришедшее значение не равно 1?

 

$save = array();

if( $this->request['topics_limit_mod_count_fix'] == 1 )
{
   $save['mt_ppd_limit'] = $this->request['topics_limit_mod_count_temp'];
}


if( count($save) )
{
IPSMember::save( $this->warn_member['member_id'], array( 'core' => $save ) );
}

  • Автор

{
   IPSMember::save( $this->warn_member['member_id'], array( 'core' => $save ));
}

 

Одной скобки нехватает... но не в этом дело, такой запрос дает ошибку бд...

такой запрос дает ошибку бд...

Значит не правильно его составляете. Поднимите логи и смотрите запрос.

  • Автор

Значит не правильно его составляете. Поднимите логи и смотрите запрос.

 

Верно, просто ключ $save не уникальный был.

 

Победил таки, опять же, благодаря вашей подсказке! Спасибо!

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.