Разработка доски объявлений под ключ › Boxcode › Программная часть (back-end) › Вывести последние 4 объявления
- В этой теме 9 ответов, 2 участника, последнее обновление 5 лет, 9 месяцев назад сделано
Grisha.
-
АвторСообщения
-
16.08.2017 в 17:57 #1904
Grisha
УчастникЗдравствуйте. Подскажите как вывести заголовки, имена авторов и среднюю цену последних 4 объявлений в forming_block_navigation.html
Чтобы на выходе было так:
1. вася, петя, катя и митя
2. продаю диван, Продажа кровати, отдам щенят и вывоз мусора
3. средняя цена 1200016.08.2017 в 22:46 #1905sarkis
Хранительforming_block_navigation.php
1. Делаете выборку select с лимитом 4 записи и order by sort_date
2. Выводите их через цикл foreach в шаблоне.(name_user,name_advert)
3. В цикле суммируйте их цены в новую переменную.
4. Полученную переменную после цикла потом делите на 4 и округляйте.16.08.2017 в 23:10 #1906Grisha
УчастникА как вывести так, чтобы 3 записи через запятую а последняя после «и», как я в примере написал?
16.08.2017 в 23:37 #1907Grisha
УчастникВыборка вот
$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″;В шаблоне не знаю как вывести(
17.08.2017 в 09:10 #1908sarkis
ХранительВ одном из предыдущих тем на форуме уже был подобный вопрос насчёт вывода в шаблоне. Через $mas_perem передавайте полученный массив и в шаблоне разбирайте через foreach.
Потом собирайте в одну переменую имена юзеров через $name.=$row[‘name_user’].’,’;
Чтобы добавить вместо запятой И — нужно предварительно до цикла выбрать последнее значении массива и сравнить его со значением в массиве. И через условие тогда выводить или запятую или И
17.08.2017 в 11:59 #1909Grisha
Участник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 раза Васю не показывать в результате =)
17.08.2017 в 20:01 #1912sarkis
ХранительВам имена нужно в цикле предварительно собирать в одну переменную или массив и в этом цикле проверять нет ли значения имени в этом массиве. Я бы вам показал пример , но отпуск не позволяет , поэтому только письменные рекомендации ))
17.08.2017 в 20:43 #1913Grisha
УчастникВот таким образом удалось вроде как, но если будет 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.
17.08.2017 в 21:47 #1915sarkis
ХранительПример замены последней запятой :
$str = «s, 2, 55, 465,»;
echo substr_replace($str, ‘.’, strrpos($str, ‘,’));
17.08.2017 в 22:54 #1916Grisha
Участникпоследней запятой
Ну самую последнюю я убрал совсем. Я имел ввиду последнюю в строке. То есть Вася, вася, вася (вот эту заменить на «и»->), вася
На самом деле это не сильно важно. Вся задумка с этими текстами у меня связана с сео. Эксперимент решил поставить. Так, что текст для ПС. Но было бы эстетичнее в конце все таки «и». То есть Катя, Нина, Саркис и Гриша. Вроде и пользователю показать такой текст не стыдно=)
-
Ответ изменён 5 лет, 9 месяцев назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.