05.06.2020, 01:44 [+3 UTC]
в нашей команде: 4 597 чел. | участники онлайн: 0 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
04.06.2020, 18:49

Последний вопрос:
05.06.2020, 00:36
Всего: 152576

Последний ответ:
04.06.2020, 11:52
Всего: 260246

Последняя рассылка:
04.06.2020, 20:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
08.10.2019, 10:18 »
dar777
Это самое лучшее решение! [вопрос № 196576, ответ № 278862]
06.10.2019, 19:56 »
dar777
Это самое лучшее решение! [вопрос № 196574, ответ № 278855]
08.12.2019, 11:08 »
Kristina
Очень помогли и очень вовремя! [вопрос № 197338, ответ № 279244]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей Владимирович (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 1651
Хватов Сергей
Статус: Академик
Рейтинг: 37
SAW
Статус: 10-й класс
Рейтинг: 24

Перейти к консультации №:
 

Консультация онлайн # 145860
Раздел: • PHP / Perl / Python
Автор вопроса: Чумак Дмитрий Иванович
Отправлена: 03.10.2008, 10:15
Поступило ответов: 0

Час добрый! Подскажите пожалуйста! Как в блоке прайса прописать чтоб вылазил не просто список, а список ссылок с ценами.

<?php
// ========================================================
// <<-- Вывод прайса  -->>
// Func.Prais.php
// ========================================================
function getPrais()
{
    global $db;
    global $tmpl;
    global $area;
    $prais = "<table cellspacing=\"4\" border=\"0\" width=\"100%\" class=\"forum_info_main\">";
    $s = $db->Query("SELECT * FROM  " . PREFIX . "_shop_cat WHERE parent_id = '0' ORDER BY posi ASC");
    $count = 0;
    while($r = $s->fetchrow())
    {
        $prais .= "<tr><td valign=\"top\"  colspan=\"2\" >";
        $prais .= "<div class=\"box_linked\"><h2>" . stripslashes($r->catname) . "</h2></div>";
        $sql = $db->Query("SELECT * FROM " . PREFIX . "_shop_articles WHERE articlecat = '$r->catid' AND  price>1");
        while($row = $sql->fetchrow())
        {
//это колонка наименования товара и цены //
        $prais .=  "<tr class=\"basket_header\"><td>$row->title </td><td>$row->price</td><tr>\n";
//-- это колонка наименования товара и цены --//
        $sql2 = $db->Query("SELECT * FROM " . PREFIX . "_shop_articles WHERE articlecat = '$r->catid' AND price>1");
                $row2 = $sql2->numrows();
        }
        $prais .=  "$row2->title\n";
    }
    $count++;
    $prais .= "</td></tr>";
    $prais .= "</table>";
    return  $prais;
}
?>



при выводе странички формируется ссылка артикула типа:
/index.php?p=shop&show=showdetail&fid= 000-000-014 &categ=34&parent=0&navop=0&area=1
где выделен артикул
в базе данных artnumber.

Последнее редактирование 03.10.2008, 10:26 [неизвестный]

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 145860
Бородин Александр Олегович

# 1

= общий = | 03.10.2008, 11:33

Ваше дело, конечно, как делать, но по-моему, Вы делаете одну ошибку, свойственную начинающим - пытаетесь создавать функции, которые сделают абсолютно всю работу. Между тем, такой подход бывает довольно опасен - опасен именно тем, что у Вас получается нагромождение. Обычно функция, делающая запрос к базе данных с целью получить прайс-лист или еще что-нибудь в этом духе, не возвращает ничего, кроме результата этого запроса. Все! Оформлением результата этого запроса занимается другая специальная функция. Которая и зашивает значения полей таблицы в соответствующие HTML-теги.

Кроме того, если посмотреть внимательно на код Вашей функции можно заметить уже "кое-что". Например, переменная $count. Зачем она? Она по логике должна стоять внутри цикла, чтобы по завершении итерации увеличиться на 1. Она находится вне цикла. Ляп? Очевидно!.. Второе... Представьте, что Ваш прайс пуст. Что будет отпечатано? А вот что:

<table cellspacing="4" border="0" width="100%" class="forum_info_main"></td></tr></table>

Кроме того, даже если прайс не пустой... Вы не закрываете теги <tr> и <td> в циклах. В результате Вы получите такой винегрет, что я не удивляюсь, почему Вы задаете такой, по сути, простейший вопрос. Как сделать список ссылок? Да проще простого! Надо просто соответствующий текст "обуть" в теги <a>, а в атрибуте href прописать заранее сформированный на основе полученных данных адрес. Я не понимаю Вашего вопроса, тут по-моему, все просто, только Вы себе сами все усложнили. Просто ограничусь советом: нормальная функция даже в самом пиковом случае не превышает по объему 20-30 строк кода, а еще лучше, когда этих строк и того меньше.

неизвестный

# 2

= общий = | 03.10.2008, 12:05

index.php?p=shop&show=showdetail&fid= 000-000-013 &categ= 34 &parent=0&navop=0&area=1

арткул продукта и раздел соответственно выделению
Посмотрите в моем варианте http://jurasik-brest.com раздел прайс-лист
при добавлении тегов выдает http://jurasik-brest.com/000-000-013
на денвере ссылки выделяет но при нажатии выдает

Not Found

The requested URL /jurasik-brest.com/Костюм was not found on this server.
Apache/2.0.59 (Win32) PHP/5.2.3 Server at 127.0.0.1 Port 80

неизвестный

# 3

= общий = | 03.10.2008, 12:19

модуль темплейта магазина как формируется запрос?

{strip} {if $smarty.request.categ==''} {* Текст приветствия в магазине *} {$shop_opener} 

{/if} {* Вывод рубрик каталога *} {if $showtopnav==1} {assign var="cols" value=3} {assign var="maxsubs" value=2} {foreach from=$shopitems item=item name=dl} {assign var=op value=$smarty.request.navop} {assign var="newtr" value=$newtr+1} {* math equation='( x / z )' x=100 z=3 *} {if $item->icon!=''} {else} {/if}
{$item->visible_title|truncate:'50'} 
{foreach from=$item->sub item=sub name=subs} {if $smarty.request.categ==""} {assign var="num" value=$num+1} {if ($num <= $maxsubs) } {$sub->visible_title|escape:'html'} {if !$smarty.foreach.subs.last} 
{/if} {else} {if $showalllink!=1} {$lang.showallcategs}	{assign var=showalllink value=1} {/if} {/if} {else} {$sub->visible_title|escape:'html'} {*... {$sub->data} *} {if !$smarty.foreach.subs.last} 
{/if} {/if} {/foreach} {assign var=showalllink value=0} {assign var="num" value=0} 





{if $newtr % $cols == 0} 

{/if} {/foreach} 

{/if} 

{if $smarty.request.categ==''} {lastshoparticles} {/if} {if $detail == 1 && $smarty.request.fid == $file->artnumber && $smarty.request.fid != ''} 
{$lang.shop_product_details} 


{if $file->icon!=''} {strip} {/strip} {else} {/if} 

{$file->title}



{get_availicon artnumber=$file->artnumber}



{$lang.shop_artnumber} {$smarty.request.fid} 

{$file->descr_short|sslash} 

{* -------- Цена прайса -------- *} {if $file->price_list > '0'} {$lang.shop_norm_price} {$file->price_list|string_format:"%.2f"} {$currency_symbol}

{/if} {$lang.shop_our_price_norm} 
{* -------- Цена со скидкой -------- *} {if $more_option} {* {$lang.order_shop_price_from} *} {/if} {$file->price|string_format:"%.2f"} {$currency_symbol}



{$flag_ust} {$lang.shop_shpc_cextra} {if $netto_price>'0' && $show_netto==1} 
{$netto_price|string_format:"%.2f"} {$currency_symbol} {$lang.netto} {/if} {if $file->unit_count > 0} 
1 {$file->UnitName}: {$price_once|string_format:"%.2f"} {$currency_symbol}, {$file->unit_count} {$file->UnitNameMz} {$text_includedunits}. {/if} 


{if $file->fsk18==1 && $fsk18!=1} 
{else} {$lang.productdetail_descr|default:'Produktbeschreibung'}

{if $extraimages} {$lang.productdetail_images|default:'Bilder'}

{/if} {if $file->detail_sys!=''} {$lang.productdetail_system|default:'System'}

{/if} {if $file->detail_press!=''} {$lang.productdetail_press|default:'Presse'}

{/if} {if $file->detail_service!=''} {$lang.productdetail_service|default:'Service'}

{/if} {if $file->detail_programms!=''} {$lang.productdetail_included|default:'Enthalten'}

{/if} 

{if $smarty.request.view=='detail'||$smarty.request.view==''} {$file->descr} {elseif $smarty.request.view=='sys'} {$file->detail_sys|sslash} {elseif $smarty.request.view=='press'} {$file->detail_press|sslash} {elseif $smarty.request.view=='service'} {$file->detail_service|sslash} {elseif $smarty.request.view=='included'} {$file->detail_programms|sslash} {/if} {if $smarty.request.view=='images'} {if $extraimages} {strip} {foreach from=$extraimages item=ei} {/foreach} {/strip} {else} - {/if} {/if} 


{if $staffel} {$lang.shop_p_pricelists}

{foreach from=$staffel item=st} {$st->from_a} - {$st->to_a} {$lang.shop_pieces} 

{$st->newprice|string_format:"%.2f"} {$currency_symbol} {* {$flag_ust} *} {if $show_netto==1} / {$st->nettoprice|string_format:"%.2f"} {$currency_symbol} {$lang.netto} {/if} 



{/foreach} 


{/if} {if $more_option} {$lang.shop_p_pvariants}

{foreach from=$more_option item=opt} {assign var=opt_val value=$opt->values} {$opt->name}

{* ОПИСАНИЕ ВАРИАНТОВ {$opt->artoptions_descr} *} {$lang.shop_please_chose}id}" {if $ov->pre_selected==1}selected="selected"{/if}>{$ov->option_desc} {if $ov->math_value>'0'}{$ov->math_operant} {$ov->math_value|string_format:"%.2f"}{$currency_symbol} {if $show_netto==1 && $ov->netto_price>'0'}/ {$ov->netto_price|string_format:"%.2f"}{$currency_symbol} {$lang.netto}{/if}{/if} {if $opt->artoptions_descr != ''} {/if} 



{/foreach} 

{/if} 
{assign var=ammount value=$file->amount_store} {if $ammount == '1' && $ammount > '0' } {$lang.shop_ewarning_lowstoreamount|replace:'%%count%%':$ammount}


{elseif $ammount < '2'} {$lang.shop_ewarning_notonstore} 


{else} {/if} {if $file->multiorder_deny!=1} {if $enable_preorder!=1 && $file->amount_store < '1'} {else} {if $file->show_st=='1'} {$smarty.section.amount.index+1} {$lang.shop_amount} » {/if} {/if} {/if} 

{assign var=ammount value=$file->amount_store} {if $ammount == '1' && $ammount > '0' } {elseif $ammount < '2'} {if $enable_preorder==1} {/if} {else} {/if} 






{/if} 
{if $csi} {$lang.shop_beinterestedin}

{foreach from=$csi item=cs} {$cs->title}
{/foreach} {/if} {if permission("shop_articles_edit")} 
{$lang.shop_admin_edit}{$lang.shop_edit_thisproduct} {/if}	

{else} {if $files || $notfound==1 && $smarty.request.categ!=''} 
{include file='shop/products.tpl'} {/if} {/if} {/strip}

неизвестный

# 4

= общий = | 03.10.2008, 13:03

Все спасибо разобрался сам
прописал:

//это колонка наименования товара и цены //
        $prais .=  "<tr class=\"basket_header\"><td><a href=index.php?p=shop&show=showdetail&fid=$row->artnumber&categ=$row->articlecat&parent=0&navop=0&area=1>$row->title</a></td><td>$row->artnumber</td><td>$row->price</td><tr>\n";
//-- это колонка наименования товара и цены --//


Спасибо!

неизвестный

# 5

= общий = | 03.10.2008, 13:06

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

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.20206 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39