Файл: Разработка мебельного интернет-магазина (Миссия компании).pdf
Добавлен: 16.02.2024
Просмотров: 178
Скачиваний: 0
СОДЕРЖАНИЕ
1. Цели и концепция Web-ресурса
Описание свойств Web-ресурса, требуемых для решения выбранной задачи
2. Параметры и внешний вид Web-ресурса
2.1. Обоснование выбора имени и названия Web-ресурса
Обоснование принятых решений по размеру и виду шрифта
Обоснование принятых решений по формированию фирменного стиля
Обоснование выбора инструментария для создания Web-ресурса
Обоснование выбора способа размещения Web-ресурса в Интернет
4. Очевидно также, что необходимо будет использовать все возможные виды оплаты.
5. Товар в магазине должен быть оригинальным, не повторяющимся в других магазинах – это справедливо в большей мере для малых и средних магазинов.
6. Увеличение скорости и качества доставки также станет необходимым элементом.
7. В будущем возможно подключение функций по созданию первичных документов, таких как, счета, накладные, счета-фактуры и т.п., что позволит сделать работу Интернет-магазина еще более автоматизированной.
8. Кроме того, возможно также и развитие по пути расширения каталога, увеличению количества товарных позиций и так далее.
Список литературы
- Алексунин В.А., Родигина В.В. Электронная коммерция и маркетинг в Интернет.- Учебное пособие. - М.: «Дашков и К0», 2005.
- Быков В.А. Электронный бизнес и безопасность /.-М.:Радио и связь,2000.-200 с.:ил.
- Завалеев В. Курс ЦИТ «Internet-технологии в проектах с пластиковыми карточками», Центр Информационных Технологий ,2007.
- Информатика: Учебник для вузов (Гриф МО РФ) / Острейковский В.А., М: Высшая школа, 2010.- 511 с.
- Информатика: Учебник для вузов / Козырев А.А.- СПб: издательство Михайлова В.А., 2010.- 511 с.
- Кавторева Я. Интернет магазин. Организация, налогообложение, учет. – Фактор, 2009 – 119 с.
- Киселев Ю.Н. Электронная коммерция: практическое руководство.- СПб: ООО «ДиаСофтЮП», 2010.
- Маршавин Р.А., Ляпунов С.И. Глобальный бизнес и информационные технологии, Учебное пособие. М.:2009 г.
- Орлов Л. Как создать электронный магазин в Интернет, 2_е изд., М.: Бук.пресс, 2009. - 384 с.
- Эффективная работа с СУБД А. Рубен, А. Горев, С. Макшарипов СПб.: Питер, 2009. – 822 с.
- Алексеев А. Будущее электронной коммерции //Инфобизнес,2009. № 48
- Ашманов И. С. Национальные особенности поисковых систем // Журнал «Компьютер в школе», № 01, 2009 год // Издательство «Открытые системы»
- Ездаков А. Российские электронные витрины // Сети. 2008. № 9
- Малевский П., Чернышев А., Дубина А. Системы электронной коммерции для операторов связи // ПаРаДис. 2009. № 1
- Создание и поддержка Интернет-магазина на базе WWWB Сервера Журнал «Главбух», 2009. №4
- Ивашов А. Электронные магазины: от сельпо до супермаркета - http:// archives. maillist.ru/ 72200/ 181108. html
- Малышева Н. Виртуальные покупки Электронная версия еженедельника «Аргументы и факты» - http://www.aif.ru
- Методика создания Интернет-магазина - http://www.delna.ru/ page/ shop. html
- Сайт Fodex - Этапы разработки Интернет-магазина - http://www.fodex.ru
<?php
if( ! defined( '_VALID_MOS' ) && ! defined( '_JEXEC' ) )
die( 'Direct Access to ' . basename( __FILE__ ) . ' is not allowed.' ) ;
/**
*
* @version $Id: ps_product_attribute.php 1879 2009-09-11 08:20:46Z soeren_nb $
* @package VirtueMart
* @subpackage classes
* @copyright Copyright (C) 2004-2009 soeren - All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* VirtueMart is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See /administrator/components/com_virtuemart/COPYRIGHT.php for copyright notices and details.
*
* http://virtuemart.net
*/
/**
* The class is is used to manage the product attributes.
*
*/
class vm_ps_product_attribute {
/**
* Validates that all variables for adding, updating an attribute
* are correct
*
* @param array $d
* @return boolean True when successful, false when not
*/
function validate( &$d ) {
global $vm
Logger, $VM_LANG;
$valid = true ;
if( $d["attribute_name"] == "" ) {
$vmLogger->err( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_ERR_ATTRNAME' ) ) ;
$valid = false ;
} elseif( $d["old_attribute_name"] != $d["attribute_name"] ) {
$db = new ps_DB( ) ;
$q = "SELECT attribute_name FROM #__{vm}_product_attribute_sku " ;
$q .= "WHERE attribute_name = '" . $db->getEscaped( $d["attribute_name"] ) . "'" ;
$q .= "AND product_id = '" . (int)$d["product_id"] . "'" ;
$db->query( $q ) ;
if( $db->next_record() ) {
$vmLogger->err( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_ERR_ATTRUNIQ' ) ) ;
$valid = false ;
}
}
return $valid ;
}
/**
* Validates all variables for deleting an attribute
*
* @param array $d
* @return boolean True when successful, false when not
*/
function validate_delete( &$d ) {
global $vmLogger, $VM_LANG ;
require_once (CLASSPATH . 'ps_product.php') ;
$ps_product = new ps_product( ) ;
$db = new ps_DB( ) ;
$q = 'SELECT product_id FROM #__{vm}_product_attribute_sku WHERE product_id = ' . (int)$d["product_id"] ;
$db->query( $q ) ;
if( $db->num_rows() == 1 && $ps_product->parent_has_children( $d["product_id"] ) ) {
$vmLogger->err( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_ERR_DELITEMS' ) ) ;
return false ;
}
return true ;
}
/**
* Adds an attribute record
*
* @param array $d
* @return boolean True when successful, false when not
*/
function add( &$d ) {
global $VM_LANG ;
if( ! $this->validate( $d ) ) {
return false ;
}
$db = new ps_DB( ) ;
$fields = array( 'product_id' => $d["product_id"] , 'attribute_name' => $d["attribute_name"] , 'attribute_list' => $d["attribute_list"] ) ;
$db->buildQuery( 'INSERT', '#__{vm}_product_attribute_sku', $fields ) ;
if( $db->query() === false ) {
$GLOBALS['vmLogger']->err( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_ERR_SAVING' ) ) ;
return false ;
}
/** Insert new Attribute Name into child table **/
$ps_product = new ps_product( ) ;
$child_pid = $ps_product->get_child_product_ids( $d["product_id"] ) ;
for( $i = 0 ; $i < count( $child_pid ) ; $i ++ ) {
$fields = array( 'product_id' => $child_pid[$i] , 'attribute_name' => $d["attribute_name"] ) ;
$db->buildQuery( 'INSERT', '#__{vm}_product_attribute', $fields ) ;
$db->query() ;
}
$GLOBALS['vmLogger']->info( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_SAVED' ) ) ;
return true ;
}
/**
* Updates an attribute record
*
* @param array $d
* @return boolean True when successful, false when not
*/
function update( &$d ) {
global $VM_LANG ;
if( ! $this->validate( $d ) ) {
return false ;
}
$db = new ps_DB( ) ;
$fields = array( 'attribute_name' => $d["attribute_name"] , 'attribute_list' => $d["attribute_list"] ) ;
$db->buildQuery( 'UPDATE', '#__{vm}_product_attribute_sku', $fields, "WHERE product_id='" . (int)$d["product_id"] . "' AND attribute_name='" . $db->getEscaped( $d["old_attribute_name"] ) . "'" ) ;
if( $db->query() === false ) {
$GLOBALS['vmLogger']->err( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_ERR_UPDATING' ) ) ;
return false ;
}
if( $d["old_attribute_name"] != $d["attribute_name"] ) {
$ps_product = new ps_product( ) ;
$child_pid = $ps_product->get_child_product_ids( $d["product_id"] ) ;
for( $i = 0 ; $i < count( $child_pid ) ; $i ++ ) {
$fields = array( 'attribute_name' => $d["attribute_name"] ) ;
$db->buildQuery( 'UPDATE', '#__{vm}_product_attribute', $fields, "WHERE product_id='" . $child_pid[$i] . "' AND attribute_name='" . $db->getEscaped( $d["old_attribute_name"] ) . "' " ) ;
$db->query() ;
}
}
$GLOBALS['vmLogger']->info( $VM_LANG->_( 'VM_PRODUCT_ATTRIBUTE_UPDATED' ) ) ;
return true ;
}
/**
* Controller for Deleting Records.
*/
function delete( &$d ) {
$record_id = $d["attribute_name"] ;
if( is_array( $record_id ) ) {
foreach( $record_id as $record ) {
if( ! $this->delete_record( $record, $d ) )
return false ;
}
return true ;
} else {
return $this->delete_record( $record_id, $d ) ;
}
}
/**
* Deletes one Record.
*/
function delete_record( $record_id, &$d ) {
global $db ;
if( ! $this->validate_delete( $d ) ) {
return false ;
}
$q = "DELETE FROM #__{vm}_product_attribute_sku " ;
$q .= 'WHERE product_id = ' . (int)$d["product_id"] . ' ' ;
$q .= "AND attribute_name = '" . $db->getEscaped( $record_id ) . "'" ;
$db->query( $q ) ;
$ps_product = new ps_product( ) ;
$child_pid = $ps_product->get_child_product_ids( $d["product_id"] ) ;
for( $i = 0 ; $i < count( $child_pid ) ; $i ++ ) {
$q = "DELETE FROM #__{vm}_product_attribute " ;
$q .= "WHERE product_id = '$child_pid[$i]' " ;
$q .= "AND attribute_name = '" . $db->getEscaped( $record_id ) . "'" ;
$db->query( $q ) ;
}
return True ;
}
/**
* Lists all child/sister
products of the given product
*
* @param int $product_id
* @return string HTML code with Items, attributes & price
*/
function list_attribute( $product_id, $extra_ids = null ) {
// The default listing method
$product_list = "N" ;
$display_use_parent = 'N';
$child_options = ps_product::get_child_options( $product_id ) ;
if( ! empty( $child_options ) ) {
extract( $child_options ) ;
}
$quantity_options = ps_product::get_quantity_options( $product_id ) ;
if( ! empty( $quantity_options['quantity_box'] ) ) {
$display_type = $quantity_options['quantity_box'] ;
}
$child_option_ids = ps_product::get_field( $product_id, 'child_option_ids' ) ;
if( $child_option_ids != '' && $product_list == "N" ) {
$product_list = "Y" ;
}
if( $extra_ids ) {
$child_option_ids .= $child_option_ids ? "," . $extra_ids : $extra_ids ;
}
if( empty( $class_suffix ) ) {
$class_suffix = "" ;
}
switch( $product_list) {
case "Y" :
return $this->list_attribute_list( $product_id, $display_use_parent, $product_list_child, $display_type, $class_suffix, $child_option_ids, $dw, $aw, $display_header, $product_list_type, $product_list ) ;
break ;
case "YM" :
return $this->list_attribute_list( $product_id, $display_use_parent, $product_list_child, $display_type, $class_suffix, $child_option_ids, $dw, $aw, $display_header, $product_list_type, $product_list ) ;
break ;
case "N" :
default :
return $this->list_attribute_drop( $product_id, $class_suffix ) ;
break ;
}
}
/**
* Lists all child/sister products of the given product
*
* @param int $product_id
* @return string HTML code with Items, attributes & price
*/
function list_attribute_drop( $product_id, $cls_suffix ) {
global $VM_LANG, $CURRENCY_DISPLAY, $mm_action_url, $sess ;
$db = new ps_DB( ) ;
$cur_product_id = $_REQUEST['product_id'];
// $q="select product_id from #__{vm}_product where product_parent_id=$cur_product_id";
$q = "SELECT p.product_id,p.product_name FROM #__{vm}_product p
INNER JOIN #__{vm}_product_type_1 p1 on p1.product_id=p.product_id
WHERE p.product_parent_id='$cur_product_id' AND p.product_publish='Y'";
// AND p1.door_type!='$cur_door_type'
// and p1.door_color='$cur_door_color'
// " ;
$db->setQuery($q);
$db->query();
$db->next_record();
$new_id = $db->f( "product_id" );
if($new_id){
$product_parent_id=$cur_product_id;
$product_id=$new_id;
$_REQUEST['product_id']=$new_id;
$cur_product_id=$new_id;
}else{ // parent все же лучше уже здесь узнать:
$q="select product_parent_id from #__{vm}_product where product_id=$cur_product_id";
$db->setQuery($q);
$db->query();
$db->next_record();
$product_parent_id = $db->f( "product_parent_id" );
}
// echo">>>>>>>>>>>>>>>>>>>>>$cur_product_id - $new_id";
//if($product_id ==19)$product_id =23;
require_once (CLASSPATH . 'ps_product.php') ;
$ps_product = new ps_product( ) ;
$Itemid = $sess->getShopItemid() ;
$category_id = vmGet( $_REQUEST, 'category_id', "" ) ;
$db_sku = new ps_DB( ) ;
$db_item = new ps_DB( ) ;
$tpl = new $GLOBALS['VM_THEMECLASS']( ) ;
$tpl->set( "cls_suffix", $cls_suffix ) ;
$tpl->set( "product_id", $product_id ) ;
// Set Advanced Attributes
$tpl->set( "advanced_attribute", $this->list_advanced_attribute( $product_id, $db->f( "product_id" ) ) ) ;
$tpl->set( "custom_attribute", $this->list_custom_attribute( $product_id, $db->f( "product_id" ) ) ) ;
// Get list of children
$q1 = "";
if( CHECK_STOCK && PSHOP_SHOW_OUT_OF_STOCK_PRODUCTS != "1") {
$q1 = " AND product_in_stock > 0 ";
}
// $q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y'" ;
//tra
veller:
$q="select door_color, door_type from #__{vm}_product_type_1 where product_id=$cur_product_id";
$db->setQuery($q);
$db->query();
$db->next_record();
$cur_door_type = $db->f( "door_type" );
$cur_door_color = $db->f( "door_color" );
//echo">>>>>>>>>>>>>>>>>> $product_parent_id - >>>$cur_product_id - $cur_door_type - $cur_door_color";
$q = "SELECT p.product_id,p.product_name FROM #__{vm}_product p
INNER JOIN #__{vm}_product_type_1 p1 on p1.product_id=p.product_id
WHERE p.product_parent_id='$product_parent_id' AND p.product_publish='Y'
AND p1.door_type!='$cur_door_type'
and p1.door_color='$cur_door_color'
" ;
$db->setQuery($q);
$db->query();
$db->next_record();
$alt_id=$d
}
}
$addhtml.="";
$q = "SELECT p.product_id,p.product_name FROM #__{vm}_product p
INNER JOIN #__{vm}_product_type_1 p1 on p1.product_id=p.product_id
WHERE p.product_parent_id='$product_parent_id' AND p.product_publish='Y'
AND p1.door_type='$cur_door_type'" ;
$db->query($q.$q1);
if( $db->num_rows() < 1 ) {
// Must be a child then
$child_id = $product_id;
// Try to Get list of sisters & brothers
$product_parent_id = $ps_product->get_field( $product_id, 'product_parent_id' ) ;
if( $product_parent_id != "0" ) {
$product_id = $product_parent_id;
// $q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id=$product_id AND product_parent_id<>0 AND product_publish='Y'" ;
//traveller:
$q = "SELECT p.product_id,p.product_name FROM #__{vm}_product p WHERE p.product_parent_id='$product
// Start row for this child
$html .= "<option value=\"" . $db->f( "product_id" ) . "\" $selected>" ;
///$html .= $db->f( "product_name" ) ." - " ;
$q="select door_color, door_type from #__{vm}_product_type_1 where product_id=".$db->f( "product_id" );
$db_sku->setQuery($q);
$db_sku->query();
$db_sku->next_record();
$html .=$db_sku->f( "door_color" ).", ".$db_sku->f( "door_type" );
/*
// For each child get attribute values by looping through attribute list
$q = "SELECT product_id, attribute_name FROM #__{vm}_product_attribute_sku " ;
$q .= "WHERE product_id='$product_id' ORDER BY attribute_list ASC" ;
$db_sku->setQuery( $q ) ;
$db_sku->query() ;
while( $db_sku->next_record() ) {
$q = "SELECT attribute_name, attribute_value, product_id " ;
$q .= "FROM #__{vm}_product_attribute WHERE " ;
$q .= "product_id='" . $db->f( "product_id" ) . "' AND " ;
$q .= "attribute_name='" . $db_sku->f( "attribute_name" ) . "'" ;
$db_item->setQuery( $q ) ;
$db_item->query() ;
while( $db_item->next_record() ) {
//$html .= $db_item->f( "attribute_name" ) . " " ;
$html .= $db_item->f( "attribute_value" ) ;
if( ! $db_sku->is_last_record() )
$html .= '; ' ;
}
}
*/
///////$html.="--".$db->f( "product_id" );
// Attributes for this item are done.
// Now get item price
if( $_SESSION['auth']['show_prices'] && _SHOW_PRICES ) {
$price = $ps_product->get_adjusted_attribute_price( $db->f( "product_id" ) ) ;
$price["product_price"] = $GLOBALS['CURRENCY']->convert( $price["product_price"], $price["product_currency"] ) ;
if( $_SESSION["auth"]["
show_price_including_tax"] == 1 ) {
$tax_rate = 1 + $ps_product->get_product_taxrate( $db->f( "product_id" ) ) ;
$price['product_price'] *= $tax_rate ;
}
$html .= ' - ' . $CURRENCY_DISPLAY->getFullValue( $price["product_price"] ) ;
}
$html .= "</option>\n" ;
}
$html .= "</select>\n" ;
$tpl->set( "drop_down", $html ) ;
} else {
$html = "<input type=\"hidden\" name=\"product_id\" value=\"$product_id\" />\n" ;
$html .= "<input type=\"hidden\" name=\"prod_id[]\" value=\"$product_id\" />\n" ;
$tpl->set( "drop_down", $html ) ;
}
$html = $tpl->fetch( 'product_details/includes/addtocart_drop.tpl.php' ) ;
return array( $html , "drop" ) ;
}
/**
* Lists all child/sister products of the given product
*
* @param int $product_id
* @return string HTML code with Items, attributes & price
*/
function list_attribute_drop_multi( $product_id, $cls_suffix ) {
global $VM_LANG, $CURRENCY_DISPLAY, $mm
_action_url, $sess ;
require_once (CLASSPATH . 'ps_product.php') ;
$ps_product = new ps_product( ) ;
$Itemid = $sess->getShopItemid() ;
$category_id = vmGet( $_REQUEST, 'category_id', "" ) ;
$db = new ps_DB( ) ;
$db_sku = new ps_DB( ) ;
$db_item = new ps_DB( ) ;
$tpl = new $GLOBALS['VM_THEMECLASS']( ) ;
$tpl->set( "cls_suffix", $cls_suffix ) ;
$tpl->set( "product_id", $product_id ) ;
// Set Advanced Attributes
$tpl->set( "advanced_attribute", $this->list_advanced_attribute( $product_id, $db->f( "product_id" ) ) ) ;
$tpl->set( "custom_attribute", $this->list_custom_attribute( $product_id, $db->f( "product_id" ) ) ) ;
// Get list of children
$q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y'" ;
$db->setQuery( $q ) ;
$db->query() ;
if( $db->num_rows() < 1 ) {
// Try to Get list of sisters & brothers
$q = "SELECT product_parent_id FROM #__{vm}_product WHERE product_id='$product_id'" ;
$db->setQuery( $q )
Образовательная автономная некоммерческая организация
высшего образования