Jump to content
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')??

Featured Replies

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

  • Author

Условие 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

  • Author

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

 

Логика:

 

Получаем данные из присланной формы, в которой параметр отмечен чекбоксом (значение 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 ) );
}

  • Author

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

 

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

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

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

  • Author

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

 

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

 

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

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

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.