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


Сравнение карточек


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

#1 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 12 Сентябрь 2013 - 13:18

Добрый день!
Подскажите пожалуйста, создаем карточку контрагента через внешнюю форму,нужна следующая проверка:
1. есть созданная организация (созданная по внешней форме)
2. есть уже существующие организации
если поле e-mail созданной организации совпадает с полем e-mail уже существующей организации-менеджер в созданной будет равен менеджеру в существующей...Мыслей пока что ноль как осуществить(

Сообщение отредактировал Dinara: 13 Сентябрь 2013 - 07:31


#2 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 07:30

Кто может подсказать???...

#3 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 07:57

Документация по внешним формам, пример 4. Используя вычисление, которое будет вызвано после добавления, а так же переменную $line и sql-запрос Вы сможете назначить менеджера при совпадению e-mail.
По первому пункту не совсем понятно. Какие действия необходимы после проверки?

#4 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 09:49

if ($event_post_insert)
   {
   SELECT DATA_TABLE 221
   WHERE f442=$line['E-mail']
   SET f6061=$line['Сотрудник']
   }

Все что пришло в голову..((
Не,это просто описание,что есть созданная и существующая организация)
ВСе равно пока что не могу понять как сранивать новую и прошлую записи и менять значения(

Сообщение отредактировал Dinara: 13 Сентябрь 2013 - 09:49


#5 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 09:59

   $sqlQuery = "SELECT ".DATA_TABLE."42 SET f3151='".$line['Сотрудник']."' WHERE f3031='".$line['ID']."'";
$res = mysql_query($sqlQuery);
Или вот этот нужен? хотя тут вроде как копирование в другую таблицу...ааа....
только как прописать чтобы именно в этой карточке менялось,а не в ранее созданной?

Сообщение отредактировал Dinara: 13 Сентябрь 2013 - 10:17


#6 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 12:07

Либо в БД я могу выборку сделать так
SELECT `f442` FROM `cb_data42` WHERE
КАк сделать сравнение??...(((

#7 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 12:27

Вычисление в два этапа. В первом (условие else) проверяется название компании, во втором проверяется совпадение e-mail. Поля f444, f333, f435 - Менеджер, E-mail и Название компании соответственно.
if ($event_post_insert)
   { //Вычисление срабатывает второй раз, когда строка уже добавлена в базу
	 $result = data_select_field(42, "`f444`", "`status`=0 and `f333`='",$line['E-mail'],"' and `id`<>",$line['id']);
	 if ($row = sql_fetch_assoc($result))
		 data_update(42, array("f444"=>$row['f444']), "`id`=",$line['id']);
   }
else
   { // Тут вычисление срабатывает в первый раз, строка не добавлена в базу,
	 // и мы можем использовать $event_cancel
	 $row = data_select_array(42, "`status`=0 and `f435`='",$line['Название компании'],"'");
	 if ($row)
	   {
		 echo "<script>k_answer_hide_form1=0;</script>";
		 echo "Такая компания уже добавлена.";
		 $event_cancel=1;
		  return;
	   }

	 $event_post_insert=1;
   }


#8 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 12:44

if ($event_post_insert)
   { //Вычисление срабатывает второй раз, когда строка уже добавлена в базу
		 $result = data_select_field(42, "`6061`", "`status`=0 and `f442`='",$line['E-mail'],"' and `id`<>",$line['ID']);
		 if ($row = sql_fetch_assoc($result))
				 data_update(42, array("f6061"=>$row['f6061']), "`id`=",$line['ID']);
   }
Оставила только эту часть (нужно сравнение именно по e-mail,компания пусть добавляется),только все равно не срабатывает(
http://take.ms/aVyjdh

Сообщение отредактировал Dinara: 13 Сентябрь 2013 - 12:45


#9 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 12:53

Конечно, не срабатывает. Если Вы обратите внимание, то во второй части есть строка $event_post_insert=1; - без этого флага условие выше не сработает.

#10 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 12:57

if ($event_post_insert)
   { //Вычисление срабатывает второй раз, когда строка уже добавлена в базу
		 $result = data_select_field(42, "`6061`", "`status`=0 and `f442`='",$line['E-mail'],"' and `id`<>",$line['ID']);
		 if ($row = sql_fetch_assoc($result))
				 data_update(42, array("f6061"=>$row['f6061']), "`id`=",$line['ID']);
				   $event_post_insert=1;
   }
и вот так делала
if ($event_post_insert)
   { //Вычисление срабатывает второй раз, когда строка уже добавлена в базу
		 $result = data_select_field(42, "`6061`", "`status`=0 and `f442`='",$line['E-mail'],"' and `id`<>",$line['ID']);
		 if ($row = sql_fetch_assoc($result))
				 data_update(42, array("f6061"=>$row['f6061']), "`id`=",$line['ID']);
				 
   }
$event_post_insert=1;

Результат все равно такой же(

#11 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 13:08

Ошибка в запросе. `6061` такого поля в таблице нет, пропустили букву f. Первый пример некорректен ещё и по логике, опять же, условие никогда не сработает, потому что Вы заключили установку флага в это самое условие.

#12 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 13 Сентябрь 2013 - 13:25

Ух,супер!!)))большое дело получилось!!))благодарю!!))
Не сильно критично вроде,но все равно интересно
	  sendmail("Новая компания в системе КБ", "Компания ".$line['Название']." E-mail ".$line['E-mail']." зарегистрировалась по акции", "di13sl@mail.ru");
sendmail("Новая компания в системе КБ", "Компания ".$line['Название']." E-mail ".$line['E-mail']." зарегистрировалась по акции", "fomin@goszacaz.su");

  if ($event_post_insert)
   { //Вычисление срабатывает второй раз, когда строка уже добавлена в базу
		 $result = data_select_field(42, "`f6061`", "`status`=0 and `f442`='".$line['E-mail']."' and `id`<>".$line['ID']);
		 if ($row = sql_fetch_assoc($result))
		
				 data_update(42, array("f6061"=>$row['f6061']), "`id`=".$line['ID']);
				
				
   }
	 $event_post_insert=1;
	

Почему-то письмо по 2 раза каждому уходит...

#13 Гость_Roman_*

  • Гости

Отправлено 13 Сентябрь 2013 - 13:41

Вычисление срабатывает в данном случае два раза, включите отправку писем в тело условия if ($event_post_insert), тогда письмо уйдёт по одному разу.





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

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