Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пользовательская корзина

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
supstarchik
Отправлено: 31 Мая, 2009 - 17:28:32
Post Id



Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Прошу помощи в написании пользовательской корзины.
8го июня диплом защищать и сказали, что обязательно должна быть пользовательская корзина.

Как я понимаю лучше всего её делать через массив $_SESSION но я не понимаю как он работает и как с ним работать.

У меня возникают вопросы как:
- Добавить товар в корзину.
- Изменить количество товара в корзине.
- Удалить товар из корзины.
- Добавить ещё товар, что бы первый товар не потерялся.

Помогите плиз) а то дипломку не защищу.
 
 Top
EuGen Администратор
Отправлено: 31 Мая, 2009 - 17:34:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Открою страшную тайну - если Вы допущены до защиты, то 100% защитите.
По теме - $_SESSION есть обычный суперглобальный массив. И работать с ним надо так же, как и с обычными массивами.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
supstarchik
Отправлено: 01 Июня, 2009 - 21:39:08
Post Id



Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




вроде бы я осилил создание корзины/
Но не могу придумать как сделать подсчет стоимость товара и общую стоимость?

Вот мой скрипт по корзине, подскажите ошибки

Скрипт главной страницы
PHP:
скопировать код в буфер обмена
  1.  
  2.         include('../admin/config.php');
  3.         if (isset($_GET['delete_goods'])) {    
  4.                         $id_goods_cart = $_GET['delete_goods'];
  5.                         $result = mysql_query("DELETE FROM shopping WHERE id='$id_goods_cart'");
  6.                         }
  7.  


Скрипт корзины
PHP:
скопировать код в буфер обмена
  1.  
  2. <?      $s_name = $_REQUEST[session_name()];
  3.         $get_id = $_GET['id'];
  4. //
  5. // ДОБАВЛЕНИЕ В БД ПОЛЬЗОВАТЕЛЯ И ЕГО ТОВАР
  6. //
  7.         if (isset($_GET['id']) == TRUE){
  8.                 $result = mysql_query("SELECT * FROM shopping WHERE nsession='$s_name'");
  9.                 $arr = mysql_fetch_array($result);
  10.                
  11.                         if ($s_name != $arr['nsession'] OR $get_id != $arr['id_goods']){               
  12.                                 $result = mysql_query ("INSERT INTO shopping (nsession,id_goods) VALUES ('$s_name','$get_id')");}}
  13. //
  14. // ВЫВОД ВЫБРОННОГО ТОВАРА
  15. //
  16.                 $r = mysql_query("SELECT * FROM shopping WHERE nsession='$s_name'");
  17.                 $a = mysql_fetch_array($r);
  18.                
  19.         if ($s_name == $a['nsession']){
  20.                 echo "<tr><td colspan=\"8\"><div class=\"goods_h\">Корзина</div></td></tr>
  21.                           <tr><td class=\"light\"><div valign=\"top\" align=\"center\">Фотография</div></td>
  22.                                   <td class=\"light\"><div valign=\"top\" align=\"center\">Название товара</div></td>
  23.                                   <td class=\"light\"><div valign=\"top\" align=\"center\">Цена</div></td>
  24.                                   <td class=\"light\"><div valign=\"top\" align=\"center\">Кол-во</div></td>
  25.                                   <td class=\"light\"><div valign=\"top\" align=\"center\">Итого</div></td>
  26.                                   <td class=\"light\"><div valign=\"top\" align=\"center\">Удалить товар</div></td></tr>
  27.                                   ";
  28.             $id_goods_p = mysql_query("SELECT * FROM shopping WHERE nsession='$s_name' ORDER BY id");
  29.  
  30.             while ($goods_arr = mysql_fetch_array($id_goods_p)){
  31.                 $goods_arr_id = $goods_arr['id_goods'];
  32.                 $res_goods_1 = mysql_query("SELECT * FROM tovar WHERE id=$goods_arr_id");      
  33.                 $res_goods = mysql_fetch_array($res_goods_1);
  34.                 $fin_price_id = $res_goods['price'] * $goods_arr['number'];
  35. echo "
  36.                 <tr><td><div valign=\"top\" align=\"center\"><a href=\"".$res_goods['photos']."\" onclick=\"window.open('".$res_goods['photos']."','_blank','width=400,height=400, scrollbars=yes, left=450,top=250'); return false\"><img src=\"".$res_goods['photos']."\" border=\"0\" width=\"60\" height=\"69\"></div></td>
  37.                   <td><div valign=\"top\"><a href=\"goods.php?id=".$res_goods['id']."\" class=\"cart_url\"> ".$res_goods['name']."</a></div></td>
  38.                   <td><div valign=\"top\">".$res_goods['price']." руб.</div></td>
  39.                   <td><div valign=\"top\" align=\"center\"><input type=\"text\" name=\"number\" size=\"4\" maxlenght=\"4\" value=\"".$goods_arr['number']."\"></div></td>
  40.                   <td><div valign=\"top\" align=\"center\">".$fin_price_id." руб.</div></td>
  41.                   <td><div valign=\"top\" align=\"center\"><a href=\"index.php?delete_goods=".$goods_arr['id']."&cart=1\"><img src=\"../index/delete.png\" border=\"0\"></a></div></td></tr>
  42.  
  43.                  ";}
  44. echo "  <tr><td colspan=\"5\"><div valign=\"top\" align=\"right\"> Вы выбрали товара на сумму: ".$fin_price." руб.</div></td></tr>
  45.         <tr><td colspan=\"6\"><div valign=\"top\" align=\"center\"><br><input type=\"submit\" name=\"add_cart_goods\" value=\"Оформить покупку\"></form></div></form></td></tr>";                
  46.                  
  47.                  }
  48.                  
  49.                  
  50.                 else {
  51.                         echo "<tr><td colspan=\"6\"><div class=\"goods_h\">Корзина</div></td></tr>";
  52.                         echo "<tr><td colspan=\"6\"><br>Товара в корзине нет</td></tr>";}                      
  53. ?>
  54.  

ps Может кто нибудь знает как можно исправить ошибку с SQL инъекцией?

(Отредактировано автором: 01 Июня, 2009 - 21:39:31)

 
 Top
scray
Отправлено: 02 Июня, 2009 - 20:08:00
Post Id


Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Апр. 2009  


Помог: 0 раз(а)




supstarchik,htmlspecialchar() , mysql_real_escape ...
 
 Top
Neirol
Отправлено: 06 Июня, 2009 - 10:59:41
Post Id



Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Июнь 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




Я бы поступил намного проще.
В $_SESSION был бы элемент goods ($_SESSION['goods']), который содержал бы в себе вложенные элементы, т.е. сами товары, которую опять таки в свою очередь содержали в себе два параметра - id и кол-во положенных в корзину товаров.
К примеру я заказал 3 футбольных мяча (id 1) и 2 пары футбольных перчаток (id 2), session будет выглядить так:
$_SESSION['goods'][0] - первый заказанный товар
$_SESSION['goods'][0][0] - id товара, т.е. 1
$_SESSOIN['goods'][0][1] - кол-во заказанного товара, т.е. 3
Аналогично с перчатками
$_SESSION['goods'][1][0] = 2
$_SESSION['goods'][1][1] = 2
Когда мы добавляем товар в корзину, считается кол-во элементов в массиве $_SESSION['goods'], сейчас у нас их там два, но т.к. счет в массивах идет с нуля, мы как раз получаем следующую свободную ячейку $_SESSION['goods'][2], куда мы запишем id товара и кол-во добавленного товара, например через $_POST.
Если пользователю нужно будет выйти, а нам сохранить его покупки в корзине, т.е. будет использовать функция session_destroy(), то естественно все данные потеряются, поэтому только после выхода пользователя придется записывать данные в БД, и стартовый массив мы получим после обратного захода пользователя.
Думаю идея понятна и осуществить ее будет несложно.


-----
Рожденные ползать - везде пролезет.
 
 Top
supstarchik
Отправлено: 09 Июня, 2009 - 15:30:34
Post Id



Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Цитата:
Спасибо EuGen
Спасибо scray
Спасибо Neirol

Я понимаю, что мои познания в php ничтожно малы и прошу вас мне помочь написать непосредственно сам скрипт, что бы товар подсчитывался.

Я сделал так что ты товар записывался в бд каждый раз как его заносят в корзину
но я не знаю как сделать так что бы можно было делал пересчет товара и выводить нужную сумму.
Подсчет суммы можно сделать через внутреннею функцию(SUM), но для этого нужно данные занести в в бд и пересчитать.
Тогда встает вопрос как занести в бд n количество данных товара?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB