Перейти к содержимому


Ошибка при добавлении сотрудника


Сообщений в теме: 4

#1 SysLink

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений
  • Пол:Мужчина
  • Город:г.Москва

Отправлено 16 Февраль 2011 - 13:46

Расширили лицензию с 10 до 25 пользователей. Как и полагается сделал деактивацию/активацию.

Группы доступа, вроде все правильно прописал
Прикрепленное изображение: screen_crm3.jpg

Но при попытке создания пользователя с правами доступа, не только новых созданных, но и стандартных типа "Менеджер" и "Администратор"...


...Буквально на секунду выводится ошибка, а далее окно обновляется и прогружается карточка создаваемого сотрудника.


Естественно, залогинется под новым созданным сотрудником не получается.

Версия последняя 1.9.2 WEB
Основатель и экс-директор интернет-магазина с оборотом более миллиарда рублей. Автор книги "Успешный интернет-магазин с нуля". Автор персонального блога, пишу об электронной коммерции и бизнесе в целом. Бизнес-практик и наставник. Куратор и идейный вдохновитель ряда корпоративных веб-разработок. Да и просто хороший позитивный человек! ;)

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2011 - 15:01

Скорее всего ошибка вычисления в таблице Сотрудники.

Выложите код вычисления сюда.

#3 SysLink

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений
  • Пол:Мужчина
  • Город:г.Москва

Отправлено 16 Февраль 2011 - 15:12

Вычисления не трогали, все как по умолчанию

// Автообновление пользователей
$table = data_table("Наши сотрудники","id={ID}");

if ($table['Логин']) {

  // Определяем id группы
  $sqlQuery = "SELECT id FROM ".GROUPS_TABLE." WHERE name='".$table['Группа доступа']."'";
  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
  if ($row = mysql_fetch_array($result)) // если нашли - сохраняем
	{
	  $group_id = $row['id'];
	}
	else // иначе возвращаем старую по возможности
	{
	  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE login='".$table['Логин']."'";
	  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	  if ($row = mysql_fetch_array($result))
		{
		  echo "<script>alert('Выбранной группы доступа не существует. Будет сохранена текущая группа.')</script>";
		  $group_id = $row['group_id'];
		  $sqlQuery = "SELECT name FROM ".GROUPS_TABLE." WHERE id='".$row['group_id']."'";
		  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		  if ($row = mysql_fetch_array($result)) $table['Группа доступа'] = $row['name'];
		  update_table($table,"Наши сотрудники","id={ID}");
		}
		else
		{
		  echo "<script>alert('Выбранной группы доступа не существует. Пользователь не будет добавлен. Введите существующую группу.')</script>";
		  $group_id = 0;
		}
	}
  
  if ($group_id)
	{
	  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE login='".$table['Логин']."'";
	  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	  if ($row = mysql_fetch_array($result))
		{
		  $sqlQuery = "UPDATE ".USERS_TABLE." SET fio='".$table['ФИО']."', e_mail='".$table['E-mail']."', login='".$table['Логин']."', ".(($table['Пароль']!="******")?("password='".md5($table['Пароль'])."', "):"")."group_id='".$group_id."' WHERE id='".$row['id']."'";
		  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		}
		else
		{
		  // Предупреждение об ограничении числа пользователей
		  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE arc=0 ORDER BY id";
		  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		  if (mysql_num_rows($result)>=$config['max_users'])
			{
			  echo "<script>alert('Вы можете добавить в программу не более ".$config['max_users']." пользователей. Новый пользователь не будет добавлен.')</script>";
			  $group_id = 0;
			}
			else
			{
			  $sqlQuery = "INSERT INTO ".USERS_TABLE." VALUES ('', '".$table['ФИО']."', '".$table['E-mail']."', '".$table['Логин']."', '".md5($table['Пароль'])."', '', curdate(), 0, '".$group_id."')"; 
			  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
			  $new_user_id = mysql_insert_id();
			  // добавляем поля для информации о непрочитанных записях и активности напоминаний
			  $sqlQuery = "SELECT id FROM ".TABLES_TABLE;
			  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
			  while ($row = mysql_fetch_array($result))
				{
				  $table_id = $row['id'];
				  $sqlQuery = "ALTER TABLE ".DATA_TABLE.$table_id." ADD u".$new_user_id." TINYINT(1)";
				  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
				  $sqlQuery = "UPDATE ".DATA_TABLE.$table_id." SET u".$new_user_id."=0";
				  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
				  $sqlQuery = "SELECT id FROM ".TIPS_TABLE." WHERE table_id=".$table_id;
				  $result2 = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
				  while ($row2 = mysql_fetch_array($result2))
					{
					  $sqlQuery = "ALTER TABLE ".DATA_TABLE.$table_id." ADD r".$row2['id']."_u".$new_user_id." INT(11)";
					  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
					  $sqlQuery = "UPDATE ".DATA_TABLE.$table_id." SET r".$row2['id']."_u".$new_user_id."=0";
					  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
					}
				}
			}
		}
	  $table['Пароль'] = "******";
	  update_table($table,"Наши сотрудники","id={ID}");
	}
}
elseif ($table['Пароль'] or $table['Группа доступа'])
{
  echo "<script>alert('Не введен логин. Пользователь не будет добавлен.')</script>";
  $group_id = 0;
}

if (!$group_id) {
  $table['Логин'] = "";
  $table['Пароль'] = "";
  $table['Группа доступа'] = "";
  update_table($table,"Наши сотрудники","id={ID}");
}

Основатель и экс-директор интернет-магазина с оборотом более миллиарда рублей. Автор книги "Успешный интернет-магазин с нуля". Автор персонального блога, пишу об электронной коммерции и бизнесе в целом. Бизнес-практик и наставник. Куратор и идейный вдохновитель ряда корпоративных веб-разработок. Да и просто хороший позитивный человек! ;)

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 16 Февраль 2011 - 15:26

Просмотр сообщенияSysLink (16.2.2011, 15:12) писал:

Вычисления не трогали, все как по умолчанию
Не в этом дело, просто при обновлении программы конфигурация остается старая, хотя иногда она уже не соответствует изменениям в бд. В этом случае необходимо обновлять вычисления вручную.

Замените код вычисления на следующий:
// Автообновление пользователей
$table = data_table("Наши сотрудники","id={ID}");

if ($table['Логин']) {

  // Определяем id группы
  $sqlQuery = "SELECT id FROM ".GROUPS_TABLE." WHERE name='".$table['Группа доступа']."'";
  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
  if ($row = mysql_fetch_array($result)) // если нашли - сохраняем
	{
	  $group_id = $row['id'];
	}
	else // иначе возвращаем старую по возможности
	{
	  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE login='".$table['Логин']."'";
	  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	  if ($row = mysql_fetch_array($result))
		{
		  echo "<script>alert('Выбранной группы доступа не существует. Будет сохранена текущая группа.')</script>";
		  $group_id = $row['group_id'];
		  $sqlQuery = "SELECT name FROM ".GROUPS_TABLE." WHERE id='".$row['group_id']."'";
		  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		  if ($row = mysql_fetch_array($result)) $table['Группа доступа'] = $row['name'];
		  update_table($table,"Наши сотрудники","id={ID}");
		}
		else
		{
		  echo "<script>alert('Выбранной группы доступа не существует. Пользователь не будет добавлен. Введите существующую группу.')</script>";
		  $group_id = 0;
		}
	}
  
  if ($group_id)
	{
	  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE login='".$table['Логин']."'";
	  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	  if ($row = mysql_fetch_array($result))
		{
		  $sqlQuery = "UPDATE ".USERS_TABLE." SET fio='".$table['ФИО']."', e_mail='".$table['E-mail']."', login='".$table['Логин']."', ".(($table['Пароль']!="******")?("password='".md5($table['Пароль'])."', "):"")."group_id='".$group_id."' WHERE id='".$row['id']."'";
		  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		}
		else
		{
		  // Предупреждение об ограничении числа пользователей
		  $sqlQuery = "SELECT * FROM ".USERS_TABLE." WHERE arc=0 ORDER BY id";
		  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
		  if (mysql_num_rows($result)>=$config['max_users'])
			{
			  echo "<script>alert('Вы можете добавить в программу не более ".$config['max_users']." пользователей. Новый пользователь не будет добавлен.')</script>";
			  $group_id = 0;
			}
			else
			{
			  $sqlQuery = "INSERT INTO ".USERS_TABLE." VALUES ('', '".$table['ФИО']."', '".$table['E-mail']."', '".$table['Логин']."', '".md5($table['Пароль'])."', '', curdate(), 0, '".$group_id."', 'russian')"; 
			  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
			  $new_user_id = mysql_insert_id();
			  // добавляем поля для информации о непрочитанных записях
			  $sqlQuery = "SELECT id FROM ".TABLES_TABLE;
			  $result = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
			  while ($row = mysql_fetch_array($result))
				{
				  $sqlQuery = "ALTER TABLE ".DATA_TABLE.$row['id']." ADD u".$new_user_id." TINYINT(1)";
				  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
				  $sqlQuery = "UPDATE ".DATA_TABLE.$row['id']." SET u".$new_user_id."=0";
				  mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
				}
			}
		}
	  $table['Пароль'] = "******";
	  update_table($table,"Наши сотрудники","id={ID}");
	}
}
elseif ($table['Пароль'] or $table['Группа доступа'])
{
  echo "<script>alert('Не введен логин. Пользователь не будет добавлен.')</script>";
  $group_id = 0;
}

if (!$group_id) {
  $table['Логин'] = "";
  $table['Пароль'] = "";
  $table['Группа доступа'] = "";
  update_table($table,"Наши сотрудники","id={ID}");
}


#5 SysLink

    Активный участник

  • Пользователи
  • PipPipPip
  • 54 сообщений
  • Пол:Мужчина
  • Город:г.Москва

Отправлено 16 Февраль 2011 - 16:06

Сработало! Спасибо!
Основатель и экс-директор интернет-магазина с оборотом более миллиарда рублей. Автор книги "Успешный интернет-магазин с нуля". Автор персонального блога, пишу об электронной коммерции и бизнесе в целом. Бизнес-практик и наставник. Куратор и идейный вдохновитель ряда корпоративных веб-разработок. Да и просто хороший позитивный человек! ;)





Количество пользователей, читающих эту тему: 4

0 пользователей, 4 гостей, 0 анонимных