Tworząc kod obsługi zasad biznesowych dobrą praktyką jest tworzenie funkcji obsługi wszystkich zasad...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.
»
SZEŚĆ ŚWIATÓW CYKLICZNEJ EGZYSTENCJIWedług nauk buddyjskich, istnieje sześć światów (loka*) egzystencji, w których przebywają wszystkie...
»
wszystkim, dał mu przeto taką kurę, na którą, kiedy zawołać: – Kurko, kurko! znieś mi złote jajko! – w istocie złote znosiła jajko...
»
każdy zauważył, że nie wszystkie powierzchnie są płaskie! Można tworzyć przybliżenia takich powierzchni, stosując płaskie wielokąty, ale...
»
Wejrzyj na mnie, broń mnie od zasadzek nieprzyjaciół widzialnych i niewidzialnych, wspomagaj mnie we wszystkich moich potrzebach, pocieszaj w cierpieniach mego...
»
Dlatego marzyła, żeby żyć wiecznie w legendzie, jak Ans-set, i zadała sobie wiele trudu, żeby dowiedzieć się o nim wszystkiego, co tylko możliwe...
»
 Z tego wszystkiego wyłania się inny interesujący problem: w jaki sposób wyzwania - takie jak rozlew krwi, rewolucja czy inny wstrząs - pomagają nam...
»
Silne stronyDo silnych stron firmy NETKOM mających wpływ na wybór strategii działania zaliczyć trzeba przede wszystkim:szeroki asortyment usług; firma...
»
Zawsze, gdy wracała od swej siostry Nesty, mieszkającej w San Francisco, liczyła z okna samolotu wszystkie te turkusowe baseny pływackie, które zdobiły Dolinę,...
»
— Wszystko w porządku? — Jane podeszła szybko, przed fotelem Adriana, do łóżka męża...
»
Vendôme z powodu rozmiarów swego cokołu, trzon kolumny jest z jednego kawała granitu, największy z wszystkich, jakie wykonała kiedykolwiek ludzka ręka...

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.


Dla przykładu należy użyć funkcji DeleteEntity() zamiast wplatać w kod wyrażenia DELETE. Funkcja DeleteEntity() może zawierać w sobie całą logikę wymaganą do kontroli więzów integralności oraz zasad biznesowych i zwracać różne wartości kodu powrotu w zależności od różnych błędów, jakie mogą wystąpić. W
Rozdział 15 – Witryny oparte o bazę danych
196

ten sposób poprawia się możliwość późniejszego użycia kodu oraz ułatwia wprowadzanie do aplikacji zmian w logice.
Wracając do katalogu produktów, kolejnym krokiem jest utworzenie stron obsługi aktualnego zestawu produktów. Strony te są logicznie identyczne ze stronami obsługi kategorii. Na rysunku 15.4 pokazana jest strona zarządzania produktami, natomiast na wydruku 15.11. znajduje się skrypt generujący tą stronę.
Rysunek
15.4.
Ekran
zarządza
nia
produkta
mi
Wydruk 15.11. Aplikacja zarządzania danymi — zarządzanie produktami ( mgmt_prods.phtml)
<?php
error_reporting( E_ALL & ~E_NOTICE );
session_start(); // niejawne ustawianie zmiennej sesji $aMerchantID
if ( empty( $aMerchantID ) == True )
{
header( "Location: login.phtml?retpage=" . urlencode( $REQUEST_URI )."\n" ); exit;
}

include( "class.FastTemplate.php" );
include( "./mgmt_db.php" );
include( "./mgmt_funcs.php" );

$aTPL = new FastTemplate( "." );
$aDB = new mgmt_db();

$aTPL->define( array( "base" => "mgmt_app_base.tpl",
"body" => "mgmt_body.tpl",
"footer" => "mgmt_footer.tpl",
"page_body" => "mgmt_prods_ovr.tpl",
"prod_table" => "mgmt_prods_table.tpl",
"prod_item" => "mgmt_prods_item.tpl" ) );

$aSQL = "select a.category_id, a.product_id, a.name, a.external_id, a.price,";
$aSQL .= "b.name as cat_name from mcProducts a, mcCategories b where (a.merchant_id"; $aSQL .= "= $aMerchantID) and (a.category_id = b.category_id)";
$aDB->query( $aSQL );
if ( $aDB->num_rows() > 0 )
{
while ( $aDB->next_record() )
{
$aCatID = $aDB->f( "category_id" );
$aCatName = $aDB->f( "cat_name" );
$aProdID = $aDB->f( "product_id" );
$aProdName = $aDB->f( "name" );
$aProdEID = $aDB->f( "external_id" );
$aProdPrice = $aDB->f( "price" );

$aTPL->assign( array( "PROD_ID" => $aProdID,
197
PHP – Kompendium wiedzy

"PROD_EID" => $aProdEID,
"PROD_NAME" => $aProdName,
"PROD_CAT" => $aCatName,
"PROD_PRICE" => '$' .
number_format( $aProdPrice, 2 ) ) );
$aTPL->parse( "PRODUCT_LIST", ".prod_item" );
}
$aTPL->parse( "EXISTING_PRODUCTS", "prod_table" );
}
else
{
$aTPL->assign( array( "EXISTING_PRODUCTS" => "" ) );
}

$aTPL->assign( array( "TITLE" => "Zarządzanie katalogiem produktów",
"MERCHANT_NAME" => GetMerchantName( $aDB, $aMerchantID )
) );


$aTPL->parse( "PAGE_BODY", "page_body" );
$aTPL->parse( "FOOTER", "footer" );
$aTPL->parse( "BODY", "body" );
$aTPL->parse( "PAGE", "base" );
$aTPL->FastPrint( "PAGE" );
?>
Strony umożliwiające dodawanie, usuwanie i zmianę produktów nie zostały tutaj szczegółowo
przedstawione, ale są dostępne na stronie WWW wymienionej w zasobach sieci na końcu książki. Zasady biznesowe obowiązujące przy dodawaniu nowych produktów są następujące:
• Produkt musi zostać przypisany do jednej kategorii.
• Nazwy produktów w kategorii muszą być unikalne.
• Cena produktu musi wynosić co najmniej zero.
• Waga towaru również musi wynosić co najmniej zero.
W chwili obecnej nie ma ograniczeń na kasowanie produktów. Po zmianie danych produktu muszą być spełnione te same zasady biznesowe co przy dodawaniu nowego produktu. Na wydruku 15.12 zamieszczony został fragment pliku mgmt_funcs.php zawierający niektóre funkcje dostępu do bazy danych oraz funkcje zasad biznesowych używanych w aplikacji.
Wydruk 15.12. Aplikacja zarządzająca danymi — funkcje użytkowe ( mgmt_funcs.php)
<?php

function GetMerchantName( $aDB, $aMerchantID )
{

Powered by MyScript