Присвоение всем пользователям Аватары - Дизайн и модификация Invision Power Board

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

 

СвернутьПрикрепленные теги

sql запросы

Страница 1 из 1

Присвоение всем пользователям Аватары

#1 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 19 Декабрь 2018 - 22:20

Всем привет.
Есть список аватаров /update/avatar/1.jpg и идут они от 1.jpg по 2000.jpg/
И второй список /update/avatar_smile/1.jpg и идут они от 1.jpg по 2000.jpg/
Первые аватары в папке avatar размером 150х150
Вторые аватары в папке avatar_smile размером 100х100
Аватары что в первой папке что во второй идентичны.

И есть список пользователей.
SELECT * FROM `core_members`
WHERE `core_members`.`member_id` > 15;


Мне нужно этим пользователям, через БД, с помощью SQL запроса, расставить значения.
Например первый пользователь в строке pp_main_photo сделать значение /update/avatar/1.jpg и в строке pp_thumb_photo сделать значение /update/avatar_smile/1.jpg

HEELP
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 446
  • Регистрация: 20-Март 09
  • Репутация: 2 545
  • IPB version:3.1.x
 

Отправлено 20 Декабрь 2018 - 11:25

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

UPDATE core_members SET pp_main_photo=CONCAT('update/avatar/', member_id, '.jpg'), pp_thumb_photo=CONCAT('update/avatar_smile/', member_id, '.jpg') WHERE member_id > 15

Учтите что форум использует путь к аватарам относительно папки /uploads/ и запрещает перемещение вне через ../


II. Если же у вас 2000 пользователей, но ид идут в сильный разнос - 1, 100 следующий 450 и тд, то нужно использовать инкремент. В mysql в первую очередь на ум приходит временная таблица с полем ауто инкрементом.

CREATE TABLE core_members_temp (id mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, member_id mediumint(8));
INSERT INTO core_members_temp (member_id) SELECT member_id FROM core_members WHERE member_id > 15 ORDER BY member_id ASC;
UPDATE core_members m INNER JOIN core_members_temp t ON (m.member_id=t.member_id) SET pp_main_photo=CONCAT('update/avatar/', t.id, '.jpg'), pp_thumb_photo=CONCAT('update/avatar_smile/', t.id, '.jpg');
DROP TABLE core_members_temp;


..то же самое, но только с использование переменной

SET @position = 0;
UPDATE core_members m INNER JOIN ( SELECT member_id, (@position := @position + 1) as position FROM core_members WHERE member_id > 15 ORDER BY member_id ASC ) t ON m.member_id = t.member_id SET pp_main_photo=CONCAT('update/avatar/', t.position, '.jpg'), pp_thumb_photo=CONCAT('update/avatar_smile/', t.position, '.jpg');

0

#3 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 446
  • Регистрация: 20-Март 09
  • Репутация: 2 545
  • IPB version:3.1.x
 

Отправлено 20 Декабрь 2018 - 12:01

В 4.2 есть функция "Letters avatars for members without profile photo", которая делает примерно тоже самое.
0

#4 Пользователь не на сайте   tunofak ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 82
  • Регистрация: 11-Март 16
  • Репутация: 0
  • IPB version:4.0.x
 

Отправлено 20 Декабрь 2018 - 16:57

Я сонный был, не правильно строку выбрал - member_posts > 15 Правильно.

В итоге составил я так
CREATE TABLE core_members_temp (id mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, member_posts mediumint(8));
INSERT INTO core_members_temp (member_posts) SELECT member_posts FROM core_members WHERE member_posts > 15 ORDER BY member_posts ASC;
UPDATE core_members m INNER JOIN core_members_temp t ON (m.member_posts=t.member_posts) SET pp_main_photo=CONCAT('avatar/', t.id, '.jpg'), pp_thumb_photo=CONCAT('avatar_smile/', t.id, '.jpg');
DROP TABLE core_members_temp;


Пишет что - core_members_temp существует, но я её в упор не вижу.

У меня версия 4.3.4 но не знаю, где такая функция, гуглил тоже не увидел) А ну там выбор аватара по первому символу ника, у меня все аватары цветные.


А есть вариант экспортировать 1893 mimber_id и потом им присвоить по списку строки?
Правда сам SQL запрос будет большой.

Сообщение изменено: tunofak (20 Декабрь 2018 - 16:59)

0

#5 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 9 446
  • Регистрация: 20-Март 09
  • Репутация: 2 545
  • IPB version:3.1.x
 

Отправлено 20 Декабрь 2018 - 20:26

Зачем ее видеть? Это временная таблица для инкремента, после отработки она удаляется. Более изящный вариант без таблицы я привел с переменной.

Не совсем понял куда экспортировать и что там присвоить?
Если у вас есть список аватаров и хотите присвоить их пользователям то проще это уже сделать через php, и не заниматся извратом с mysql.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2019 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна