Дмитрий Кондин

Загрузка пользователей из Excel

Recommended Posts

Иногда необходимо создать сразу много пользователей на сайте. Для этого можно использовать модуль Excel.

1. Сначала в пользователях получаем таблицу существующих записей.

Screenshot_48.png

Будет скачана такая таблица Excel

Screenshot_49.png

В ней мы по образцу предыдущих записей заполняем нужные колонки (группа, логин, email, ФИО, активность и телефоны)

Поле ID оставляем пустым, чтобы эти записи при загрузке создались с новыми ИД.

Screenshot_50.png

Теперь загружаем готовый файл в такой последовательности

Screenshot_51.png

Screenshot_52.png

Screenshot_55.png

Screenshot_56.png

Screenshot_57.png

Теперь нужно пользователям установить пароль. Если вы грузили 1-2 записи, то можно вручную через админку.

Но если таких записей 100, тогда быстрее использовать phpmyadmin.

Сначала генерируем md5-хэш нужного пароля.

Например, мы хотим поставить всем новым пользователям пароль 12345

Можно в PHP скрипте написать функцию

<?php
echo md5('12345');

Будет выведена строчка 827ccb0eea8a706c4c34a16891f84e7b

Это и есть наш хэш-пароля, который мы запишем в базу.

Также можно использовать гугл и поискать md5 online, вот например http://www.md5.cz/

Screenshot_53.png

Теперь нужно выполнить sql-запрос через phpmyadmin.

Для начала узнаем user_id нового пользователя.

Screenshot_58.png

Запрос для установки пароля 12345 будет таким.

update re_user set password='827ccb0eea8a706c4c34a16891f84e7b' where user_id=2769

Если у нас 100 новых пользователей и всем им мы хотим поставить пароль 12345, тогда для всех пользователей, которые добавлены после user_id=2769 условие будет таким

update re_user set password='827ccb0eea8a706c4c34a16891f84e7b' where user_id > 2769

 

Screenshot_54.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если будем загружать новый файл с емайл или номером телефона , присутствующим в базе пользователей , загрузит или не загрузит новую запись?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, Realtor сказал:

Если будем загружать новый файл с емайл или номером телефона , присутствующим в базе пользователей , загрузит или не загрузит новую запись?

Дубль email не разрешит.

Поле телефон, если у него нет индекса уникальности, то продублирует.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Realtor сказал:

Как ставить индекс уникальности на поле ?

В phpmyadmin выполняем запрос

create unique index mobile_index on re_user (mobile);

Подробнее в документации https://dev.mysql.com/doc/refman/8.0/en/create-index.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.05.2022 в 10:36, Дмитрий Кондин сказал:

В phpmyadmin выполняем запрос


create unique index mobile_index on re_user (mobile);

Подробнее в документации https://dev.mysql.com/doc/refman/8.0/en/create-index.html

Ошибка

SQL запрос: Копировать

 

create unique index mobile_index on re_user (mobile);

 

Ответ MySQL: Документация

#1062 - Дублирующаяся запись '1234567890' по ключу 'mobile_index'

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, Realtor сказал:

Ошибка

SQL запрос: Копировать

 


create unique index mobile_index on re_user (mobile);

 

Ответ MySQL: Документация

#1062 - Дублирующаяся запись '1234567890' по ключу 'mobile_index'

Уникальный индекс можно создать только с уникальным значениями.

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

После вы сможете создать индекс и этот индекс не будет допускать новых дублей.

Можно сделать более жесткую процедуру, когда при создании индекса mysql сам будет удалять дублирующие записи, но тогда будут просто удалены пользователи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Дмитрий Кондин сказал:

Уникальный индекс можно создать только с уникальным значениями.

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

После вы сможете создать индекс и этот индекс не будет допускать новых дублей.

Можно сделать более жесткую процедуру, когда при создании индекса mysql сам будет удалять дублирующие записи, но тогда будут просто удалены пользователи.

Что интересно, такая запись одна и она самая последняя

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Realtor сказал:

Что интересно, такая запись одна и она самая последняя

Добавьте туда еще цифр и попробуйте снова индекс сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 07.05.2022 в 12:39, Дмитрий Кондин сказал:

Добавьте туда еще цифр и попробуйте снова индекс сделать.

Нельзя добавить ограничено форматом телефона

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, Realtor сказал:

Нельзя добавить ограничено форматом телефона

Замените цифру какую-нибудь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще вопрос если в таблице data создать индекс create unique index mobile_index on re_data (phone); то при загрузке через приложение exel не будут добавляться объекты с дублирующими номера телефонов? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Realtor сказал:

Еще вопрос если в таблице data создать индекс create unique index mobile_index on re_data (phone); то при загрузке через приложение exel не будут добавляться объекты с дублирующими номера телефонов? 

Не будут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Realtor сказал:

Еще вопрос если в таблице data создать индекс create unique index mobile_index on re_data (phone); то при загрузке через приложение exel не будут добавляться объекты с дублирующими номера телефонов? 

удалите эту запись, создайте индекс и после создайте такую же запись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Дмитрий Кондин сказал:

Не будут.

А если будет в существующей записи пустующее поле phone и будет добавляться запись с пустующим полем, оно не будет дублем или будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Дмитрий Кондин сказал:

удалите эту запись, создайте индекс и после создайте такую же запись.

удалил эту запись , запустил индексацию теперь такая же ошибка только на последний добавленный номер телефона(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, Realtor сказал:

А если будет в существующей записи пустующее поле phone и будет добавляться запись с пустующим полем, оно не будет дублем или будет?

 

8 часов назад, Realtor сказал:

удалил эту запись , запустил индексацию теперь такая же ошибка только на последний добавленный номер телефона(

Тут я думаю вам полезно будет понять сам смысл индекса уникальности.

Индекс сработает только в том случае, если у вас в поле mobile ни одна запись не будет повторяться дважды.

Это относится и к пустым полям. Пустое поле может быть, но только одно.

Если у вас теперь ругается на другой номер, то можете сделать так.

select * from re_user where mobile='ВАШ_НОМЕР_НА_КОТОРЫЙ_РУГАЕТСЯ'

Так вы получите все одинаковые записи с этим номером.

Меняете номера и такую процедуру повторяете несколько раз, пока все дубли вручную не уберете.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
59 минут назад, Дмитрий Кондин сказал:

 

Тут я думаю вам полезно будет понять сам смысл индекса уникальности.

Индекс сработает только в том случае, если у вас в поле mobile ни одна запись не будет повторяться дважды.

Это относится и к пустым полям. Пустое поле может быть, но только одно.

Если у вас теперь ругается на другой номер, то можете сделать так.

select * from re_user where mobile='ВАШ_НОМЕР_НА_КОТОРЫЙ_РУГАЕТСЯ'

Так вы получите все одинаковые записи с этим номером.

Меняете номера и такую процедуру повторяете несколько раз, пока все дубли вручную не уберете.

 

Так нет в таблице одинаковых номеров , при добавлении юзера через интерфейс  стоит проверка на уникальность номера 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Realtor сказал:

Так нет в таблице одинаковых номеров , при добавлении юзера через интерфейс  стоит проверка на уникальность номера 

Если бы не было одинаковых, то индекс бы создался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, Дмитрий Кондин сказал:

Если бы не было одинаковых, то индекс бы создался.

Проверял на дубли. Почему то всегда жалуется на телефон последнего добавленного пользователя. Если мне не верите проверьте 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас