Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как мне добавить корзинку покупателя к фотогалерее?
 
 автор: aleksejtm   (11.10.2006 в 12:07)   письмо автору
 
 

Добрый день.

Нужна ваша помощь очень. Мне нужно сделать покупательскую корзину (заказ товаров). На вашем сайте я нашёл примеры, советы, как делать корзину или скачать готовые скрипты, но мне это не подходит...

Идея такая:

В очень просто классном учебнике 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 в 21:16)   письмо автору
 
   для: aleksejtm   (11.10.2006 в 12:07)
 

Ну так что? Кто-нибудь может помочь?

   
 
 автор: cheops   (11.10.2006 в 22:16)   письмо автору
 
   для: aleksejtm   (11.10.2006 в 12:07)
 

Хм.. корзина это другое Web-приложение, независимое от фотогалереии вы от неё что хотите? Вы продаёте изображения?

   
 
 автор: aleksejtm   (11.10.2006 в 23:14)   письмо автору
 
   для: cheops   (11.10.2006 в 22:16)
 

Да нет, просто по макету фотогалереи (уж очень хороший скрипт) хочу сделать корзину, вернее её добавить.
Как мне это сделать?

   
 
 автор: name   (12.10.2006 в 01:04)   письмо автору
2.2 Кб
 
   для: aleksejtm   (11.10.2006 в 23:14)
 

Пример кода.

   
 
 автор: aleksejtm   (12.10.2006 в 10:41)   письмо автору
 
   для: 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%>&nbsp;</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 (!
$ctgputerror("Ошибка при обращении к Фотогалерее");
  
// Если в таблице catalog присутствует хотя бы одна
  // группа фотографий - выводим их в таблице
  
if(mysql_num_rows($ctg)>0)
  {
    
// Выводим заголовок таблицы групп фотографий
    
echo "<tr class='tableheadercat'>
            <td align=center><p class=zagtable>Название группы фотографий</td>
            <td>&nbsp;</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%>&nbsp;</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>


Вот. А как сделать корзину?

   
 
 автор: cheops   (12.10.2006 в 12:34)   письмо автору
 
   для: aleksejtm   (12.10.2006 в 10:41)
 

Хм... у вас корзина как организуется - по сессии? Сначала следует реализовать саму корзину - выбор товара, сохранение его для текущего клиента, а потом уже реализовывать блок представления.

Зря такие здоровые листинги выкладываете не ввиде архива (это уменьшается количество желающих отвечать - каждый раз нужно грузить большую тему).

   
 
 автор: aleksejtm   (12.10.2006 в 14:04)   письмо автору
 
   для: 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;


А файлы у меня в самом начале прикреплены в архиве.

   
 
 автор: cheops   (12.10.2006 в 15:50)   письмо автору
 
   для: aleksejtm   (12.10.2006 в 14:04)
 

Как же можно присоединить фотогалерею к пустому месту? Сначала нужно разработать корзину.

   
 
 автор: aleksejtm   (12.10.2006 в 16:06)   письмо автору
 
   для: cheops   (12.10.2006 в 15:50)
 

Ну я и хочу, чтобы мне помогли это сделать... Ведь это возможно.

   
 
 автор: name   (12.10.2006 в 19:10)   письмо автору
 
   для: aleksejtm   (12.10.2006 в 16:06)
 

Я же прикрепил файл - 2.2 кб. Смотри вверху (пример реализации покупательской корзины).

   
 
 автор: aleksejtm   (14.10.2006 в 08:45)   письмо автору
 
   для: 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 в 20:27)   письмо автору
 
   для: aleksejtm   (14.10.2006 в 08:45)
 

???

   
 
 автор: name   (15.10.2006 в 22:27)   письмо автору
 
   для: 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();
    }
?>

   
 
 автор: aleksejtm   (16.10.2006 в 11:11)   письмо автору
 
   для: name   (15.10.2006 в 22:27)
 

Попробую.

   
 
 автор: aleksejtm   (23.10.2006 в 14:11)   письмо автору
 
   для: aleksejtm   (16.10.2006 в 11:11)
 

У меня так и не получилось к фотогалерее добавить или присоединить электронную корзину, к сожалению. Да и особенно никто и не старался толком мне помочь это сделать...
А идея сама к имеющейся фотогалерее сделать корзину имеет место быть реализованной!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования