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


Уникальность значения поля при создание записи через код


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

#1 Tonik

    Участник

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

Отправлено 03 Декабрь 2013 - 07:30

По следам http://clientbase.ru...indpost&p=21370 разрабатываю синхронизацию данных со внешней системой (магазин)

1) Тренируюсь на стандартной конфигурации. Таблица Прайс-Лист поле Номер. Для поля выставлен флаг "Запрещать дублирование значений" (/edit_field.php?table=91&field=1156)

Создаю новую строку, через вызов php скрипта вот с таким содержанием.

<?php
$config['script_noauth']=1;
include "common.php";

[size=4]data_insert(91, EVENTS_ENABLE, array([/size]
'user_id' => 1,
'f1156' => 999,  // Поле Номер
'f1157' => 'Товар',
'f1158' => 'Тест',
'f1159' => 'Тест описание',
'f1160' => 'шт.',
'f1169' => 89));

Несколько раз вызываю файл - создается несколько записей с одинаковым номером. Ограничение не работает. Я верно понимаю что в ф-циях data_* и sql_* методанные полей просто игнорируются?

2) А есть ли ф-ции типа data_* и sql_* которые принимают на вход внешние имена полей, а не fNNN ?

#2 CbCoder

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

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

Отправлено 03 Декабрь 2013 - 11:28

Цитата

Я верно понимаю что в ф-циях data_* и sql_* методанные полей просто игнорируются?

Верно. Все проверки на вас, в том числе по правам доступа. Функции data_* и sql_* - всего лишь оболочки над sql-запросами, за исключением параметра EVENTS_ENABLE, который вызывает события.

Цитата

А есть ли ф-ции типа data_* и sql_* которые принимают на вход внешние имена полей, а не fNNN ?

Есть, data_table, insert_query и update_query. Описания можно найти на форуме. Но учтите, что они работают медленнее.

#3 Tonik

    Участник

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

Отправлено 05 Декабрь 2013 - 04:59

Просмотр сообщенияCbCoder (03 Декабрь 2013 - 11:28) писал:

Верно. Все проверки на вас, в том числе по правам доступа. Функции data_* и sql_* - всего лишь оболочки над sql-запросами, за исключением параметра EVENTS_ENABLE, который вызывает события.



Есть, data_table, unsert_query и update_query. Описания можно найти на форуме. Но учтите, что они работают медленнее.

Спасибо за подсказку! *_query сам не нашел. Подскажите, верно ли я понял код - *_query так же игнорируют методанные, но судя по строке

if ($event["changed"]) popup_event($table, $line, $event);

события вызываются всегда?

#4 CbCoder

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

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

Отправлено 05 Декабрь 2013 - 08:23

Да, все верно поняли.





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

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