|
|
|
| Добрый день.
Нужна ваша помощь очень. Мне нужно сделать покупательскую корзину (заказ товаров). На вашем сайте я нашёл примеры, советы, как делать корзину или скачать готовые скрипты, но мне это не подходит...
Идея такая:
В очень просто классном учебнике PHP 5 Практика создания web-сайтов (глава 12, стр. 481-510) создана фотогалерея (код прикладываю). По каталогам разбиваютя фотографии. Это то, что мне и нужно. Каталоги - это думаю понятно, а в этих каталогах будут размещены товары (фото и описание):
CREATE TABLE photo (
id_photo int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
small tinytext NOT NULL,
big tinytext NOT NULL,
hide enum('show','hide') NOT NULL default 'show',
pos int(11) NOT NULL default '0',
id_catalog int(11) NOT NULL default '0',
PRIMARY KEY (id_photo)
) TYPE=MyISAM;
CREATE TABLE photocat (
id_catalog int(8) NOT NULL auto_increment,
name tinytext NOT NULL,
description tinytext NOT NULL,
pos smallint(3) NOT NULL default '0',
hide enum('show','hide') NOT NULL default 'show',
id_parent int(8) NOT NULL default '0',
PRIMARY KEY (id_catalog)
) TYPE=MyISAM;
Как мне ко всему этому добавить корзинку покупателя? Понимаю, что это не так просто сделать... Но может кто-нибудь может помочь: сделать покупательскую корзину (заказ товаров)? Обьясните суть, как это сделать? Или на примере кода... | |
|
|
|
|
|
|
|
для: aleksejtm
(11.10.2006 в 12:07)
| | Ну так что? Кто-нибудь может помочь? | |
|
|
|
|
|
|
|
для: aleksejtm
(11.10.2006 в 12:07)
| | Хм.. корзина это другое Web-приложение, независимое от фотогалереии вы от неё что хотите? Вы продаёте изображения? | |
|
|
|
|
|
|
|
для: cheops
(11.10.2006 в 22:16)
| | Да нет, просто по макету фотогалереи (уж очень хороший скрипт) хочу сделать корзину, вернее её добавить.
Как мне это сделать? | |
|
|
|
|
 2.2 Кб |
|
|
для: aleksejtm
(11.10.2006 в 23:14)
| | Пример кода. | |
|
|
|
|
|
|
|
для: name
(12.10.2006 в 01:04)
| | Да, мне нужен пример кода, как это сделать к фотогаларее.
Вот файлы, отвечающие за вывод:
файл index.php
<?php
$title = $titlepage = "Фотогалерея";
// Устанавливаем соединение с базой данных
require_once ("config.php");
// Выводим шапку страницы
//include "util/topadmin.php";
// Извлекаем из строки запроса параметр id_parent
$id_parent = $_GET['id_parent'];
if(empty($id_parent)) $id_parent = 0;
if(!preg_match("|^[\d]+$|",$id_parent) && !empty($id_parent)) exit();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $titlepage; ?></title>
<link rel="StyleSheet" type="text/css" href="util/admin.css">
<script language="" src="photo.js"></script></head>
<body leftmargin="0" marginheight="0" marginwidth="0" rightmargin="0" bottommargin="0" topmargin="0" >
<br><br><table width=100%><tr><td width=10%> </td><td>
<table border="0" width="100%">
<tr><td>
<table cellspacing="8" cellspacing="0" border=0><tr>
<tr>
<?php
// Если текущий каталог не является корневым,
// выводим ссылку для возврата в предыдущее меню
if ($id_parent != 0)
echo "<td ><p><a class=menu href=index.php?id_parent=0>Верхний уровень</a></p></td>";
?>
</tr></table>
<table class=bodytable border="1" cellpadding=5 cellspacing=0 bordercolorlight=gray bordercolordark=white>
<?
// Формируем и выполняем SQL-запрос, извлекающий
// список групп фотографий
$query = "SELECT photocat.id_catalog AS id_catalog,
photocat.name AS name,
COUNT(photo.id_photo) AS total
FROM photocat, photo
WHERE photo.id_catalog = photocat.id_catalog AND photocat.hide = 'show' AND photo.hide = 'show'
GROUP BY photocat.id_catalog";
$ctg = mysql_query($query);
if (!$ctg) puterror("Ошибка при обращении к Фотогалерее");
// Если в таблице catalog присутствует хотя бы одна
// группа фотографий - выводим их в таблице
if(mysql_num_rows($ctg)>0)
{
// Выводим заголовок таблицы групп фотографий
echo "<tr class='tableheadercat'>
<td align=center><p class=zagtable>Название группы фотографий</td>
<td> </td>
</tr>";
while($cat = mysql_fetch_array($ctg))
{
// Выводим список каталогов
echo "<tr>
<td><p><a href=index.php?id_parent=".$cat['id_catalog'].">".$cat['name']."</a></td>
<td><p>".$cat['total']."</td>
</tr>";
}
}
?>
</table>
</td></tr>
<tr><td>
<?php
// Выводим содержимое групп фотографий, если текущий каталог не является
// корневым
if ($id_parent != 0) include "photos.php";
?>
</td></tr></table>
</td><td width=10%> </td></tr></table>
</body>
</html>
|
файл photos.php
<?
// число фотографий в строке таблицы
$numphoto = 3;
?>
<table class=bodytable width="100%" border="1" cellpadding=5 cellspacing=0 bordercolorlight=gray bordercolordark=white>
<?php
// Выбираем из базы данных фотографии
if(!preg_match("|^[\d]+$|",$id_parent) && !empty($id_parent)) exit();
$query = "SELECT * FROM photo
WHERE id_catalog = $id_parent AND
hide = 'show'
ORDER BY pos";
$prt = mysql_query($query);
if(!$prt)
{
echo "error : ".mysql_error()."<br>";
echo $query;
puterror("Ошибка при обращении к блоку Фотогалерея");
}
// Если в текущей группе фотографии имеется хотя бы одна
// фотография - формируем таблицу с фотографиями
if(mysql_num_rows($prt) > 0)
{
// Вспомогательная переменная для вывода
// фотографий по 5 штуки в строке
$td == 0;
// Выводим заголовок таблицы
while($par = mysql_fetch_array($prt))
{
// Формируем переменную $image, несущую ответственность за вывод
// уменьшенного изображения, являющегося ссылкой на увеличенное
if(!empty($par['small']) &&
$par['small']!="-" &&
file_exists($par['small']))
{
$size = getimagesize($par['big']);
$image = "<a href=# onclick=\"show_img('".$par['big']."',".$size[0].",".$size[1]."); return false \" ><img src=".$par['small']." border=0 vspace=3></a>";
}
else $small = "Нет";
// Если значение временной переменной равно 0
// выводим тэг начала строки таблицы <tr>
if ($td == 0) echo "<tr>";
// Выводим фотографию
echo "<td><table border=0 width=100%><tr align=center>
<td><p><b>".$par['name']."</b></p></td></tr>
<tr align=center>
<td>$image</td>
</tr></table></td>";
// Увеличиваем значение временной переменной $td
$td++;
// Если временная переменная $td принимает значение
// равное 5, следовательно строка завершена, и необходимо
// вывести завершающий тэг </tr>, а значение самой
// переменной обнулить
if ($td == $numphoto)
{
echo "</tr>";
$td = 0;
}
}
}
?>
</table><br><br>
|
Вот. А как сделать корзину? | |
|
|
|
|
|
|
|
для: aleksejtm
(12.10.2006 в 10:41)
| | Хм... у вас корзина как организуется - по сессии? Сначала следует реализовать саму корзину - выбор товара, сохранение его для текущего клиента, а потом уже реализовывать блок представления.
Зря такие здоровые листинги выкладываете не ввиде архива (это уменьшается количество желающих отвечать - каждый раз нужно грузить большую тему). | |
|
|
|
|
|
|
|
для: cheops
(12.10.2006 в 12:34)
| | Корзины у меня нету пока совсем. Я и хочу получить ответ (решение), как мне к фотогалереи можно присоединить электронную корзину?
Вот 2 таблицы для вотогалереи:
CREATE TABLE photo (
id_photo int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
small tinytext NOT NULL,
big tinytext NOT NULL,
hide enum('show','hide') NOT NULL default 'show',
pos int(11) NOT NULL default '0',
id_catalog int(11) NOT NULL default '0',
PRIMARY KEY (id_photo)
) TYPE=MyISAM;
CREATE TABLE photocat (
id_catalog int(8) NOT NULL auto_increment,
name tinytext NOT NULL,
description tinytext NOT NULL,
pos smallint(3) NOT NULL default '0',
hide enum('show','hide') NOT NULL default 'show',
id_parent int(8) NOT NULL default '0',
PRIMARY KEY (id_catalog)
) TYPE=MyISAM;
|
А файлы у меня в самом начале прикреплены в архиве. | |
|
|
|
|
|
|
|
для: aleksejtm
(12.10.2006 в 14:04)
| | Как же можно присоединить фотогалерею к пустому месту? Сначала нужно разработать корзину. | |
|
|
|
|
|
|
|
для: cheops
(12.10.2006 в 15:50)
| | Ну я и хочу, чтобы мне помогли это сделать... Ведь это возможно. | |
|
|
|
|
|
|
|
для: aleksejtm
(12.10.2006 в 16:06)
| | Я же прикрепил файл - 2.2 кб. Смотри вверху (пример реализации покупательской корзины). | |
|
|
|
|
|
|
|
для: name
(12.10.2006 в 19:10)
| | А это пояснить можно:
$qty) { if (trim($_POST[$id]) == "") $_POST[$id] = 1;
if ($_POST[$id] == 0) unset($_SESSION['cart'][$id]);
else $_SESSION['cart'][$id] = $_POST[$id];
} $_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
} //если есть массив $_SESSION['cart']
if (isset($_SESSION['cart']) && array_count_values($_SESSION['cart'])) { $content = display_cart($_SESSION['cart']);
} else $content = "КорзинаВаша корзина пуста.";
//отображаем содержимое корзины на экран.
echo $content;
?>
|
Сам принцип... А для корзины не надо создавать отдельной, третьей таблицы? | |
|
|
|
|
|
|
|
для: aleksejtm
(14.10.2006 в 08:45)
| | ??? | |
|
|
|
|
|
|
|
для: aleksejtm
(14.10.2006 в 08:45)
| | На против каждого товара в корзине должно быть поле с его кол-вом.
<?php
$pole = "<input type=\"text\" name=\"$id\" value=\"$qty\" size=\"3\">";
/*где $id - ID товара, а $qty - его кол-во. Эти значения берем из массива $_SESSION['cart']*/
//если была нажата кнопка пересчитать корзину
if(isset($_POST['save']))
{
//пробегаем по массиву и смотрим:
foreach ($_SESSION['cart'] as $id => $qty)
{
/*если поле "кол-во товара" пустое, то присваеваем 1 (еще нужно сделать проверку
на допустимые символы, т. е. цифры)*/
if (trim($_POST[$id]) == "") $_POST[$id] = 1;
//если поле равно 0 удаляем товар из корзины
if ($_POST[$id] == 0) unset($_SESSION['cart'][$id]);
//или "сохраняем" новое значение для кол-ва
else $_SESSION['cart'][$id] = $_POST[$id];
}
//пересчитываем значения (стоимость и кол-во товара в корзине)
$_SESSION['total_price'] = calculate_price();
$_SESSION['items'] = calculate_items();
}
?>
|
| |
|
|
|
|
|
|
|
для: name
(15.10.2006 в 22:27)
| | Попробую. | |
|
|
|
|
|
|
|
для: aleksejtm
(16.10.2006 в 11:11)
| | У меня так и не получилось к фотогалерее добавить или присоединить электронную корзину, к сожалению. Да и особенно никто и не старался толком мне помочь это сделать...
А идея сама к имеющейся фотогалерее сделать корзину имеет место быть реализованной! | |
|
|
|