За последние 24 часа нас посетили 54399 программистов и 1777 роботов. Сейчас ищут 1023 программиста ...

Массивы и cookie

Тема в разделе "Прочие вопросы по PHP", создана пользователем Ksuha000, 30 янв 2014.

  1. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Здравствуйте! Хочу в интернет-магазине добавить возможность выбирать цвет и размер товара покупателю самостоятельно. Для этого я сделала chekboxы с выводом из базы данных имеющихся цветов и размеров, и по нажатию на chekbox в куку записывается выбранный параметр через javascript, потом он выводится в корзине и добавляется в бд. Если покупается один товар - то все отлично, а если покупается 2 и больше, то в корзину заносится последнее значение кук. То есть 1товар - был выбран красный цвет и 37 размер, а для второого - черный и 38, в корзину занесется для обоих товаров черный цвет и 38 размер. То есть получается перезаписывание значений, как избавится - не знаю. Помогите, пожалуйста.
    Скрипт по выбору размера:
    Код (Text):
    1.  
    2. <script>
    3. function setCookie (name, value, expires, path, domain, secure) {
    4.       document.cookie = name + "=" + escape(value) +
    5.         ((expires) ? "; expires=" + expires : "") +
    6.         ((path) ? "; path=" + path : "") +
    7.         ((domain) ? "; domain=" + domain : "") +
    8.         ((secure) ? "; secure" : "");
    9. }
    10. function onclickRadiosize() {
    11.   var nameRadio = document.getElementsByName('size');
    12.   for (var i = 0; i < nameRadio.length; i++) {
    13.     if (nameRadio[i].type === 'radio' && nameRadio[i].checked) {
    14.         rezultatRadio = nameRadio[i].value;      
    15.     }
    16.   }
    17.   document.getElementById('rezultatRadio').innerHTML = rezultatRadio;
    18.   setCookie("size",rezultatRadio,"","/","","");
    19. }
    20. </script>
    21. <div id="sizecolor">
    22. <form name="sizecolor" method="get" action="/">
    23. <output id="rezultatRadio"></output>
    24. <?php session_start();
    25.     $prod_id=$_SESSION["id"];
    26.     $size=("SELECT size FROM size WHERE prod_id = '$prod_id'");
    27.     $my = mysql_query($size);
    28.     while ($row = mysql_fetch_assoc($my))
    29.     {
    30.     if (++$k%2 == 1) {
    31.       ?>
    32.       <div id="row3">
    33.         <input type="radio" name="size" value="<?php echo $row['size'];?>" onclick="onclickRadiosize()">
    34.         <?php echo $row['size'];?></div> <?php }
    35.         else { ?>
    36.         <div id="row4"><input type="radio" name="size" value="<?php echo $row['size'];?>" onclick="onclickRadiosize()">
    37.         <?php echo $row['size'];?></div>
    38.         <?php
    39.     }
    40.     }
    41. ?>
    42. </form>
    43. </div>
    Скрипт страницы
    Код (Text):
    1.  
    2. <?php
    3. $_SESSION["drow"]=1;
    4. $_SESSION["korz"]=1;
    5. $email=$_SESSION['email'];
    6. include_once "inc.php";
    7. $id = (int) $_GET["prodid"];
    8. $cart = $_GET["cart"];
    9.  
    10.  
    11. if (!empty($_SESSION['email']) and !empty($_SESSION['password'])) {
    12. if(validid($id))
    13. {   $_SESSION["contrl"]=2;
    14.     $_SESSION["drow"]=2;
    15.     $sql = mysql_query("SELECT * FROM tovar WHERE id = ".sqlesc($id));
    16.     $r = mysql_fetch_assoc($sql);
    17.     $p = getprice($r["price"]);
    18.     $price = ($r["sale"] > 0 ? "<s>".$p." руб.</s> ".getprice($r["sale"])." руб." : $p." руб.");
    19.     $cartlink = ($_SESSION["cart"][$r["id"]] ? "Удалить" : "В корзину");
    20. $_SESSION["address"]=$r["address"];
    21. $_SESSION["apend"]=$r["apend"];
    22. $_SESSION["id"]=$r["id"];
    23.     require ("photo1.php");
    24.     $out = <<<EOD
    25.         <div id="rusname">{$r["rusname"]}</div>
    26.         <div id="vubor">Выберите желаемые цвет и размер:</div>
    27.         <div id="pric"><cena>Цена:</cena> {$price}</div>   
    28. EOD;
    29. $descr=<<<EOD
    30. <div id="descr">{$r["descr"]}</div>
    31.  <div id="shopping-cart"><button class="btn" type="submit" id="descr_{$r["id"]}" onclick="shopping({$r["id"]});">{$cartlink}</button></div>
    32. EOD;
    33. }} 
    34. else
    35. {
    36. if(validid($id))
    37. {   $_SESSION["contrl"]=2;
    38.     $_SESSION["drow"]=2;
    39.     $sql = mysql_query("SELECT * FROM tovar WHERE id = ".sqlesc($id));
    40.     $r = mysql_fetch_assoc($sql);
    41.     $p = getprice($r["price"]);
    42.     $price = ($r["sale"] > 0 ? "<s>".$p." руб.</s> ".getprice($r["sale"])." руб." : $p." руб.");
    43.     $_SESSION["address"]=$r["address"];
    44. $_SESSION["id"]=$r["id"];
    45.     require ("photo1.php");
    46.     $out = <<<EOD  
    47.         <div id="rusname">{$r["rusname"]}</div>
    48.         <div id="vubor">Выберите желаемые цвет и размер:</div>
    49.         <div id="pric"><cena>Цена:</cena> {$price}</div>   
    50. EOD;
    51. $descr=<<<EOD
    52. <div id="descr">{$r["descr"]}</div>
    53.  <div id="prov">
    54. Для покупки товара необходимо<a href="http://localhost/roma/vhod.php"> войти </a>  под своим email и паролем либо
    55. <a href="http://localhost/roma/register.php"> зарегистрироваться</a></div>
    56. EOD;
    57. }
    58. }
    59. if($cart)
    60. {   $_SESSION["contrl"]=2;
    61.     $_SESSION["korz"]=0;
    62.     $_SESSION["drow"]=2;
    63.     if(count($_SESSION["cart"]) == 0) {
    64.         $out =<<<EOD
    65.         <h1>Корзина</h1><p>Ваша корзина пуста</p>
    66. EOD;
    67.         }
    68.     else
    69.     {    $_SESSION["contrl"]=2;
    70.     $_SESSION["drow"]=2;
    71.     $_SESSION["korz"]=0;
    72.         $out .= <<<EOD
    73.         <h1>Корзина</h1>
    74.         <form name="buy" action="/roma/cart.php" method="get">
    75.         <input type="hidden" name="update" value="yes" />
    76.         <table width="100%" cellpadding=3 cellspacing=0  border="1px" bordercolor="black">
    77.             <tr>
    78.                 <th width="10%">#</th>
    79.                 <th width="200%">Название</th>
    80.                 <th width="50%">Цена</th>
    81.                 <th width="40px">Количество</th>
    82.                 <th width="50px">Размер</th>
    83.                 <th width="50px">Цвет</th>
    84.                 <th width="10px">Удалить</th>
    85.             </tr>          
    86. EOD;
    87.         ksort($_SESSION["cart"]);
    88.         }
    89.         $i = 1;
    90.         if ($_SESSION["cart"]) {
    91.         foreach($_SESSION["cart"] as $prodid=>$numprod)
    92.         {
    93.             $sql = mysql_query("SELECT * FROM tovar WHERE id = ".sqlesc($prodid));
    94.             $r = mysql_fetch_assoc($sql);          
    95.             $name1=$r["rusname"];
    96.             $t=1;
    97.             if ($t==$i) {
    98.             $size=$_COOKIE["size"];
    99.             $color=$_COOKIE["color"];
    100.             $arr_name=array("name"=>"$name1",
    101.                             "price"=>"$prc",
    102.                             "email"=>"$email",
    103.                             "size"=>"$size",
    104.                             "color"=>"$color"
    105.                             );
    106.             $t++;
    107.             }          
    108.             $id = $r["id"];
    109.             $name = "<a href=\"?prodid=".$id."\">".$r["rusname"]."</a>";
    110.             $pprice = getprice(($r["sale"]>0?$r["sale"]:$r["price"]),false);
    111.             $finpr = number_format($pprice * $numprod);
    112.             $allp += ($pprice*$_SESSION["cart"][$prodid]);
    113.             $prc = number_format($pprice);
    114.             $_SESSION["contrl"]=2;
    115.             $_SESSION["drow"]=2;
    116.             $data2 .= <<<EOD       
    117.                 <tr id="row{$prodid}" >
    118.                     <td width="20%">{$i}</td>
    119.                     <td width="400px">{$name}</td>
    120.                     <td width="50px">{$prc} руб.</td>
    121.                     <td width="40px">
    122.                         <input type="button" onclick="changeqty({$id},{$pprice},'subtotal{$id}','down'); return false;" />
    123.                         <input type="hidden" readonly id="q{$id}" name="q" value="{$numprod}">
    124.                         <input type="hidden" name="price" value="{$pprice}">                                     
    125.                         <span id="outqty{$id}" >{$numprod}</span>
    126.                         <input type="button"  onclick="changeqty({$id},{$pprice},'subtotal{$id}','up'); return false;" />
    127.                     </td>              
    128.                     <td width="50px">{$size}</td>
    129.                     <td width="50px">{$color}</td>
    130.                     <td width="10px"><input type="button"   onclick="delcart('{$prodid}')" /></td>
    131.                 </tr>              
    132. EOD;
    133.             $i++;
    134.             $array[]=$arr_name;
    135.         }
    136.         }      
    137.         $_SESSION["array"]=$array;/**- массив со значениями заказанных товаров**/
    138.         $_SESSION["contrl"]=2;
    139.         $allp = number_format($allp);
    140.         $out .= $data2;
    141.         $out .= <<<EOD
    142.         </table>
    143.         </form>
    144.         <form method="get" action="/roma/zakaz.php">
    145.         <table width=100% cellpadding=5 cellspacing=0>
    146.             <tr>
    147.                 <td align=left><button type="submit" class="btn" id="orderbtn" style="margin-top:10px;">
    148.                              <i class="icon-shopping-cart" onclick=" delete_cookie(size,color);"></i>Оформить заказ</button></td>
    149.                 <td align=right><h3>Итого: &nbsp;&nbsp;<span id="final_price">{$allp}</span> руб.</h3></td>
    150.             </tr>
    151.          </table>
    152.          </form>    
    153. EOD;
    154.     }