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


Добавление записи через вычисление


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

#101 OlegSmirnov

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

  • Пользователи
  • PipPipPip
  • 36 сообщений
  • Пол:Мужчина
  • Город:Дмитров, МО
  • Интересы:Собаки, путешествия, web-программирование.

Отправлено 13 Март 2014 - 17:58

А вообще, мне кажется, возможность в вычислении отклонять запись данных - была бы не лишней. Например, я думаю можно сделать, чтобы вычисление на сохранение данных могло с помощью return возвращать отказ и текст сообщения - почему отказ. Ну типа
return array('accept' => false, 'message' => 'Не верно заполнено поле XXX');


#102 dolphin

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

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

Отправлено 13 Март 2014 - 18:03

Цитата

Из поля ID связанной записи, вестимо.
Логично. Куда-то логика от меня под конец дня ушла... )))

#103 freeman

    Участник

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

Отправлено 28 Март 2014 - 09:38

Здравствуйте. Почитав тему сделал вычисление по аналогам.
Задача была следующая, при изменении поля "наш клиент" запись удаляется из заявок и создается в клиентах.


В целом все получилось, только почему-то запись в таблице клиенты создается дважды. Вот код:

if ($line['Наш клиент'] == "да")
{
$data['Имя'] = $line['Имя'];
$data['Email'] = $line['Email'];
$data['Контактный телефон'] = $line['Номер телефона'];
insert_query($data,"Частное лицо");
delete_query("Заявки с сайта", "`id`=$ID");
}

И еще вопрос, как вместо удаления, отправлять в архив?

#104 CbCoder

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

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

Отправлено 28 Март 2014 - 10:34

Цитата

В целом все получилось, только почему-то запись в таблице клиенты создается дважды

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

Цитата

И еще вопрос, как вместо удаления, отправлять в архив?

$line['Статус записи'] = 1;

#105 freeman

    Участник

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

Отправлено 28 Март 2014 - 11:32

Благодарю!

#106 rem71

    Новичок

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

Отправлено 03 Апрель 2014 - 14:55

здравствуйте у нас старая версия клиентской базы 1.8.4 я хочу сделать простые вычисления (ячейка 1 * на ячейка 2) но не могу написать код, где можно почитать о кодах старых версий? коды ниже 1.9.5 пробовали не получилось.

#107 CbCoder

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

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

Отправлено 03 Апрель 2014 - 15:12

В документации же есть ссылка: http://clientbase.ru...n_16/php-polya/

Что конкретно то не получилось? Примеры то приведите свои.

#108 rem71

    Новичок

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

Отправлено 03 Апрель 2014 - 15:32

нужно просто сделать сумму: поле1+поле2 показать в поле 3, и куда вводить код вычисления? есть окно вычислений в таблице число и в таблице связь и отдельно вычисления. спс за ответ сори за нубство

#109 CbCoder

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

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

Отправлено 03 Апрель 2014 - 18:09

ПЕРВЫЙ ЖЕ пример из документации:

$nakl = data_table("Счета","id={ID}"); // берем все данные текущей строки и забиваем их массив
$result = $nakl["Сумма"]/$nakl["Количество"]; // элементы массива по названию столбцов.
return $result;

Чем он вас не устраивает? Заменяете названия таблицы и полей на свои и знак деления на знак плюса:

$data = data_table("Ваша таблица","id={ID}"); // берем все данные текущей строки и забиваем их массив
$result = $data["поле1"]+$data["поле2"]; // элементы массива по названию столбцов.
return $result;

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

#110 ManFree

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

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

Отправлено 08 Май 2014 - 09:17

Мне перед созданием записи вычислением надо проверить на уникальность вставляемых данных

То есть если уже такая строка присутствует ее пропускам и идем дальше по циклу.

Как это можно проверить

$data['Ссылка']=$m;
insert_query($data,"Объявления");


Пытаюсь получить число вхождений моей переменной
SELECT COUNT(*)FROM `borolg_data450` where f7130='realty/sell/residential/secondary/detail/5898725.php'

получаю

$qqq = Resource id #99
что это значит?

edit_sql.php проверял запрос работает

Сообщение отредактировал ManFree: 08 Май 2014 - 11:50


#111 CbCoder

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

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

Отправлено 08 Май 2014 - 13:39

Ну так вы целиком то приведите ваш код. У вас тут непонятно, как именно вы запрос отправляли, присутствует только сам запрос. Скорее всего неверно результат обработали.

#112 ManFree

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

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

Отправлено 08 Май 2014 - 16:26

Просмотр сообщенияCbCoder (08 Май 2014 - 13:39) писал:

Ну так вы целиком то приведите ваш код. У вас тут непонятно, как именно вы запрос отправляли, присутствует только сам запрос. Скорее всего неверно результат обработали.

Проблема решилась чтением хелпа по пхп
сделал так
$row= mysql_fetch_array(mysql_query("SELECT COUNT(*)FROM `borolg_data450` where f7130='$m[$l]'"));

не знал что mysql_query( возвращает массив, и пытался его в строку целиком запихнуть
добавил фетч и все пошло как нужно

#113 CbCoder

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

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

Отправлено 08 Май 2014 - 17:06

Сообразили в правильном направлении, но не до конца. Я так и предполагал что проблема в том что вы использовали напрямую результат возврата mysql_query, а не mysql_fetch_array. Однако, дело не в том что mysql_query возвращает массив, там не массив, а идентификатор ресурса (то что у вас и вернулось - "Resource id #99"), для использования его в mysql_fetch_array, который непосредственно читает строки из запроса. Видимо не совсем внимательно прочитали хелп.

#114 ManFree

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

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

Отправлено 08 Май 2014 - 17:14

Просмотр сообщенияCbCoder (08 Май 2014 - 17:06) писал:

Сообразили в правильном направлении, но не до конца. Я так и предполагал что проблема в том что вы использовали напрямую результат возврата mysql_query, а не mysql_fetch_array. Однако, дело не в том что mysql_query возвращает массив, там не массив, а идентификатор ресурса (то что у вас и вернулось - "Resource id #99"), для использования его в mysql_fetch_array, который непосредственно читает строки из запроса. Видимо не совсем внимательно прочитали хелп.

дак не программер я, все методом тыка, и поиском по инету(

#115 ManFree

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

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

Отправлено 09 Май 2014 - 15:53

А кстати еще момент.
Как можно через вычисление доп. действия создать диалог создания записи в другой таблице.
Скажем я в таблице клиенты. нажимаю доп действие. у меня открывается новая заявка которую можно заполнить, в идеале даже в новом окне хотя в этом тоже подойдет.
Кто-нибудь такое уже делал?

Сообщение отредактировал ManFree: 09 Май 2014 - 15:54


#116 CbCoder

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

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

Отправлено 10 Май 2014 - 14:01

Создать отдельный диалог можно, но накладно, проще просто перейти на стандартную форму добавления записи в нужной таблице через перенаправление скрипта, например используя функцию header.

#117 ManFree

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

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

Отправлено 10 Май 2014 - 15:37

Просмотр сообщенияCbCoder (10 Май 2014 - 14:01) писал:

Создать отдельный диалог можно, но накладно, проще просто перейти на стандартную форму добавления записи в нужной таблице через перенаправление скрипта, например используя функцию header.

да это подойдет. Собственно как на главной странице, на рабочем столе есть ссылки добавить клиента и тд.

header("Location:http://domen.ru/view_line2.php?table=280&filter=560&page=1&line=new"); 

Вопрос где можно почитать про Header, можнго как то передать через нее значение некоторых полей в будущей новой записи

Сообщение отредактировал ManFree: 10 Май 2014 - 15:42


#118 ManFree

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

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

Отправлено 10 Май 2014 - 15:54

Просмотр сообщенияManFree (10 Май 2014 - 15:37) писал:

да это подойдет. Собственно как на главной странице, на рабочем столе есть ссылки добавить клиента и тд.

header("Location:http://domen.ru/view_line2.php?table=280&filter=560&page=1&line=new"); 

Вопрос где можно почитать про Header, можнго как то передать через нее значение некоторых полей в будущей новой записи

Короче разобрался в конец строки добавляем конструкцию типа
&f5470=значение&f5570=значение&f5670=значение
и нужные поля в новой форме заполнятся

#119 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 25 Август 2014 - 12:47

Пдскажите, где увидеть пример кода для задачи:
1.таблица Прайс-лист - поле "цена поставщика", поле "валюта поставщика" и поле "цена"
2.таблица Валюты - поле "Валюта" и поле "Курс".
"Валюта поставщика" связь "валюта"
задача "цена поставщика" по полю "валюта поставщика" умножить на "курс" и записать в поле "цена".

#120 CbCoder

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

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

Отправлено 03 Сентябрь 2014 - 14:48

Стандартная операция, даже запросы не нужны:

$line['цена'] = $line['цена поставщика'] * $line['валюта поставщика']['курс'];

Т.е. через поле связи можно легко обратится к полям связанной таблицы. Это всё есть в документации.





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

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