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


Ошибки в доп. действии


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

#1 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Январь 2018 - 11:52

Добрый день.
Подскажите пожалуйста где я допустил ошибки.
В целом код отрабатывает, емайлы из разных таблиц подтягиваются и отправляется шаблон письма, но:

1. Данные в поле E-mail не обновляются

2. Не работает конструкция с условием $line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '2')
Т.е. сейчас этот кусок закомментирован и в условиях стоит только $line['Проект'] == 'WEBCOM MOBI'

3. В коде сейчас этого нет, но не пойму как подтянуть почту из поля E-mail Таблицы Контагенты


if (isset($_REQUEST["emails"]))
   { // код ниже выполняется только при получении результата формы
         $upd_data['E-mail'] = implode(",",$_REQUEST['emails']); // разворачиваем массив выделенных емейлов в строку через запятую
         //$line['E-mail']=$_REQUEST["emails"];
         //$upd_data['E-mail'] = $_REQUEST["emails"];
         update_query($upd_data,"Счета","id=$ID");
  
         // если проект WEBCOM MOBI
        if ($line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '2')
         { 
       send_template(671,"id=$ID"); 
         }
   elseif ($line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '3') 
{
       send_template(661,"id=$ID"); 
         }

         echo "<script>";
         echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
         echo "window.close()"; // Закрываем текущее
         echo "</script>";
   }
echo "<form method='get'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value='$ID'>";  // Значение строки

// ИЗ ДОГОВОРОВ
$result1 = data_select(78, "f849=",$line['На кого']['ID']);
$row1 = sql_fetch_array($result1);
{
echo "<b>Из т. Договора:</b>";
echo "<br/>";
 echo "<input type='checkbox' name='emails[]' value='".$row1['f9931']."'>".$row1['f9931']."<br>";
}
echo "<br/>";

// ИЗ ХОЛОДНЫХ ЗВОНКОВ
$result2 = data_select(350, "f6850=",$line['На кого']['ID']);
$row2 = sql_fetch_array($result2);
{
echo "<b>Из т. Холодные звонки:</b>";
echo "<br/>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6480']."'>".$row2['f6480']." (".$row2['f6490'].")"; echo " - Email ЛПР<br>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6470']."'>".$row2['f6470']."<br>";
}
echo "<br/>";


// ИЗ СОТРУДНИКОВ В КОНТРАГЕНТАХ
$result5 = data_select(51, "f545=",$line['На кого']['ID']);
while ($row5 = sql_fetch_array($result5))
{
echo "<b>Из т. Сотрудники:</b>";
echo "<br/>";
  echo "<input type='checkbox' name='emails[]' value='".$row5['f549']."'>".$row5['f549']." (".$row5['f546']." / ".$row5['f547'].")<br>";
}



echo "<input type='submit' value='Отправить'>";
echo "</form>";


#2 CbCoder

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

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

Отправлено 16 Январь 2018 - 12:37

1. Визуально по коду выглядит все верно (включая закомментированный вариант), возможно в имени поля где то ошиблись.
2. $line['Наша компания']['raw'] или на худой конец $line['Наша компания']['ID'] - это касается всех полей связи.
3. $line['На кого']['E-mail']

#3 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Январь 2018 - 15:47

1. Странно, конечно. Как бы я не пробовал, все равно не записывается. Есть еще какой-нибудь вариант? Отправка ведь происходит на выбранную почту.


2. Спасибо, получилось.


3. Вот что получилось:

$result6 = data_select(42, "f439=",$line['На кого']['ID']); //42 - т. Контрагенты. 439 - поле "Юридическое название" в т. "Контрагенты"
Мне кажется в верхней строчке и есть ошибка
$row6 = sql_fetch_array($result6);
{
echo "<b>Из т. Контрагенты:</b>";
echo "<br/>";
echo "<input type='checkbox' name='emails[]' value='".$row6['f442']."'>".$row6['f442']."<br>"; // 442 - поле "E-mail" в т. "Контрагенты"
}

Сообщение отредактировал TelecomMedia: 16 Январь 2018 - 15:53


#4 CbCoder

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

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

Отправлено 16 Январь 2018 - 16:09

1. $line['f111'] = implode(",",$_REQUEST['emails']);
111 заменяем на id поля E-mail, это на случай если все таки ошибка в имени. После сохранения кода и перезагрузки окна, f111 должно заменится на имя поля. Если этого не произойдет - значит такого поля вообще нет в текущей таблице.

3. Зачем вам тут запрос? Я же подсказал вариант - $line['На кого']['E-mail'].

echo "<b>Из т. Контрагенты:</b>";
echo "<br/>";
echo "<input type='checkbox' name='emails[]' value='".$line['На кого']['E-mail']."'>".$line['На кого']['E-mail']."<br>";


#5 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Январь 2018 - 16:28

1.
$upd_data['f851'] = implode(",",$_REQUEST['emails']); // f851 - поле E-mail т. Счета
         update_query($upd_data,"Счета","id=$ID");

При таком раскладе выдает ошибку
Ошибка SQL запроса:
UPDATE f_data43 SE WHERE id=1755

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id=1755' at line 1


Поле f851 при этом есть - https://yadi.sk/i/IcoEfXKN3RWCjx

3. Спасибо, получилось.

#6 CbCoder

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

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

Отправлено 16 Январь 2018 - 16:41

Цитата

При таком раскладе выдает ошибку

Вы же использовали вариант с запросом, а я писал про $line - там никакого запроса не требуется. В функции update_query это не сработает.

#7 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 16 Январь 2018 - 17:24

Понял.
Подставил f851
После сохранения и обновления, поле поменялось:
 $line['E-mail'] = implode(",",$_REQUEST['emails']);
Т.е. насколько я понимаю, ошибки в имени поля не было

Но значение все равно не подставляется.
При отправке формы, ошибки нет.

#8 CbCoder

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

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

Отправлено 16 Январь 2018 - 17:30

А вы проверяли, что у вас в массиве $_REQUEST['emails'] возвращается? Может это в нем пусто?

Или попробуйте для теста константу подставить: $line['E-mail'] = "test@test.ru";

#9 TelecomMedia

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

  • Пользователи
  • PipPipPip
  • 378 сообщений

Отправлено 18 Январь 2018 - 16:07

Подставил константу, значение все равно не записывается

if (isset($_REQUEST["emails"]))
   { // код ниже выполняется только при получении результата формы
        
         //$line['E-mail'] = implode(",",$_REQUEST['emails']);
         $line['E-mail'] = "test@test.ru"; 
.....






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

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