powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не заснет ли пользователь от времени формирования страницы
19 сообщений из 19, страница 1 из 1
Не заснет ли пользователь от времени формирования страницы
    #36279882
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди вопрос такой
Когда пользователь за ходит на сайт он видит, ну например, меню вида

-Nokia
-Samsung
-Panasonic

И т.д.

Я хочу чтобы меню немного изменилось:

-Nokia [66]
-Panasonic [77]

Т.е. чтобы пользователь видел только те марки, у которых есть какие-то сведения ,и количество сведений – объявления о продаже показывается в квадратных скобках( ну пусть к примеру 66 Nokia продается).

Вопрос как такое получить.

Я знаю только один способ
-Провести запрос по всем маркам к БД и сформировать на основе этих запросов ассоциативный массив вида

Nokia-66
Samsung -0
Panasonic-77 и т.д.

Этот ассоциативный массив поступает на вход php функции и та в свою очередь будет уже формировать вывод в броузер.

Вроде бы все хорошо, но вот я боюсь только того что эти запросы будут идти крайне долго ведь у меня к примеру 150 марок, т.е например

Nokia
Samsung
Panasonic
LG
..
..
150 марок

Т.е. время формирования страницы=время от 150 запросов+ время от формирования асс. Массива+ разбор и вывод на его основе в броузер php функцией.

И вот думаю не заснет ли пользователь прежде чем дождется появления главной страницы вида

-Nokia [66]
-Panasonic [77]

В общем если пользователь заснет, то как делаются такие вещи чтобы он не заснул. Из идей , ну например пусть формируется файл, гне-нить в 3 часа ночи , вида
Nokia-66
Panasonic-77


И сохраняется на севере, и каждый раз в три часа ночи он будет формироваться заново.
Ну а php функция будет работать с этим файлом. Вроде все хорошо но данные ,которые показываются на главной странице будут объективными лишь в три часа ночи.

В общем я думаю ,что я понятно изложил что мне нужно. Подскажите плз.
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279923
vasos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну count() функция довольно тяжелая....про пхп сказать ничего не могу, оч мало общался, впрочем 150 категорий по 100, допустим, товаров не такая уж большая выборка, так что тут педали в базе врядли будут, только если дальше
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279933
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас же какие-то действия тоже в таблице хранятся? так может составите просто запрос, который вам будет готовое решение выдавать?Итого у вас будет всего один запрос, время на исполнение которого будет довольно мало
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279935
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если завести табличку с полями Марка Счетчик и при вводе новых сведений увеличивать счетчик, при удалении уменьшать. А в три часа ночи можно на всякий случай переформировывать таблицу. Время поиска уменьшится за счет некоторого увеличения времени ввода и удаления сведений.
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279938
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предлагаю вообще забить на 3 часа ночи и отнести эту идею в разряд бредовых)
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279939
vasos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо вопрос не в ту ветку, надо либо запрос оптимизировать(если проблемы в базе) либо пхп-код
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279943
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
150 запросов? А гуманнее никак нельзя сделать, одним запросом типа "select марка, count(*) from все_товары group by марка", ну и условия там всякие, соединения (это уже в форум по СУБД)? И просто циклом нарисовать меню.
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279962
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisУ вас же какие-то действия тоже в таблице хранятся? так может составите просто запрос, который вам будет готовое решение выдавать?Итого у вас будет всего один запрос, время на исполнение которого будет довольно мало

у меня таблички, к примеру будут такие вот

models
id
model

Marks
id
buf_id_models
name_mark

unit
id
buf_id_marks
color
price

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

Я чот не понял про один запрос.......
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279970
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я правильно понял, что показывать надо тока те марки, у которых что-то заполнено в таблице unit?
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279976
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не правильно...В общем вопрос в том, откуда берутся всякие объявления о продажах тех или иных моделей - то, что вы хотите отображать в скобках
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279994
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, т.е. все должно быть так:

Кто-то захаодит на сайт и видит

Nokia [66]
Samsung[33]

Щелкает по Nokia[66]

Видит

2100 [33]
6600 [33]

Щелкает по 2100[33] и видит

-Nokia
-2100
-черный
-1000рублей
и т.д.

Вопрос в том как получать эти циферки в квадратных скобках, идею свою я сказл. А вот про один запрос не очень понял. Можно поподробнее.
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36279998
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisну я правильно понял, что показывать надо тока те марки, у которых что-то заполнено в таблице unit?Похоже, что все (в стартовом посте был пример с 0 единиц)

Код: plaintext
1.
2.
3.
4.
select m.id, m.name_mark, ifnull(u.co,  0 ) co
from marks m left join 
 (select buf_id_marks, count(*) co from unit group by buf_id_marks) u
 on (u.buf_id_marks = m.id)
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280029
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik,

Исходя из текстового описания, таблицы такие:
marks (id, name_mark)
models (id, model, buf_id_marks)
unit (id, buf_id_models, color, price)

Из них примерно такой запрос вернет пары марка-количество:
select mk.name_mark,count(*) from unit u join models m on u.buf_id_models=m.id join marks mk on m.buf_id_marks=mk.id where какие-то_сведения_и_количество_сведений group by mk.name_mark

За более красивым или работающим ( :) ) запросом обратитесь в форум по Вашей СУБД (или, как вариант, почитайте самостоятельно про group by в сочетании с агрегатными функциями).
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280034
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik, вы написали

Т.е. чтобы пользователь видел только те марки, у которых есть какие-то сведения ,и количество сведений – объявления о продаже показывается в квадратных скобках( ну пусть к примеру 66 Nokia продается).

Таких сведений не может содержаться ни в одной из приведённых вами таблиц...таки откуда они всё таки берутся?
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280040
EmilRegis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
туплю...конец рабочего дня))
всё, дошло..
ну связать 3 таблицы и вывести количество моделей и название марки совсем не сложно...
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280070
Usik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EmilRegisUsik, вы написали

Т.е. чтобы пользователь видел только те марки, у которых есть какие-то сведения ,и количество сведений – объявления о продаже показывается в квадратных скобках( ну пусть к примеру 66 Nokia продается).

Таких сведений не может содержаться ни в одной из приведённых вами таблиц...таки откуда они всё таки берутся?

Ясен пень что число описывающее сколько Nokia продается нету.
Поэтому я хотел сделать так

Пусть у Nokia id=1, тогда запрос который вернет все unit-ы у Nokia будет примерно таким:
Код: plaintext
select *from models,marks, unit where (unit.buf_id_marks=marks.id)and (marks.buf_id_models= 1 )

Из ResulSet этого запроса я получу все телефоны которые принадлежат nokia.
Значит надпись вида
Nokia [66] я могу сформировать. Вот откуда взялось 150 запросов.

авторUsik,

Исходя из текстового описания, таблицы такие:
marks (id, name_mark)
models (id, model, buf_id_marks)
unit (id, buf_id_models, color, price)

Из них примерно такой запрос вернет пары марка-количество:
select mk.name_mark,count(*) from unit u join models m on u.buf_id_models=m.id join marks mk on m.buf_id_marks=mk.id group by mk.name_mark

За более красивым или работающим ( :) ) запросом обратитесь в форум по Вашей СУБД (или, как вариант, почитайте самостоятельно про group by в сочетании с агрегатными функциями).

А тут получается этот же результат но одним запросом, я так понял.
Ладно спс буду вникать в этот запросик
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280825
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik, что то типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
models
id
model

Marks
id
buf_id_models
name_mark
model_id

unit
id
buf_id_marks
color
price
Mark_id

select model, sum(countByMark) AS countByModel
from Marks join models right join
(select Mark_id, count(id) AS countByMark
from unit
group by Mark_id) AS _unit ON _unit.Mark_id = Marks.id AND Marks.model_id = models.id
group by model_id
т.е во внутреннем запросе вначале считаем количество по Маркам телефонов, а в окончательном запросе суммируем полученные количества по Модели
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280831
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usik, вы лучше в зависимости от типа используемой вами базы данных, обратитесь в соответствующий раздел форума IMHO.
...
Рейтинг: 0 / 0
Не заснет ли пользователь от времени формирования страницы
    #36280835
слоненок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.. да, по поводу скорости. Такие запросы выполняются очень быстро.

Модератор: Все дальнейшие обсуждения - в форуме по СУБД. Я уже два раза просила об этом. //illion
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не заснет ли пользователь от времени формирования страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]