Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Cheshir

Нужна помощь по синтаксису 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 ) );
}

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...