Контроль дублей
- Antonyous99
- Сообщения: 631
- Зарегистрирован: 18 авг 2019, 09:22
- Имя: Антон Владимирович
- Откуда: Санкт-Петербург
- Организация: ООО "РИКОМ-Сервис"
- Контактная информация:
Re: Контроль дублей
Индекс соответствущий сделать MySQL базе.
ПУЛЬТ УПРАВЛЕНИЯ БИЗНЕСОМ
ERP/CRM "под ключ"
ERP/CRM "под ключ"
Re: Контроль дублей
Ну как бы вмешательство в структуру базы не очень вариант я думаю.
- Fait
- Инвестор
- Сообщения: 844
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Контроль дублей
В коде поля Ajax-запрос введите вот такой код (адаптируйте под себя):
Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы
$item_id = $_GET['item_id']; // ID текущей записи
$param1 = [880]; // Уникальный параметр 1
$param2 = [881]; // Уникальный параметр 2
$entity_id = 55; // ID сущности
$check_unique = db_query('select count(*) as kol from app_entity_'.$entity_id.' where field_880="'.$param1.'"'.' and field_881="'.$param2.'" and id<>'.$item_id); // Делаем запрос к базе
$resData = db_fetch_array($check_unique);
if ($resData['kol'] > 0) {
echo '<script>$(".btn-primary-modal-action").hide()</script>'; // Скрыть кнопку "Сохранить"
echo '<b style="color:red;">Данные параметры существуют в базе!</b>'; // Показываем предупреждение
}
else {
echo '<script>$(".btn-primary-modal-action").show()</script>'; // Показать кнопку "Сохранить"
echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью
}
Последний раз редактировалось Fait 27 ноя 2023, 22:49, всего редактировалось 2 раза.
- Fait
- Инвестор
- Сообщения: 844
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Контроль дублей
А для вас будет такой код, который выводит список записей в виде ссылок:fedotoff писал(а): ↑21 фев 2017, 12:19 Обязательно нужен контроль по нескольким полям. То есть:
1"Кактус" 2"Зелёный" 3"2 кг" 4"Питается мясом"
То есть при контроле повтора по полям 1 и 2 и вводе записи "Кактус" "Зелёный" "1 кг" "Пьёт воду"
нужно видеть оповещение что кактусы зелёные уже есть. Добавление записи не блокировать, просто оповещать списком повторов.
Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы
$item_id = $_GET['item_id']; // ID текущей записи
$param1 = [880]; // Уникальный параметр 1
$param2 = [881]; // Уникальный параметр 2
$entity_id = 55; // ID сущности
$check_unique = db_query('select * from app_entity_'.$entity_id.' where field_880="'.$param1.'"'.' and field_881="'.$param2.'" and id<>'.$item_id); // Делаем запрос к базе
foreach ($check_unique as $key => $value) {
$i++;
$v_id = $value['id'];
$v_name = $value['field_877']; // Заголовок записи
$out_arr[] = '<a style="color:orange; font-weight: bold;" href="/index.php?module=items/info&path='.$entity_id.'-'.$v_id.'">'.$i.') '.$v_name.'</a>';
}
$list = implode('<br>',$out_arr);
if (count($out_arr) > 0) {
echo '<b style="color:red;">Похожие записи существуют в базе: </b><br>'; // Показываем предупреждение
echo $list;
}
else {
echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью
}
Последний раз редактировалось Fait 27 ноя 2023, 22:56, всего редактировалось 1 раз.
- Fait
- Инвестор
- Сообщения: 844
- Зарегистрирован: 19 ноя 2020, 17:46
- Имя: Максим Балакшеев
- Откуда: Россия, Златоуст
- Организация: ИП Балакшеев Максим Георгиевич
Re: Контроль дублей
А вам вот такое подойдёт:asyab писал(а): ↑27 фев 2017, 15:23 Нам тоже очень не хватает такой возможности. Пример, когда список состоит из людей и они в некоторых случаях могут повторятся, а в некоторых нет, т.е. просто поставить проверку уникальности по полю СНИЛС- нельзя, потому что оно во первых может быть не заполнено, во вторых в некоторых случаях может повторяться. Но пользователь, который вводит нового человека должен знать, что такой уже есть и принять решение заводить его или нет. Сейчас приходится сначала искать , а потом уже заводить новую запись, но это не удобно, т.к. пользователей много, доступ к записям разделен в соответсвии с правами доступа и пришлось для такого поиска вообще заводить учетную запись для просмотра всех базы.
Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы
$item_id = $_GET['item_id']; // ID текущей записи
$param1 = [880]; // Уникальный параметр 1
$param2 = [881]; // Уникальный параметр 2
$entity_id = 55; // ID сущности
$check_unique = db_query('select * from app_entity_'.$entity_id.' where field_880="'.$param1.'"'.' and field_881="'.$param2.'" and id<>'.$item_id); // Делаем запрос к базе
foreach ($check_unique as $key => $value) {
$i++;
$v_id = $value['id'];
$v_name = $value['field_877']; // Заголовок записи
$out_arr[] = '<b style="color:orange;">'.$i.') '.$v_name.'</b>';
}
$list = implode('<br>',$out_arr);
if (count($out_arr) > 0) {
echo '<b style="color:red;">Похожие записи существуют в базе: </b><br>'; // Показываем предупреждение
echo $list;
}
else {
echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью
}
Re: Контроль дублей
Спасибо, чаааз буду пробовать.Fait писал(а): ↑27 ноя 2023, 21:14В коде поля Ajax-запрос введите вот такой код (адаптируйте под себя):Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы $item_id = $_GET['item_id']; // ID текущей записи $param1 = [880]; // Уникальный параметр 1 $param2 = [881]; // Уникальный параметр 2 $entity_id = 55; // ID сущности $check_unique = db_query('select count(*) as kol from app_entity_'.$entity_id.' where field_880="'.$param1.'"'.' and field_881="'.$param2.'" and id<>'.$item_id); // Делаем запрос к базе $resData = db_fetch_array($check_unique); if ($resData['kol'] > 0) { echo '<script>$(".btn-primary-modal-action").hide()</script>'; // Скрыть кнопку "Сохранить" echo '<b style="color:red;">Данные параметры существуют в базе!</b>'; // Показываем предупреждение } else { echo '<script>$(".btn-primary-modal-action").show()</script>'; // Показать кнопку "Сохранить" echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью }
Re: Контроль дублей
Ну в работе с датами нужно приводить в UNIX формат перед отправкой запроса. Получилось как то так :
Проверьте пожалуйста правильно ли я понял, что до этого скрипт отправлял запрос каждый раз когда нажата кнопка и нужно дожидаться всех заполненных полей? Может как то по другому можно сделать?
И еще вопрос как добавить вместо "echo '<b style="color:red;">Данный человек уже есть в базе!</b>'; // Показываем предупреждение" ссылку на поиск человека сразу?
Код: Выделить всё
$item_id = $_GET['item_id'];
$param1 = [217]; // Фамилия
$param2 = [218]; // Имя
$param3 = [219]; // Отчество
$param4 = [221]; // Д.р.
$entity_id = 25; // ID сущности
if ($param4 == false || $param4 == '') {
$param4 = '80000000';
}
$param4_timestamp = strtotime($param4); // Преобразование даты в UNIXTIME
if ($param1 > '0' || $param2 > '0' || $param3 > '0'){
$check_unique = db_query('SELECT COUNT(*) AS kol FROM app_entity_'.$entity_id.' WHERE field_217="'.$param1.'" AND field_218="'.$param2.'" AND field_219="'.$param3.'"'.($param4_timestamp != 0 ? ' AND field_221='.$param4_timestamp : '').($item_id != 0 ? ' AND id<>'.$item_id : '')); //Отправляем запрос базе
$resData = db_fetch_array($check_unique);
}
if ($resData['kol'] > 0) {
echo '<script>$(".btn-primary-modal-action").hide()</script>'; // Скрыть кнопку "Сохранить"
echo '<b style="color:red;">Данный человек уже есть в базе!</b>'; // Показываем предупреждение
} else {
echo '<script>$(".btn-primary-modal-action").show()</script>'; // Показать кнопку "Сохранить"
echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью
}
И еще вопрос как добавить вместо "echo '<b style="color:red;">Данный человек уже есть в базе!</b>'; // Показываем предупреждение" ссылку на поиск человека сразу?
Re: Контроль дублей
Тут сделал так:Fait писал(а): ↑27 ноя 2023, 22:45А для вас будет такой код, который выводит список записей в виде ссылок:fedotoff писал(а): ↑21 фев 2017, 12:19 Обязательно нужен контроль по нескольким полям. То есть:
1"Кактус" 2"Зелёный" 3"2 кг" 4"Питается мясом"
То есть при контроле повтора по полям 1 и 2 и вводе записи "Кактус" "Зелёный" "1 кг" "Пьёт воду"
нужно видеть оповещение что кактусы зелёные уже есть. Добавление записи не блокировать, просто оповещать списком повторов.А вот результат:Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы $item_id = $_GET['item_id']; // ID текущей записи $param1 = [880]; // Уникальный параметр 1 $param2 = [881]; // Уникальный параметр 2 $entity_id = 55; // ID сущности $check_unique = db_query('select * from app_entity_'.$entity_id.' where field_880="'.$param1.'"'.' and field_881="'.$param2.'" and id<>'.$item_id); // Делаем запрос к базе foreach ($check_unique as $key => $value) { $i++; $v_id = $value['id']; $v_name = $value['field_877']; // Заголовок записи $out_arr[] = '<a style="color:orange; font-weight: bold;" href="/index.php?module=items/info&path='.$entity_id.'-'.$v_id.'">'.$i.') '.$v_name.'</a>'; } $list = implode('<br>',$out_arr); if (count($out_arr) > 0) { echo '<b style="color:red;">Похожие записи существуют в базе: </b><br>'; // Показываем предупреждение echo $list; } else { echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью }
Скриншот 28-11-2023 005102.jpg
Код: Выделить всё
echo '<script>$(".form-group-999 > label").hide()</script>'; // Скрываем заголовок данного поля с формы
$item_id = $_GET['item_id']; // ID текущей записи
$param1 = [401]; // Уникальный параметр 1
$param2 = [402]; // Уникальный параметр 2
$entity_id = 53; // ID сущности
if ($param1 >'0' || preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $param2)) {
$param2_timestamp = strtotime($param2); // Преобразование даты в UNIXTIME
$check_unique = db_query('select * from app_entity_'.$entity_id.' where field_401="'.$param1.'" and field_402="'.$param2_timestamp.'" and id<>'.$item_id); // Делаем запрос к базе
foreach ($check_unique as $key => $value) {
$i++;
$v_id = $value['id'];
$v_name = $value['field_401']; // Заголовок записи
$out_arr[] = '<a style="color:orange; font-weight: bold;" href="/index.php?module=items/info&path='.$entity_id.'-'.$v_id.'">ID-'.$v_id. ') '.$v_name.'</a>';
}
$list = implode('<br>',$out_arr);
if (count($out_arr) > 0) {
echo '<b style="color:red;">Похожие записи существуют в базе: </b><br>'; // Показываем предупреждение
echo $list;
}
else {
echo '<script>$(".form-group-999").hide()</script>'; // Скрываем поле подсказки полностью
}
}
Re: Контроль дублей
Вот только в поиске с выводом найденного который никак не могу скрыть заголовок поля.