mrusklon
@mrusklon
Не получается? Яростно гугли!

Как валидировать информацию из mysql бд?

есть у меня база
дата | ФИО | место работы | отработанные часы | прочие ячейки

я делаю форму через ajax отправляю все на сервер и php записываю в БД , теперь у меня стала дилема если 2 или более человек зайдут одновременно заполнять форму, они оба могут отправить данные и выйдет огромный дубль

как мне запретить добавление в БД если в определенную дату у ФИО уже есть запись?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 3
seganim
@seganim
PHP-программист, программный инженер
Не выйдет, если ФИО+дата - первичный ключ или уникальное поле. Причем вместо ФИО желательно использовать логины или иные значения, хранимые в сторонней таблице, чтобы Иванов И.И. и Иванов И И не были разными значениями
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Странно, конечно. Если два разных человека заполняют свои данные, то как возникнет дубль? И почему одному человеку нельзя за день поработать в нескольких местах?
А решаются такие вещи обычно установкой UNIQUE INDEX по соответствующему набору полей.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В принципе есть всего 2 варианта, оба варианта выше написали.
1) уникальный ключ по 2 полям
2) Селект по этим же полям и проверка на стороне ЯП на наличие записи

Оба варианта работать будут, однако я бы все же советовал бы использовать 2 вариант. Не смотря на то что вариант 2 имеет некоторую возможность коллизий(как верно заметил Rsa97), он не вызывает неоднозначности в выполнении, то есть он явно проверяет наличие строки, в то время как первый метод вызывает ошибку вставки по уникальному ключу на стороне БД, что гораздо сложнее обрабатывать. В целом ничего не мешает скомбинировать оба метода, тогда коллизий можно избежать, максимально ограничив количиство возможных ошибок предварительной проверкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы