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]   

> Описание: Помогите с добавлением данных в корхину.
h4046097
Отправлено: 28 Октября, 2016 - 18:56:45
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2016  


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




Доброго времени суток всем! Помогите с выводом передачей переменных с одной страницы на другую. Делаю корзину товаров. Сделал вывод товаров из базы, а кнопку купить не могу написать.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. //Это вынимаю из базы
  3. function get_products($ids = false){
  4. global $connection;
  5. if($ids){
  6. $query = "SELECT * FROM products WHERE parent IN($ids) ORDER BY title";
  7. }else{
  8. $query = "SELECT * FROM products ORDER BY title";
  9. }
  10. $res = mysqli_query($connection, $query);
  11. $products = array();
  12. while($row = mysqli_fetch_assoc($res)){
  13. $products[] = $row;
  14. }
  15. return $products;
  16. }
  17.  
  18. //здесь добавляю в сессию данные о товаре
  19. function addtocart($product_id, $product_price, $product_title)
  20. {
  21. $_SESSION['product_id'] = $product_id;
  22. $_SESSION['product_price'] = $product_price;
  23. $_SESSION['product_title'] = $product_title;
  24. }
  25.  
  26. //здесь вывод товаров на главную
  27. <?php if($products): ?>
  28. <?php foreach($products as $product): ?>
  29.  
  30. <a class="name" ><?php echo $product['id'];?></a><br>
  31. <a class="name"> <?php echo $product['title']; ?></a><br>
  32. <a class="cost">Цена:<?php echo $product['price']; ?>р.</a><br>
  33.  
  34. //здесь делаю кнопку В КОРЗИНУ и отправляю в cart.пхп
  35. <form method="post" action="cart.php">
  36. <label>
  37. <input type="hidden" name="product_id" value="<?php $product['id']?>" />
  38. <input type="hidden" name="product_title" value="<?php $product['title']?>" />
  39. <input type="hidden" name="product_price" value="<?php $product['price']?>" />
  40. <input type="hidden" name="tocart" value="tocart" />
  41. <input type="submit" name="add" value= " В корзину" />
  42. </label>
  43. </form>
  44.  
  45. <?php endforeach; ?>
  46. <?php else: ?>
  47. <p>Здесь товаров нет!</p>
  48. <?php endif; ?>
  49.  
  50. //А вот так выглядит cart.пхп
  51. <?php
  52. ?>
  53.  
  54. <div id="welcome">
  55. Вы купили <?php echo $_SESSION['session_title'];?>, под номером <?php echo $_SESSION['session_id'];?>. Стоимостью <?php echo $_SESSION['session_id'];?>
  56. </div>
  57.  

Подскажите где ошибка или как по другому можно сделать. Спасибо

(Отредактировано автором: 28 Октября, 2016 - 19:49:21)

 
 Top
Строитель Модератор
Отправлено: 28 Октября, 2016 - 19:33:14
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




h4046097, отредактируйте свой пост, заключив свой код в пхп bb-тег. Иначе вряд ли кто-то вам что-то ответит...
 
 Top
h4046097
Отправлено: 28 Октября, 2016 - 19:48:09
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2016  


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




Строитель пишет:
h4046097, отредактируйте свой пост, заключив свой код в пхп bb-тег. Иначе вряд ли кто-то вам что-то ответит...


спасибо, сделал.
(Добавление)
Вот пробовал делать по другому. Но не работает, если заполняю массив из базы. А когда вручную заполняю - работает.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. include "wfcart.php";
  5.  
  6.  
  7. $cart =& $_SESSION['wfcart']; // выводим массив ф-ю cart в сессию
  8. if(!is_object($cart)) $cart = new wfCart(); // если нету ф-ии cart то создаем новую
  9.  
  10.  
  11. ?>
  12. <html>
  13. <head></head>
  14. <body>
  15.  
  16. <?
  17.  
  18. //Это работает если заполняю вручную.
  19. //$products = array();
  20. //$products[1] = array("id"=>1,"name"=>"Товар1","price"=>2.00);
  21. //$products[2] = array("id"=>2,"name"=>"Товар2","price"=>4.80);
  22. //$products[3] = array("id"=>3,"name"=>"Товар3","price"=>12.95);
  23.  
  24. // Но не работает когда заполняю из базы
  25. session_start();      // start the session
  26.  
  27. define('DB_HOST', 'хост мой');
  28. define('DB_USER', 'юзер');
  29. define('DB_PASS', 'пароль');
  30. define('DB_NAME', 'имя базы');
  31.  
  32. if (!mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
  33.    exit('Cannot connect to server');
  34. }
  35. if (!mysql_select_db(DB_NAME)) {
  36.    exit('Cannot select database');
  37. }
  38. mysql_query('SET NAMES utf8');
  39.  
  40. $sql_select = "SELECT * FROM products WHERE id='".$id."' AND name='".$name."' AND price='".$price."'";
  41. $result = mysql_query($sql_select);
  42. $products = mysql_fetch_array($result);
  43.  
  44. // проверяю какие данные войдут в ф-ю cart после нажатия на кнопку
  45. if($_POST['add']) {
  46.         $product = $products[$_POST['id']];
  47.         $cart->add_item($product['id'],$_POST['qty'],$product['price'],$product['name']);
  48. }
  49. if($_POST['remove']) {
  50.         $rid = intval($_POST['id']);
  51.         $cart->del_item($rid);
  52.  
  53. }
  54.  
  55. // Делаю кнопку добавления в корзину.
  56. echo "<table>";
  57. foreach($products as $p) {
  58.         echo "<tr><td><form method='post' action='этотфайл.php'>";
  59.         echo "<input type='hidden' name='id' value='".$p['id']."'/>";
  60.         echo "".$p['name'].' $'.number_format($p['price'],2)." ";
  61.         echo "<input type='text' name='qty' size='5' value='1'><input type='submit' value='Добавить в корзину' name='add'>";
  62.         echo "</form></td></tr>";
  63. }
  64. echo "</table>";
  65.  
  66.  
  67. if($cart->itemcount > 0) {
  68.         foreach($cart->get_contents() as $item) {
  69.                 echo "<br />Корзина:<br/>";
  70.                 echo "ID товара :".$item['id']."<br/>";
  71.                 echo "Колличество:".$item['qty']."<br/>";
  72.                 echo "Цена   :$".number_format($item['price'],2)."<br/>";
  73.                 echo "Информация    :".$item['info']."<br />";
  74.                 echo "Стоимость покупки :$".number_format($item['subtotal'],2)."<br />";
  75.                 echo "<form method=post><input type='hidden' name='id' value='".$item['id']."'/><input type='submit' name='remove' value='Удалить'/></form>";
  76.         }
  77.         echo "---------------------<br>";
  78.         echo "Всего: $".number_format($cart->total,2);
  79. } else {
  80.         echo "Корзина пуста";
  81. }
  82.  
  83. ?>
  84.  


А вот файл функций wfcart.php

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. class wfCart {
  5.         var $total = 0;
  6.         var $itemcount = 0;
  7.         var $items = array();
  8.        var $itemprices = array();
  9.         var $itemqtys = array();
  10.        var $iteminfo = array();
  11.  
  12.         function cart() {} // задаем функцию
  13.  
  14.         function get_contents()
  15.         {  
  16.                 $items = array();
  17.                 foreach($this->items as $tmp_item)
  18.                 {
  19.                         $item = FALSE;
  20.  
  21.                         $item['id'] = $tmp_item;
  22.                        $item['qty'] = $this->itemqtys[$tmp_item];
  23.                         $item['price'] = $this->itemprices[$tmp_item];
  24.                         $item['info'] = $this->iteminfo[$tmp_item];
  25.                         $item['subtotal'] = $item['qty'] * $item['price'];
  26.                        $items[] = $item;
  27.                 }
  28.                 return $items;
  29.         }
  30.  
  31.  
  32.         function add_item($itemid,$qty,$price = FALSE, $info = FALSE)
  33.         { // заполняем add_item
  34.                if(!$price)
  35.                 {
  36.                         $price = wf_get_price($itemid,$qty);
  37.                 }
  38.  
  39.                if(!$info)
  40.                 {
  41.                        $info = wf_get_info($itemid);
  42.                 }
  43.  
  44.                 if($this->itemqtys[$itemid] > 0)
  45.                { // если товар уже есть то повышаем кол-во товара
  46.                  
  47.                         $this->itemqtys[$itemid] = $qty + $this->itemqtys[$itemid];
  48.                         $this->_update_total();
  49.                 } else {
  50.                         $this->items[]=$itemid;
  51.                         $this->itemqtys[$itemid] = $qty;
  52.                         $this->itemprices[$itemid] = $price;
  53.                         $this->iteminfo[$itemid] = $info;
  54.                 }
  55.                 $this->_update_total();
  56.         }
  57.  
  58.  
  59.         function edit_item($itemid,$qty)
  60.         { // меняем кол-во товара
  61.  
  62.                 if($qty < 1) {
  63.                         $this->del_item($itemid);
  64.                 } else {
  65.                         $this->itemqtys[$itemid] = $qty;
  66.                 }
  67.                 $this->_update_total();
  68.         }
  69.  
  70.  
  71.         function del_item($itemid)
  72.         { // удаляем товар
  73.                 $ti = array();
  74.                 $this->itemqtys[$itemid] = 0;
  75.                 foreach($this->items as $item)
  76.                 {
  77.                         if($item != $itemid)
  78.                         {
  79.                                 $ti[] = $item;
  80.                         }
  81.                 }
  82.                 $this->items = $ti;
  83.                 $this->_update_total();
  84.         }
  85.  
  86.  
  87.        function empty_cart()
  88.         { // чистим (обнуляем товары)
  89.                $this->total = 0;
  90.                 $this->itemcount = 0;
  91.                 $this->items = array();
  92.                $this->itemprices = array();
  93.                 $this->itemqtys = array();
  94.                $this->iteminfo = array();
  95.         }
  96.  
  97.  
  98.         function _update_total()
  99.         { // обновляем корзину
  100.                 $this->itemcount = 0;
  101.                 $this->total = 0;
  102.                if(sizeof($this->items > 0))
  103.                 {
  104.                        foreach($this->items as $item) {
  105.                                $this->total = $this->total + ($this->itemprices[$item] * $this->itemqtys[$item]);
  106.                                 $this->itemcount++;
  107.                         }
  108.                 }
  109.         }
  110.  
  111. }
  112. ?>
  113.  
  114.  



Закоментил все для лучшего понимания проблемы. Помогите разобраться, вроде правильно делаю. Но не выходит Растерялся
 
 Top
Строитель Модератор
Отправлено: 28 Октября, 2016 - 20:21:18
Post Id



Участник


Покинул форум
Сообщений всего: 1581
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




h4046097 пишет:
Вот пробовал делать по другому. Но не работает, если заполняю массив из базы. А когда вручную заполняю - работает.
Так посмотрите, что вы получаете из базы.
 
 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