PHP.SU

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

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

> Найдено сообщений: 1
sashka304 Отправлено: 27 Июля, 2008 - 13:55:35 • Тема: покупательская корзина • Форум: Программирование на PHP

Ответов: 28
Просмотров: 6417
Добрый день!
Я дико извиняюсь что поднимаю старую тему. Иду по этим же стопам, пытаюсь написать простенькую реализацию магазина.
Суть такова: есть страничка с товарами ввиде таблицы:
название, цена,ссылка с надписью в "корзину"
Данные беру из бд Product
CODE (text):
скопировать код в буфер обмена
  1. <?
  2.         include 'connect.inc.php';     
  3.         // делаем sql запрос
  4.  
  5.         $query = "Select * from products";
  6.         // Запрашиваем
  7.         $result = mysql_query($query, $link);  
  8.  
  9.         mysql_close($link);
  10. ?>
  11. //рисую таблицу
  12. <table width="700" cellspacing="0" cellspacing="0" border="0">
  13.  
  14.         <!-- top -->
  15.         <tr>
  16.         <td width="130" height="30" class="title">
  17.         Название
  18.         </td>
  19.         <td width="74" height="30" class="title">
  20.         цена
  21.         </td>
  22.         <td width="74" height="30" class="title">
  23.         Заказать
  24.         </td>
  25. </tr>
  26.         <?             
  27.                
  28.                 while($rows = mysql_fetch_array($result, 1))
  29.                 {      
  30.                         printf("<tr>");
  31.                         printf("<td width=\"130\" height=\"20\" class=\"price1\">");
  32.                         printf($rows['name']);
  33.                         printf("</td>");
  34.                         printf("<td width=\"74\" height=\"20\" class=\"price\">");
  35.                         printf($rows['price']);
  36.                         printf("</td>");
  37.                         printf("<td width=\"74\" height=\"20\" class=\"price3\">");
  38.                         //присваеваем ids айди товара
  39.                         $i = $rows['id_products'];
  40.                         printf("<a href = \"into_cart.php?ids=$i\">в корзину</a>");
  41.                         printf("</td>");                               
  42.                        
  43.                         printf("</tr>");
  44.                                        
  45.                 }      
  46.         ?>
  47.        
  48.         </table>
  49.  

при нажатии сслки "в корзину" у меня выполняется переход в into_cart.php
здесь я прописал код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. if ( isset($_GET["ids"]) )
  5. {
  6.     $idp = $_GET["ids"];
  7.     include'connect.inc.php';
  8.     $r=mysql_query("select   name, cena from products where  id_products=".$idp);
  9.     if(!$r)
  10.         {
  11.                 exit (mysql_error());
  12.     }
  13.     list($provedeni,$rozmer,$cena)=mysql_fetch_row($r);
  14.     $cartinfo["name"]=$provedeni;
  15.     $cartinfo["cena"]=$cena;    
  16.     $cartinfo["quantity"]=1;
  17.     $_SESSION["cart"][$idp]=$cartinfo;
  18. }
  19.  
  20. if ( isset($_GET["update"] ))
  21.        
  22. {
  23.  
  24.     $ids = array_keys($_SESSION["cart"]);
  25.     foreach( $ids as $key )
  26.     {
  27.         if ( $_POST["quantity_".$key] > 1 )
  28.             $_SESSION["cart"][$key]["quantity"] = $_POST["quantity_".$key];
  29.         else
  30.             unset($_SESSION["cart"][$key]);
  31.     }
  32. }
  33.  
  34.  
  35.  
  36.  
  37.  $total = 0;
  38.  echo "<form name='cart' action='".$_SERVER["PHP_SELF"]."' method='GET'>";
  39.  echo "<table>";
  40.  foreach( $_SESSION["cart"] as $key => $value )
  41.  {
  42.  
  43.      $name = $value["name"];
  44.      $price = $value["cena"];      
  45.      $quantity = $value["quantity"];
  46.      $totalprice = $price*$quantity;
  47.        $total = $total + $totalprice;
  48.         echo "<tr>
  49.                   <td align='left' valign='top' title='names'><b>".$name."</b><br />".$header."</td>
  50.                   <td title='price' width='15%'>".$price."<span style='color:#990000;'> y.e.</span></td>
  51.                <td width='15%'><input type='text' value='".$quantity."' name='quantity_".$key."' style='background-color:#333333;color:white' size='3' /></td>
  52.                <td align='center'>".$totalprice."<span style='color:#990000;'> y.e.</span></td>
  53.                <td align='center'><a href='del_o.php?key=".$key."'><span style='font-size: 13px;'><b>Delete</b></span></a></td>
  54.           </tr>";
  55.  }
  56.  echo "</table>";
  57.  echo "<p >Itogo: ".$total." y.e</p>";
  58.  echo "<input type='submit' name='update' value='Обновить' />";
  59.  echo "</form>";
  60. ?>


при выполнени этого кода отображается табличка со списком товаров, при нажатии на "в корзину" происходит отображение файла into_cart. т.е видно название выбранного товара, его цена, тектбокс для ввода количества(по умолчанию 1). при попытке ввести новое количество и нажать на кнопку обновить получаю ошибку:
Цитата:

Notice: Undefined variable: _SESSION in z:\home\localhost\www\nat\html\into_cart.php on line 27
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

* Впишите в скрипты строчку:

Error_Reporting(E_ALL & ~E_NOTICE);

Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

php_value error_reporting 7

* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

[Денвер: показать возможную причину ошибки]
Warning: array_keys(): The first argument should be an array in z:\home\localhost\www\nat\html\into_cart.php on line 27

Warning: Invalid argument supplied for foreach() in z:\home\localhost\www\nat\html\into_cart.php on line 28

Warning: Invalid argument supplied for foreach() in z:\home\localhost\www\nat\html\into_cart.php on line 43

Itogo: 0 y.e

если прописать вначале
session_start();
то при нажатии "в корзину"
Цитата:


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at z:\home\localhost\www\nat\html\into_cart.php:1) in z:\home\localhost\www\nat\html\into_cart.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\nat\html\into_cart.php:1) in z:\home\localhost\www\nat\html\into_cart.php on line 3

а при нажатии "обновить"
Цитата:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\nat\html\into_cart.php:1) in z:\home\localhost\www\nat\html\into_cart.php on line 3

Notice: Undefined index: quantity_1 in z:\home\localhost\www\nat\html\into_cart.php on line 30
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

* Впишите в скрипты строчку:

Error_Reporting(E_ALL & ~E_NOTICE);

Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный), который подключается всеми остальными.
* Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:

php_value error_reporting 7

* Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ не является рекомендуемым и может привести к серьезным неудобствам при отладке!

Itogo: 0 y.e

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

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB