Просмотр 15 сообщений - с 1 по 15 (из 19 всего)
  • Автор
    Сообщения
  • #1917
    GrishaGrisha
    Участник

    Добрый вечер. Было бы правильно подгружать css файлы не сразу а для каждого модуля отдельно. скажем открыть доску, любую страницу а сверху подгружаются файлы стилей для всех модулей сразу. Отнимает время при загрузке и не имеет никакого смысла думаю. Не знаете, как можно подключать css отдельно для каждого модуля?

    <link rel=’stylesheet’ href=’/templates/style/moduls/subscribe/subscribe.css?241116′ type=’text/css’>
    <link rel=’stylesheet’ href=’/templates/style/moduls/qonline/qonline.css?241116′ type=’text/css’>
    <link rel=’stylesheet’ href=’/templates/style/moduls/faq/faq.css?241116′ type=’text/css’>
    <link rel=’stylesheet’ href=’/templates/style/moduls/doska/doska.css?241116′ type=’text/css’>
    <link rel=’stylesheet’ href=’/templates/style/moduls/catalog/catalog.css?241116′ type=’text/css’>
    <link rel=’stylesheet’ href=’/templates/style/moduls/article/article.css?241116′ type=’text/css’>

    #1918
    GrishaGrisha
    Участник

    сделал уже.

    #1919
    GrishaGrisha
    Участник

    Подскажите пожалуйста как в данном запросе сделать, чтобы от одного пользователя выводилось только одно объявление?

    function get_num_last_adverts($num_adv)
    {
    global $masConfig;
    $rez=array();
    $kolvo=0;
    $db_add_type=»»;
    $db_type_sort=» sort_time «;
    $t_db_query_category = «»;
    $times=time();

    $db_add_type=» and on_delete = ‘off’ » ;

    if ( $this->open_num_podcategory > 0 )
    $t_db_query_category = $this->get_text_db_query_part_category( «advert.n_category», $this->open_num_podcategory );

    elseif ( $this->open_num_category )

    $t_db_query_category = $this->get_text_db_query_part_category( «advert.n_category», $this->open_num_category );

    $db_type_sort=» RAND() «;

    $db_query=»select * from «.DB_PREF.»advert advert where »
    .( $t_db_query_category ? » ( «.$t_db_query_category.» ) and » : «» ).» hide=’show’ $db_add_type and num_user IN(select id_user from cat_users where activ_user=’on’ and date_visit + 300 > ‘».$times.»‘ ) and end_putdate >= «.$GLOBALS[«timeGlobal»]
    .» order by «.$db_type_sort.» DESC limit 7 «;
    $q_ident=obr_db_query($db_query);

    while ($row = mysql_fetch_assoc($q_ident))
    {
    $rez[]=$row;
    $kolvo++;
    }
    return (array($kolvo,$rez));
    }
    function printBlockLastTypeAdverts($kol_get_adv,$type_get_adv)
    {
    include(«filesmodul/forming_block_last_adv.php»);
    return ($text);
    }

    #1920
    sarkissarkis
    Хранитель

    Если я правильно вас понял, то смотрите в сторону оператора group by id_user.

    #1921
    GrishaGrisha
    Участник

    group by id_user

    Немножко не понял. С помощью группировки можно сделать так, чтобы выводились вип объявления в блоке, но не больше одного объявления от одного пользователя?

    #1922
    sarkissarkis
    Хранитель

    Да. На примере я смогу показать только через пару дней. Но запрос нужно переделать полностью. Поэтому сейчас можете погуглить .

    #1923
    GrishaGrisha
    Участник

    ок, подожду, спасибо) Кстати я тут написал модуль или как еще назвать это… В общем пользователь «онлайн» для Бокскод 8.х
    Если интересно, могу выложить в форуме, а вы может оцените и подкрутите, если в этом будет нужда))

    #1924
    GrishaGrisha
    Участник

    «.$GLOBALS[«timeGlobal»].» GROUP BY num_user ORDER BY rand() DESC limit 7″;

    вроде выводит по одному объявлению =) Если все так просто, тогда зачем вы сказали, что нужно весь запрос переделать?

    теперь возникает вопрос, как сделать, чтобы он выводил одно, но случайное объявления от одного пользователя?

    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    #1926
    sarkissarkis
    Хранитель

    “.$GLOBALS[“timeGlobal”].” GROUP BY num_user ORDER BY rand() DESC limit 7″;

    вроде выводит по одному объявлению =) Если все так просто, тогда зачем вы сказали, что нужно весь запрос переделать?

    теперь возникает вопрос, как сделать, чтобы он выводил одно, но случайное объявления от одного пользователя?

    Допустим, вы делаете выборку 10-ти последних объявлений и вы вставляете оператор GROUP BY. В итоге , если последние 10 объявлений добавил один и тот же юзер, то данный запрос уже не будет правильно работать, т.к выбрал 10 ,а получил 1.

    Сейчас вы добавили rand, что в принципе, минимизирует погрешность вашего кода , но все ровно могут быть моменты , когда последние объявы будут совпадать по юзеру .

    Если вы сформулируете окончательную мысль свою, которую хотите реализовать, то я попытаюсь дать более развернутый ответ, но могу предварительно уже сказать, что подобная логика может оказывать нагрузку на ваш сервер !

    #1927
    GrishaGrisha
    Участник

    окончательную мысль

    Суть такая. Если пользователь онлайн, то одно из его объявлений(в случайном порядке) будет выводится в правом блоке сайта.

    #1928
    GrishaGrisha
    Участник

    вот такой запрос работает как надо, но выполняется секунд 5 =(

    $sql = mysql_query(«SELECT id_advert FROM (SELECT * FROM cat_advert ORDER BY rand() DESC) AS cat_advert WHERE hide=’show’ AND num_user IN «.$ids_user.» GROUP BY num_user «);

    а вот такой вроде быстро

    $sql = mysql_query(«SELECT id_advert FROM (SELECT * FROM cat_advert where num_user IN «.$ids_user.» ORDER BY rand() DESC) AS cat_advert WHERE hide=’show’ GROUP BY num_user «);

    А вот окончательный вариант:

    $db_query=»SELECT * FROM (SELECT * FROM cat_advert advert WHERE
    «.($t_db_query_category ? » («.$t_db_query_category.») and » : «»).»
    num_user IN «.$ids_user.» AND hide=’show’ AND end_putdate >= «.$GLOBALS[«timeGlobal»].»
    ORDER BY rand() DESC) AS cat_advert GROUP BY num_user DESC limit 7″;

    Посмотрите пожалуйста, все ли тут верно?

    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    #1933
    sarkissarkis
    Хранитель

    1. У вас должна быть выборка юзеров, которые онлайн. Если ту т вопросов нет, то далее идем
    2. В данном случае есть запрос

    т.е данный запрос выбирает объявления с разными num_user. Далее запрос уже дополняете фильтрами , как удобно.
    Выборку обязательно пишите только те колонки, которые нужны. Я взял только две для примера.

    • Ответ изменён 3 года, 3 месяца назад пользователем sarkissarkis.
    #1937
    GrishaGrisha
    Участник

    только те колонки, которые нужны

    если я в подзапросе выбираю колонки, которые нужны. вместо * то сразу ошибка. То, что я тут накалякал — работает. Но теперь возникает проблема такая, что нужно этот блок справа делать, подобие модуля, как модуль вип объявлений. Я для них создал уже block_online_advert.html и forming_block_online_adv.php в соответствующих папках и функции переименовал, но блок не выводится справа. Что то я упустил. Может есть попроще способ? Скажем выборка в doska.php потом где нибудь переменные прописать $mas_perem[«… и в index.php уже вывести справа?

    #1938
    GrishaGrisha
    Участник

    Пришла идея даже получше! А можно сделать так, чтобы эти самые объявления пользователей, которые онлайн, выводились сразу в вип блоке? То есть, пока человек онлайн, то одно из его объяв(в случайном порядке) в блоке вип? Отличный способ задержать юзера на сайте… так… на часика 2 =)))

    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    • Ответ изменён 3 года, 3 месяца назад пользователем GrishaGrisha.
    #1940
    sarkissarkis
    Хранитель

    значит допускаете орфографические ошибки в запросе. Корректируйте тогда выборку ВИП объявлений

Просмотр 15 сообщений - с 1 по 15 (из 19 всего)
  • Для ответа в этой теме необходимо авторизоваться.