|
|
|
| Уважаемые програмисты. Помогите пожалуйста найти скрипт ( самый простенький ) корзины покупателя.
Сколько не искал в инете, толкового ничего не нашёл.
Мне для магазина http:\\doorshome.ru
Магазин делал сам с нуля, а вот с корзинкой ну никак не получается.
Есть книга." ТРЮКИ PHP " пробовал по ней, но там какая то ерунда получается.
Заранее БОЛЬШОЕ СПАСИБО! | |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 12:38)
| | И какой вы скрипт хотите? Корзину можно сделать по разному, и способ добавления товара может быть разный. | |
|
|
|
|
|
|
|
для: sim5
(14.11.2008 в 12:40)
| | В принципе нужно чтобы в ней отображалось какой товар и общая сумма.
А вообще, чем проще тем лучше. | |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 12:46)
| | Единственное, что товар находится в БАЗЕ в разных таблицах. То есть для каждого товара своя таблица. А корзина должна показывать общую сумму. То есть получается вытаскивать данные из разных таблиц. | |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 12:52)
| | Для каждого товара своя таблица - это накладно и крайне неудобно. Товарам хватит и одной таблицы, если расширить их по свойствам, может и вторая потребоваться, но связанная по первой.
Просто, это еще не означает удобство для пользователя. То о чем вы говорите, это только лишь динамическая часть корзины - краткая информация для покупателя. Пример такой корзины, и расширенной, на сессии можно посмотреть здесь. | |
|
|
|
|
|
|
|
для: sim5
(14.11.2008 в 13:13)
| | По большому счету, сколько покупательских корзин я не встречал в магазинах, все равно всё сходится к заполнению форм ручками самих покупателей. А корзина лишь показывает сколько и чего на данный момент находится в заказе.
И можно ещё вопрос.
Если я скину обработчики КОРЗИНЫ ПОКУПАТЕЛЯ ( я их писал с учебника упомянутого выше ) можно их будет проверить, почему они не работают. | |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 13:37)
| | Что значит ручками? Если у ваших товаров приличная цена, навряд ли кто-то будет покупать их пачками - достаточно щелкать по ссылке, товар будет добавляться автоматом в корзину в количестве 1 шт.. Если же товары не дороги, то добавление по одному, это не удобство для пользователя, так как это (без специальных мер) требует перезагрузки страницы. Значит лучше сделать возможность выбора товара на странице по несколько штук, без ее перезагрузки, а тут хочешь не хочешь, но цифирку покупателю придется вводить в поле.
Покупатель должен иметь возможность редактировать свою корзину, и делать это он будет естественно ручками. Или вы хотите чудо корзину?
Что значит скину? Покажите свой код корзины? Показывайте, на то и форум. | |
|
|
|
|
|
|
|
для: sim5
(14.11.2008 в 14:44)
| | Я видимо не правильно всё объяснил..........не нужно так критически относиться...
Я имел ввиду, что да......покупатель добавляет товар в корзину.......ему показывается цена товара в самой корзине., но ,...потом нажимая на кнопку " ЗАКАЗАТЬ"....покупатель всё равно попадает на заполнение САМОЙ ОБЫЧНОЙ ФОРМЫ. Вот что я имел ввиду..Но это не главное.такая форма заказа есть у меня в магазине.
Я просто хочу сделать КОРЗИНУ ПОКУПАТЕЛЯ, и чтобы в ней отражалась текущая цена . Вот и всё. :)
Вот пример корзины из учебника PHP Трюки. Но у меня выдаёт Сервер ошибки.
1.Сохраните исходный код в файл с именем index. php.
Пример 6.47. Страница с товарами
<?php
require_once( "dblib.php" );
session_start( );
$products = get_products( );
?>
<html>
<head>
<title>My Products</title>
</head>
<style type="text/css">
hi { border-bottom: 1px solid black; font-size: medium; margin-bottom: 10px; }
</style>
<script>
function buy( prod_id )
{
document.getElementById( 'prod_id' ).value = prod_id;
document.getElementById( 'buyform' ).submit( );
return null;
}
</script>
<body>
<form id="buyform" action="add.php" method="post">
<input type="hidden" name="prod_id" id="prod_id" value="" />
</form>
<table width="600" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="70%" valign="top">
<h1>Products</h1>
<table width="100%">
<?php foreach( $products as $product ) { ?>
<tr>
<td width="70%"><?php echo( $product['name'] ); ?></td>
<td width="15%" align="right">$<?php echo( $product['price'] ); ?></td>
<td width-"15%" align="center"><a href="javascript:buy( <?php echo(
$product['id'] ); ?> );">buy</a>
</tr>
<?php } ?>
</table>
</td>
<td width="30%" valign="top">
<h1>Shopping cart</h1>
<?php
if( isset( $_SESSION['cart'] ) ) {
?>
<!-- CART : <?php echo( join( ",", array_keys( $_SESSION['cart'] )));?> -->
«table width="100%" cellspacing="0" cellpadding="5">
<?php
foreach( array_keys( $_SESSION['cart'] ) as $product ) {
$info = product info( $product );
?>
<tr><td>
<?php echo( $info['name' ] ); ?>
</td></tr>
<?php } ?>
<tr><td aligh="center">
<a href="checkout.php">Checkout</a>
</td></tr>
</table>
<?php
}
?>
</td>
</tr>
</table>
</body>
</html>
|
2.Сохраните исходный код в файл с именем shopcart.sql.
Пример 6.45. Схема базы данных для корзины
DROP TABLE IF EXISTS product;
CREATE TABLE product (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name TEXT,
price FLOAT,
PRIMARY KEY( id )
);
INSERT INTO product VALUES ( 0, "Code Generation in Action", 49.99 );
INSERT INTO product VALUES ( 0. "Podcasting Hacks", 29.99 );
INSERT INTO product VALUES ( 0. "PHP Hacks", 29.99 );
|
3.Сохраните исходный код в файл с именем add. php.
Сценарий, добавляющий товар в корзину
<?рhр
session start( );
if ( !isset( $_SESSIONS['cart'] ) )
$_SESSION['cart'] - array( );
$_SESSION['cart'][$_POST['prod_id']] = 1;
header( "location: index.php" );
?>
|
4. Исходный код сохраните в файл с именем checkout. php.
Страница, предназначенная для проверки
<?рhр
require_once( "dblib.php" );
session_start( );
?>
<html>
<title>Your Cart</title>
<script language="Javascript">
function submit_delete( )
{
document.getElementById( "delform" ).submit( );
return null;
}
</script>
<style type="text/css">
hi { border-bottom: 1px solid black; font-size: medium; margin-bottom: 10рх; }
</style>
</head>
<body>
<?php
if ( isset( $_SESSIONS['cart'] ) && count( $_SESSION['cart'] ) > 0 ) {
?>
<!-- CART : <?php echo( join( '.', array_keys( $_SESSION['cart'] )));?> -->
<form id="delform" action="delete.php" method="post">
<table width="600">
<tr>
<th width="3%"></th>
<th width="77%">Product</th>
<th width="20%">Price</th>
</tr>
<?php
foreach( array_keys( $_SESSION['cart'] ) as $product )
{
$prod - product_info( $product );
?>
<tr>
<td><input type="checkbox" name="ids[]" value="<?php echo( $product ); ?>" />
</td>
<td><?php'echo( $prod['name'] ); ?></td>
<td align="right"><?php echo( $prod['price'] ); ?></td>
</tr>
<?php } ?>
<tr>
<td></td>
<td align="center"><a href="javascript:submit_delete( )">Delete checked items</a>
<a href="index.php">Return to store</a>
<a href="buy.php">Buy these items</a>
</tr>
</table>
</form>
<?php } else { ?>
You should go and <a href="index.php">buy some stuff</a>.
<?php } ?>
</body>
</html>
|
5.Библиотека для работы с базой данных
Сохранить с именем dblib.php
<?php
require_once( "DB.php" );
$dsn - 'mysql://root:password@localhost/shopcart';
$db =& DB::Connect( $dsn, array( ) );
if (PEAR::isError($db)) { die($db->getMessage( )); }
function get_db( ) { global $db; return $db; }
function get_products( )
{
global $db;
$res = $db->query( "SELECT * FROM product", array( ) );
$out = array( );
if ( $res != null )
while( $res->fetchInto( $row, DB_FETCHMODE_ASSOC ) ) { $tout []= $row; }
return $out;
}
function product_info( $id )
{
global $db;
$res = $db->query( "SELECT * FROM product WHERE id=?",
array( $id ) );
if ( $res != null )
{
$res->fetchInto( $row, DB_FETCHMODE_ASSOC );
return $row;
}
return null;
}
?>
|
6. Сохраните исходный код в файл с именем delete.php.
Сценарий, удаляющий товар из корзины
<?php
session_start( );
foreach( $_P0ST['ids'] as $did )
unset( $_SESSION['cart'][$did] );
header( "location: checkout.php" );
?>
|
| |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 16:19)
| | Прежде всего я не могу понять что это за файл "DB.php" . | |
|
|
|
|
|
|
|
для: demodesign
(14.11.2008 в 16:19)
| | DB.php - судя по коду, это класс для работы с базой данных. Если у вас для добавления товара в корзину появляется форма, то это плохо. Форма будет, но она "скрытая" и, если добавление по одному товару, то это просто ссылка может быть (без формы), если можно на одной странице вибирать по несколько товаров, и разного количества, то это форма. И выбирают товары не из корзины, а со страницы описания товара/товаров. А вот оформление формы, так это уже тогда, когда оформляется сам заказ - ФИО, адрес, и прочее, сами же товары (информациия о выбранных) у вас уже на сервере. Как только вы приняли оформление заказа, корзина покупателя переписывается в базу - в таблицу заказов.
Вот примерно так, если по разумному.
<script>
function buy( prod_id )
{
document.getElementById( 'prod_id' ).value = prod_id;
document.getElementById( 'buyform' ).submit( );
return null;
}
</script>
<body>
<form id="buyform" action="add.php" method="post">
<input type="hidden" name="prod_id" id="prod_id" value="" />
</form>
И к чему такое? Я бы выкинул все это к чертовой матери, сделал бы гораздо проще. Совсем не надо тут JS, это лишняя неоправданная надстройка в данном случае, ничего полезного не делающая.
Если у вас проблемы с подключением к базе, то либо код не верен, либо чего-то не хватает, либо у вас база не создана и т.п.. Надо приводить сообщения об ошибках получаемых вами, и ту часть кода, которая их вызывает. Запускать у себя весь этот код для проверки, без создания базы, навряд ли кто станет. | |
|
|
|
|
автор: Anhoor (25.05.2011 в 02:46) |
|
|
для: demodesign
(14.11.2008 в 16:19)
| | В коде есть ошибки !!например должно быть session_start а у вас в коде есть без нижнего подчеркивания , также и product_info
это то что я бегом глядя заметил | |
|
|
|
|
|
|
|
для: Anhoor
(25.05.2011 в 02:46)
| | тема трехлетней давности :) | |
|
|
|