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


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


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

#1 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

Отправлено 27 Январь 2012 - 16:02

В вычислении создаю запись в другой таблице. В INSERT-запросе какие значения передавать в служебные поля?

id
user_id
date_time
status
f235
f236
f237
f238
u
r

В поля f235-f238 я соответственно впишу свои данные, а в остальные?

#2 CbCoder

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

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

Отправлено 27 Январь 2012 - 17:51

Рекомендую использовать для операций добавления не прямые запросы, а нашу функцию insert_query (см. документацию). Она гораздо удобнее, т.к. во-первых позволяет работать с внешними именами полей, а не внутренними типа "f235", во-вторых автоматически заполняются служебные поля и значения по умолчанию (т.е. не нужно вручную заполнять все поля, и тем более разбираться в структуре таблиц), и в-третьих, с версии 1.9.5 еще автоматом запускаются и имеющиеся вычисления в таблице (при изменении полей).

#3 head

    Участник

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

Отправлено 27 Январь 2012 - 18:29

а где именно почитать про insert_query

#4 CbCoder

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

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

Отправлено 28 Январь 2012 - 11:31

Хм, действительно, тоже не нашел. Тогда прошу прощения, будем дописывать документацию. Примеры использования этой функции (и других аналогичных) есть в стандартной конфигурации, в представлении Форум. Если вкратце, алгоритм использовния такой:
1. Заполняем массив полей нужными нам данными
2. Добавляем новую запись через функцию insert_query
Пример:
$data['Имя'] = "Петр";
$data['Фамилия'] = "Иванов";
insert_query($data,"Сотрудники");


#5 nk

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

  • Пользователи
  • PipPipPip
  • 228 сообщений
  • Пол:Мужчина

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

спасибо, разобрался

#6 CbCoder

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

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

Отправлено 09 Апрель 2012 - 11:32

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

К примеру, доработка вышеприведенного кода:
$data['Имя'] = "Петр";
$data['Фамилия'] = "Иванов";
$new_id = insert_query($data,"Сотрудники");
send_template(35,"id=$new_id"); // отсылаем приглашение сотруднику


#7 zizitopa

    Участник

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

Отправлено 06 Август 2012 - 10:13

подскажите пожалуйста как сделать так чтобы при импользовании этой функции заполнялось поле типа "связь"?
Есть 2 таблицы "Эскизы" и "портеры"
При изменении статуса в "Эскизах" в таблице "Портреты" создается новая запись, куда перекидывается информация из текущей.
Создано следующее вычисление в таблице "Эскизы"
if ($line['Статус'] == "Заказывает")
{
$data['Заказчик'] = $line['Заказчки'];
$data['E-mail'] = $line['E-mail'];
insert_query($data,"Портреты");
}
При этом E-mail копируется, а поле "Заказчик" нет. поле заказчик - поле типа связь с таблицей "Эскизы".
Подскажите пожалуйста как его заполнить

#8 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 10:39

if ($line['Статус'] == "Заказывает")
{
$data['Заказчик'] = $ID;
$data['E-mail'] = $line['E-mail'];
insert_query($data,"Портреты");
}


#9 zizitopa

    Участник

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

Отправлено 06 Август 2012 - 11:39

Благодарю.
все заработало)

#10 zizitopa

    Участник

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

Отправлено 06 Август 2012 - 13:13

Прошу прощения, но еще один вопрос по той же теме.
Необходимо копировать не только информацию, но еще и картинку (поле типа "изображение").
Если делать в лоб
$data['Готовый эскиз'] = $line['Готовый эскиз'];
то получаем результат - выводится имя файла и подпись "файл не существует".
Как это можно исправить?
И, по-возможности, не дублируя картинку, а ссылаясь на уже закачанную (т.е. ту же самую), чтобы файлы не плодить..

#11 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 13:56

Необходимо создать текстовое поле с настройкой "Отображать HTML теги". Затем сформировать ссылку в этом поле. Например, поле из которого Вы копируете данные имеет ID 222, а номер таблицы, из которой копируется файл имеет номер 111. Тогда в вычислении строка с ссылкой будет выглядеть так:
$data['Готовый эскиз'] = "<a href='open_file.php?table=111&field=222&line=$ID&file=".$line['Готовый эскиз']."'>".$line['Готовый эскиз']."</a>";


#12 zizitopa

    Участник

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

Отправлено 06 Август 2012 - 14:15

Сделано, спасибо!
однако теперь это как файл доступный для скачивания.
Нельзя ли сделать так чтобы он отображался как картинка (так же как и поля типа "изображение")?

#13 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 14:33

$data['Готовый эскиз'] = "<a href='open_file.php?table=111&field=222&line=$ID&file=".$line['Готовый эскиз']."'><img src='open_file.php?table=111&field=222&line=$ID&file=".$line['Готовый эскиз']."&show=1&w=100&h=100' alt='' /></a>";


#14 zizitopa

    Участник

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

Отправлено 06 Август 2012 - 15:25

Большое спасибо за оперативную помощь.

#15 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 15:43

Просмотр сообщенияRoman (06 Август 2012 - 14:33) писал:

&show=1&w=100&h=100'
При использовании этих параметров изображение масштабируется и обрезается
Есть ли возможность задавать максимальные значения сторон по аналогии с
style="max-width:100px;max-height:100px;"
?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#16 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 15:57

Да, Вы можете применить этот стиль просто к тегу img, тогда параметры w и h можно не передавать по ссылке.

#17 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Август 2012 - 16:03

Это я знаю, так и сделано
Вопрос в том, чтобы формировать изображение малого размера на сервере, а не грузить его на компьютер и вгонять в размер на клиенте.
Хочется сэкономить и трафик и время.
Возможно доработать вашу функцию open_file.php, например сделать параметр show=2, при котором параметры w и h, используемые в строке запроса, превращались бы в максимальные габариты? Или нужно писать свою на базе вашей?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#18 Гость_Roman_*

  • Гости

Отправлено 06 Август 2012 - 16:12

Может в следующих версиях добавим. Пока, действительно, придётся воспользоваться своим скриптом.

#19 Analitic

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

  • Пользователи
  • PipPipPip
  • 700 сообщений
  • Пол:Мужчина

Отправлено 07 Август 2012 - 14:08

Просмотр сообщенияandibrag (06 Август 2012 - 15:43) писал:

При использовании этих параметров изображение масштабируется и обрезается
Есть ли возможность задавать максимальные значения сторон по аналогии с
style="max-width:100px;max-height:100px;"
?
Задайте только один параметр, например w=100. h должен расчитаться автоматически. При этом в самом теге img укажите max-height, излишки траффика будут минимальными.

#20 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 07 Август 2012 - 14:52

Спасибо. Замечательно работает и загрузка ускорилась в разы.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения






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

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