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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы