Ответов: 28 Просмотров: 6417
![](templates/InvisionExBB/im/spacer.gif) |
Добрый день!
Я дико извиняюсь что поднимаю старую тему. Иду по этим же стопам, пытаюсь написать простенькую реализацию магазина.
Суть такова: есть страничка с товарами ввиде таблицы:
название, цена,ссылка с надписью в "корзину"
Данные беру из бд Product
CODE ( text):
скопировать код в буфер обмена
<? include 'connect.inc.php'; // делаем sql запрос $query = "Select * from products"; // Запрашиваем $result = mysql_query($query, $link); mysql_close($link); ?> //рисую таблицу <table width="700" cellspacing="0" cellspacing="0" border="0"> <!-- top --> <tr> <td width="130" height="30" class="title"> Название </td> <td width="74" height="30" class="title"> цена </td> <td width="74" height="30" class="title"> Заказать </td> </tr> <? while($rows = mysql_fetch_array($result, 1)) { printf("<tr>"); printf("<td width=\"130\" height=\"20\" class=\"price1\">"); printf($rows['name']); printf("</td>"); printf("<td width=\"74\" height=\"20\" class=\"price\">"); printf($rows['price']); printf("</td>"); printf("<td width=\"74\" height=\"20\" class=\"price3\">"); //присваеваем ids айди товара $i = $rows['id_products']; printf("<a href = \"into_cart.php?ids=$i\">в корзину</a>"); printf("</td>"); printf("</tr>"); } ?> </table>
при нажатии сслки "в корзину" у меня выполняется переход в into_cart.php
здесь я прописал код:
CODE ( text):
скопировать код в буфер обмена
<? if ( isset($_GET["ids"]) ) { $idp = $_GET["ids"]; include'connect.inc.php'; $r=mysql_query("select name, cena from products where id_products=".$idp); if(!$r) { exit (mysql_error()); } list($provedeni,$rozmer,$cena)=mysql_fetch_row($r); $cartinfo["name"]=$provedeni; $cartinfo["cena"]=$cena; $cartinfo["quantity"]=1; $_SESSION["cart"][$idp]=$cartinfo; } if ( isset($_GET["update"] )) { $ids = array_keys($_SESSION["cart"]); foreach( $ids as $key ) { if ( $_POST["quantity_".$key] > 1 ) $_SESSION["cart"][$key]["quantity"] = $_POST["quantity_".$key]; else unset($_SESSION["cart"][$key]); } } $total = 0; echo "<form name='cart' action='".$_SERVER["PHP_SELF"]."' method='GET'>"; echo "<table>"; foreach( $_SESSION["cart"] as $key => $value ) { $name = $value["name"]; $price = $value["cena"]; $quantity = $value["quantity"]; $totalprice = $price*$quantity; $total = $total + $totalprice; echo "<tr> <td align='left' valign='top' title='names'><b>".$name."</b><br />".$header."</td> <td title='price' width='15%'>".$price."<span style='color:#990000;'> y.e.</span></td> <td width='15%'><input type='text' value='".$quantity."' name='quantity_".$key."' style='background-color:#333333;color:white' size='3' /></td> <td align='center'>".$totalprice."<span style='color:#990000;'> y.e.</span></td> <td align='center'><a href='del_o.php?key=".$key."'><span style='font-size: 13px;'><b>Delete</b></span></a></td> </tr>"; } echo "</table>"; echo "<p >Itogo: ".$total." y.e</p>"; echo "<input type='submit' name='update' value='Обновить' />"; echo "</form>"; ?>
при выполнени этого кода отображается табличка со списком товаров, при нажатии на "в корзину" происходит отображение файла 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
уже второй день ламаю голову но немогу понять, как мне сделать чтоб товары добавлялись в корзину, чтоб можно было вернутся к товарам и продолжить выбор, как сделать чтоб товар всетаки множился, сумировался...
несудите меня строго,я немогу понять как это все работает... ![Недовольство, огорчение Недовольство, огорчение](./im/emoticons/dry.gif) |