Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Не заснет ли пользователь от времени формирования страницы / 19 сообщений из 19, страница 1 из 1
29.10.2009, 14:49
    #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
29.10.2009, 14:59
    #36279923
vasos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
ну count() функция довольно тяжелая....про пхп сказать ничего не могу, оч мало общался, впрочем 150 категорий по 100, допустим, товаров не такая уж большая выборка, так что тут педали в базе врядли будут, только если дальше
...
Рейтинг: 0 / 0
29.10.2009, 15:01
    #36279933
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
У вас же какие-то действия тоже в таблице хранятся? так может составите просто запрос, который вам будет готовое решение выдавать?Итого у вас будет всего один запрос, время на исполнение которого будет довольно мало
...
Рейтинг: 0 / 0
29.10.2009, 15:01
    #36279935
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
А если завести табличку с полями Марка Счетчик и при вводе новых сведений увеличивать счетчик, при удалении уменьшать. А в три часа ночи можно на всякий случай переформировывать таблицу. Время поиска уменьшится за счет некоторого увеличения времени ввода и удаления сведений.
...
Рейтинг: 0 / 0
29.10.2009, 15:03
    #36279938
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
предлагаю вообще забить на 3 часа ночи и отнести эту идею в разряд бредовых)
...
Рейтинг: 0 / 0
29.10.2009, 15:03
    #36279939
vasos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
имхо вопрос не в ту ветку, надо либо запрос оптимизировать(если проблемы в базе) либо пхп-код
...
Рейтинг: 0 / 0
29.10.2009, 15:04
    #36279943
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
150 запросов? А гуманнее никак нельзя сделать, одним запросом типа "select марка, count(*) from все_товары group by марка", ну и условия там всякие, соединения (это уже в форум по СУБД)? И просто циклом нарисовать меню.
...
Рейтинг: 0 / 0
29.10.2009, 15:07
    #36279962
Usik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
EmilRegisУ вас же какие-то действия тоже в таблице хранятся? так может составите просто запрос, который вам будет готовое решение выдавать?Итого у вас будет всего один запрос, время на исполнение которого будет довольно мало

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

models
id
model

Marks
id
buf_id_models
name_mark

unit
id
buf_id_marks
color
price

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

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

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

Nokia [66]
Samsung[33]

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

Видит

2100 [33]
6600 [33]

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

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

Вопрос в том как получать эти циферки в квадратных скобках, идею свою я сказл. А вот про один запрос не очень понял. Можно поподробнее.
...
Рейтинг: 0 / 0
29.10.2009, 15:15
    #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
29.10.2009, 15:23
    #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
29.10.2009, 15:24
    #36280034
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
Usik, вы написали

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

Таких сведений не может содержаться ни в одной из приведённых вами таблиц...таки откуда они всё таки берутся?
...
Рейтинг: 0 / 0
29.10.2009, 15:26
    #36280040
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
туплю...конец рабочего дня))
всё, дошло..
ну связать 3 таблицы и вывести количество моделей и название марки совсем не сложно...
...
Рейтинг: 0 / 0
29.10.2009, 15:35
    #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
29.10.2009, 19:09
    #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
29.10.2009, 19:10
    #36280831
слоненок
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
Usik, вы лучше в зависимости от типа используемой вами базы данных, обратитесь в соответствующий раздел форума IMHO.
...
Рейтинг: 0 / 0
29.10.2009, 19:12
    #36280835
слоненок
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не заснет ли пользователь от времени формирования страницы
.. да, по поводу скорости. Такие запросы выполняются очень быстро.

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


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