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

    Здравствуйте. Подскажите как вывести заголовки, имена авторов и среднюю цену последних 4 объявлений в forming_block_navigation.html

    Чтобы на выходе было так:
    1. вася, петя, катя и митя
    2. продаю диван, Продажа кровати, отдам щенят и вывоз мусора
    3. средняя цена 12000

    #1905
    sarkis
    Хранитель

    forming_block_navigation.php
    1. Делаете выборку select с лимитом 4 записи и order by sort_date
    2. Выводите их через цикл foreach в шаблоне.(name_user,name_advert)
    3. В цикле суммируйте их цены в новую переменную.
    4. Полученную переменную после цикла потом делите на 4 и округляйте.

    #1906
    Grisha
    Участник

    А как вывести так, чтобы 3 записи через запятую а последняя после «и», как я в примере написал?

    #1907
    Grisha
    Участник

    Выборка вот

    $db_query=»SELECT name_user, name_adv FROM cat_advert WHERE »
    .( $t_db_query_category ? » ( «.$t_db_query_category.» ) and » : «» ).» hide=’show’ and end_putdate>».$GLOBALS[«timeGlobal»].» »
    .» ORDER BY sort_time DESC LIMIT 4″;

    В шаблоне не знаю как вывести(

    #1908
    sarkis
    Хранитель

    В одном из предыдущих тем на форуме уже был подобный вопрос насчёт вывода в шаблоне. Через $mas_perem передавайте полученный массив и в шаблоне разбирайте через foreach.

    Потом собирайте в одну переменую имена юзеров через $name.=$row[‘name_user’].’,’;

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

    #1909
    Grisha
    Участник

    control_data.php

    $this->info_synopsis_advert = array();

    $db_query=»select * from «.DB_PREF.»advert advert where »
    .( $t_db_query_category ? » ( «.$t_db_query_category.» ) and » : «» ).» hide=’show’ and end_putdate > ‘».$GLOBALS[«timeGlobal»].»‘ ORDER BY sort_time DESC LIMIT 4″;
    list($kolvo_adv,$this->info_synopsis_advert)=obr_db_query_select_assoc($db_query);

    forming_data.php

    $mas_perem[«info_row»] = $this->info_synopsis_advert;

    forming_block_navigation.html

    {? $razd=»»}
    {foreach from=$info_row value=»row»}
    {$razd}
    {$row[«name_user»]|codehtml}
    {? $razd=», «}
    {/foreach}

    Подсчет средней суммы

    {? $summa=»0″}
    {foreach from=$info_row value=»row»}
    {? $summa= $summa+$row[«cost»]}
    {/foreach}
    {?$summa=$summa/4}
    {?$summa = round($summa, -3)}

    Вроде все получилось, спасибо. Не смог только разделитель «И» сделать. Не знаю как сравнение и условие организовать.

    Подскажите еще, пожалуйста, есть ли способ выявить дубли в цикле и если они есть, то не показывать их в результате. Скажем Вася, вася, нина, петя. Было бы круто 2-3 раза Васю не показывать в результате =)

    • Ответ изменён 5 лет, 9 месяцев назад пользователем Grisha.
    • Ответ изменён 5 лет, 9 месяцев назад пользователем Grisha.
    #1912
    sarkis
    Хранитель

    Вам имена нужно в цикле предварительно собирать в одну переменную или массив и в этом цикле проверять нет ли значения имени в этом массиве. Я бы вам показал пример , но отпуск не позволяет , поэтому только письменные рекомендации ))

    #1913
    Grisha
    Участник

    Вот таким образом удалось вроде как, но если будет 4 раза Вася, то из них удаляются 2 =) Осталось заменить последнюю запятую на «И».

    {? $names=»»}
    {foreach from=$info_row value=»row»}
    {? $names.=$row[«name_user»].», «}
    {/foreach}

    {? $names = substr($names, 0, -1)}
    {? $massiv = explode(«, «, $names)}
    {? $massiv = array_unique($massiv)}
    {? $sub = implode(«, «, $massiv)}
    {$sub}

    Отдых это хорошо) Я вот 3 года уже гнию в болоте)))

    • Ответ изменён 5 лет, 9 месяцев назад пользователем Grisha.
    #1915
    sarkis
    Хранитель

    Пример замены последней запятой :

    $str = «s, 2, 55, 465,»;

    echo substr_replace($str, ‘.’, strrpos($str, ‘,’));

    #1916
    Grisha
    Участник

    последней запятой

    Ну самую последнюю я убрал совсем. Я имел ввиду последнюю в строке. То есть Вася, вася, вася (вот эту заменить на «и»->), вася

    На самом деле это не сильно важно. Вся задумка с этими текстами у меня связана с сео. Эксперимент решил поставить. Так, что текст для ПС. Но было бы эстетичнее в конце все таки «и». То есть Катя, Нина, Саркис и Гриша. Вроде и пользователю показать такой текст не стыдно=)

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