Консультация № 145860
03.10.2008, 10:15
0.00 руб.
03.10.2008, 10:26
0 5 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, 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 строк кода, а еще лучше, когда этих строк и того меньше.
Неизвестный
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
Неизвестный
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}
Неизвестный
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";
//-- это колонка наименования товара и цены --//


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