07.12.2011, 18:29 | #11 | |
Специалист
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
|
Вы имеете в виду совет "не лезть"?
Цитата:
Добавлено через 24 минуты Сори, ступила) Прописала в index.php сайта такую строку: $sql_result = $db->query( "UPDATE " . USERPREFIX . "_users SET ballz=news_num*3+comm_num+musik-mus WHERE 1" ); Обновляется при нажатии ф5 или очистке кеша, все отлично считается. Последний вопрос (и отстану): как уменьшить нагрузку на сервер? Просто до этого стоял подобный запрос подсчета кол-ва новостей в каждой категории, так хостер жаловался на повышенную нагрузку. Что-то вообще можно сделать с этим запросом? Последний раз редактировалось Elektra; 07.12.2011 в 18:29. Причина: Добавлено сообщение |
|
08.12.2011, 17:24 | #12 |
Мастер
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
|
Так неправильно.
Это вы так при каждом запросе пересчитываете все строки в таблице - зачем так делать? Раз вы хотите поле "ballz" то, надо понимать, вы это поле будете выводить в виде текста где-то на сайте, что-бы вывести значение этого поля Вы будете испльзовать запрос вида SELECT ballz FROM..... Предлагается не создавать в таблице отдельное поле "ballz" а высчитывать это значение непосредственно при SELECTе. Для этого надо: SELECT ballz FROM..... заменить на SELECT `news_num`*3+`comm_num`+`musik`-`music` AS ballz FROM... MySQL при таком запросе произведет вычисление (`news_num`*3+`comm_num`+`musik`-`music`) и вернет результат в виде "виртуального" поля ballz Последний раз редактировалось dgek1111; 08.12.2011 в 17:31. |
09.12.2011, 15:22 | #15 |
Специалист
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
|
А если четыре предыдущие цифры динамичные? Если просто при селекте (я пробовала) то цифра не обновляется. А мне нужно заставить ее обновляться...
На счет индекс.пхп я поняла чудовищность ошибки)) Перенесла запрос в модуль профиля. Но получается при заходе любого пользователя в любой профиль происходит апдейт всей таблицы юзеров. $sql_result = $db->query( "UPDATE " . USERPREFIX . "_users SET ballz=news_num*3+comm_num+musik-mus where name='$user' " ); Можно ли как-то сделать, чтобы апдейтился только один юзер, а не вся таблица? То есть, например, зашел пользователь с id1 в свой профиль - обновились только его данные из dle_users. Или where name='$user' это и подразумевает? Но в таком случае, у меня как у админа обновляются данные любого пользователя, если я в его профиль захожу. |
09.12.2011, 15:58 | #16 | ||
Мастер
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
|
Цитата:
Какая цифра не обновляется? В предложеном варианте эта цифра в базе и не хранится, а считается непосредственно при селекте. Дайте точный пример кода где находится SELECT. Так будет проще Цитата:
Добавлено через 6 минут Вот давайте сюда тот кусок кода где в профиле пользователя выводится "balz". Последний раз редактировалось dgek1111; 09.12.2011 в 15:58. Причина: Добавлено сообщение |
||
10.12.2011, 02:00 | #17 |
Специалист
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
|
Огромное спасибо всем за помощь, каждое сообщение наталкивало на определенные мысли и пробы. В итоге, методом проб и ошибок, поняв наконец, что мне вообще, по сути, запрос к БД не нужен, я решила все таким путем:
в файле профиля добавила строку $tpl->set('{ball}', ($row['news_num']*3)+$row['comm_num']+$row['musik']-$row['music']); Все прекрасно работает и обновляется=) Аллиллуйа! Блондинка справилась)) Спасибо еще раз, уважаемые форумчане. Без вас бы не получилось)) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите составить запрос mysql | Ufaweb | Разработка и сопровождение сайтов | 30 | 25.08.2012 17:40 |
Помогите срочно! Проблема с MySQL | Sergeyka2003 | Курилка | 8 | 21.08.2010 18:26 |
помогите с MySQL | 10012003 | Разработка и сопровождение сайтов | 21 | 19.05.2009 12:22 |
Помогите с Mysql | Crudelis | Курилка | 46 | 02.07.2008 02:54 |
Знатоки MySQL помогите. | Dreamer.rus | Разработка и сопровождение сайтов | 7 | 01.05.2008 10:00 |
Часовой пояс GMT +3, время: 10:34.