Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Нужна помощь по синтаксису 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 не уникальный был.

 

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.