За последние 24 часа нас посетили 53915 программистов и 1717 роботов. Сейчас ищет 871 программист ...

Корзина javascript

Тема в разделе "JavaScript и AJAX", создана пользователем Ksuha000, 5 дек 2013.

  1. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Здравствуйте! Помогите, пожалуйста, разобраться! Разбираю код корзины и хочу добавить в него функцию выбора размера товара через radio. Собственно, саму такую функцию я сделала, но остановилась на том, как выбор пользователя (этот самый размер обуви) записать, добавить в корзину. Необходима функция на javascript, но не могу понять как ее написать. точнее приписать к тому, что есть.
    файл indexc.php
    Код (Text):
    1.  
    2. <?php $_SESSION["drow"]=1;
    3. require "inc.php";
    4. $id = (int) $_GET["prodid"];
    5. $cart = $_GET["cart"];
    6. $size=$_GET["size"];
    7.  
    8. //$youremail = "mail@mail.ru";
    9.  
    10.  
    11. if(validid($id))
    12. {   $_SESSION["contrl"]=2;
    13.     $_SESSION["drow"]=2;
    14.     $sql = mysql_query("SELECT * FROM tovar WHERE id = ".sqlesc($id));
    15.     $r = mysql_fetch_assoc($sql);
    16.     $p = getprice($r["price"]);
    17.     $price = ($r["sale"] > 0 ? "<s>".$p." руб.</s> ".getprice($r["sale"])." руб." : $p." руб.");
    18.     $cartlink = ($_SESSION["cart"][$r["id"]] ? "Удалить" : "В корзину");
    19. $_SESSION["address"]=$r["address"];
    20. $_SESSION["apend"]=$r["apend"];
    21. $_SESSION["rusname"]=$r["rusname"];
    22.  
    23.     include ("get1.php");
    24.     include ("sizecolor.php");
    25.     $out = <<<EOD
    26.         <h1>{$r["rusname"]}</h1>
    27.         <p>{$r["descr"]}</p>
    28.         <p>Цена: {$price}</p>
    29.         <button class="btn" id="descr_{$r["id"]}" onclick="shopping({$r["id"]});"><i class="icon-shopping-cart"></i>{$cartlink}</button>
    30. EOD;
    31.  
    32. }
    33. if($cart)
    34. {   $_SESSION["contrl"]=2;
    35.     if(count($_SESSION["cart"]) == 0)
    36.         $out = "<h1>Корзина</h1><p>Ваша корзина пуста</p>";
    37.        
    38.     else
    39.     {
    40.         $out .= <<<EOD
    41.         <h1>Корзина</h1>
    42.         <div id="message"></div>
    43.         <div id="checkout-form">
    44.         <form name="buy" action="/">
    45.         <table width=100% cellpadding=5 cellspacing=0 class="table table-striped">
    46.             <tr>
    47.                 <th width=2%><b>#</b></th>
    48.                 <th width=25%><b>Название</b></th>
    49.                 <th width=10%><b>Цена</b></th>
    50.                 <th width=15%><b>Количество</b></th>
    51.                 <th width=5%><b>Подитог</b></th>
    52.                 <th width=5%><b>Удалить</b></th>
    53.             </tr>
    54. EOD;
    55.         ksort($_SESSION["cart"]);
    56.         $i = 1;
    57.         foreach($_SESSION["cart"] as $prodid=>$numprod)
    58.         {
    59.             $sql = mysql_query("SELECT * FROM tovar WHERE id = ".sqlesc($prodid));
    60.             $r = mysql_fetch_assoc($sql);
    61.             $id = $r["id"];
    62.             $name = "<a href=\"?prodid=".$id."\">".$r["rusname"]."</a>";
    63.             $pprice = getprice(($r["sale"]>0?$r["sale"]:$r["price"]),false);
    64.             $finpr = number_format($pprice * $numprod);
    65.             $allp += ($pprice*$_SESSION["cart"][$prodid]);
    66.             $prc = number_format($pprice);
    67.             $_SESSION["contrl"]=2;
    68.             $_SESSION["drow"]=2;
    69.             $data2 .= <<<EOD
    70.                 <tr id="row{$prodid}">
    71.                     <td class="vmid">{$i}</td>
    72.                     <td class="vmid">{$name}</td>
    73.                     <td class="vmid">{$prc} руб.</td>
    74.                     <td class="vmid">
    75.                         <button class="btn undecor" onclick="changeqty({$id},{$pprice},'subtotal{$id}','down')">&nbsp;<i class="icon-chevron-down"></i></button>
    76.                         <input type="hidden" readonly id="q{$id}" name="qty" value="{$numprod}">
    77.                         <input type="hidden" name="price" value="{$pprice}">
    78.                         <span id="outqty{$id}" class="btn">{$numprod}</span>
    79.                         <button class="btn undecor" onclick="changeqty({$id},{$pprice},'subtotal{$id}','up')">&nbsp;<i class="icon-chevron-up"></i></button>
    80.                     </td>
    81.                     <td class="vmid"><span id="subtotal{$id}">{$finpr}</span> руб.</td>
    82.                     <td class="vmid"><button class="btn undecor" onclick="delcart('{$prodid}')">&nbsp;<i class="icon-remove"></i></button></td>
    83.                 </tr>
    84. EOD;
    85.             $i++;
    86.         }
    87.        
    88.         $_SESSION["contrl"]=2;
    89.         $allp = number_format($allp);
    90.         $out .= $data2;
    91.         $out .= <<<EOD
    92.         </table>
    93.         </form>
    94.         <form method="get" action="/">
    95.         <table width=100% cellpadding=5 cellspacing=0>
    96.             <tr>
    97.                 <td align=left><button type="submit" class="btn" id="orderbtn" style="margin-top:10px;"><i class="icon-shopping-cart"></i>Оформить заказ</button></td>
    98.                 <td align=right><h3>Итого: &nbsp;&nbsp;<span id="final_price">{$allp}</span> руб.</h3></td>
    99.             </tr>
    100.          </table>
    101.          </form>
    102.         </div>
    103. EOD;
    104.     }
    105. }
    106.  
    107.  
    108.  
    109. if(!$id && !$cart)
    110.     $out = <<<EOD
    111.    
    112. EOD;
    113.  
    114. if ($_SESSION["drow"]==1) {
    115.  
    116. $kamm=("SELECT * FROM tovar WHERE type='$type' AND firm='$firm'");
    117. $sql = mysql_query($kamm);
    118.  
    119. while($arr = mysql_fetch_array($sql))
    120.     $data .= "<li><a href=\"?prodid=".$arr["id"]."\">".$arr["rusname"]."</a></li>\n";
    121. }  
    122. ?>
    123. <html>
    124. <head>
    125.     <title>Корзина на Ajax - Smart JCart v2.0</title>
    126.     <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    127.     <meta name="viewport" content="width=device-width, initial-scale=0.20, maximum-scale=1.5, user-scalable=yes">
    128.     <meta name="apple-mobile-web-app-capable" content="yes">
    129.     <link rel="stylesheet" href="../stylecart.css" type="text/css" media="screen, projection" />
    130.  
    131.  
    132.     <style>
    133.     #loader,#submit{margin-top:-15px;}
    134.     </style>
    135. </head>
    136.     <body>
    137.     <?=$data;?>
    138.         <div id="menu">
    139.                          
    140.                                              
    141.          
    142.         <?=$out?>
    143.         </div>
    144.         <div id="cart">
    145.         <al class="nav-header">Корзина</al>
    146.         <a href="?cart=1">В корзине <span id="cart_num"><?=(is_array($_SESSION["cart"]) ? array_sum($_SESSION["cart"]) : 0)?></span> шт. (<span id="cart_total"><?=number_format($_SESSION["cart_total"])?></span> руб.)</span></a>
    147.                      
    148.                     </div>
    149.                 <div class="span9">
    150.                     <div class="hero-unit">
    151.                    
    152.                     </div>
    153.                 </div>
    154.            
    155.             <hr>
    156.          
    157.     </body>
    158. </html>
    shopping.js
    Код (Text):
    1.  
    2. var icon = '<i class="icon-shopping-cart"></i>';    //значок для корзины (при использонии фреймоврка bootstrap)
    3. var formname = 'buy';                               //название формы для корзины (список товара, обновление, удаление и т.п.)
    4. var cartorder = '#checkout-form';                   //идентификатор названия формы всех объектов на странице (для удаления всех объектов в корзине форма скрывается)
    5. var cartnum = '#cart_num';                          //идентификатор кол-ва товаров в корзине (где то на сайте)
    6. var carttotal = '#cart_total';                      //идентификатор итоговой суммы (где то на сайте)
    7. var finalprice = '#final_price';                    //идентификатор итоговой суммы (в корзине)
    8.  
    9.  
    10. function number_format(number, thousands_sep){
    11.     var integer = (number > 0 ? Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
    12.     for (i = integer.length - 3; i > 0; i -= 3)
    13.         integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
    14.     return integer;
    15. }
    16.  
    17. function shopping(id){
    18.     c_num = $(cartnum);
    19.     c_total = $(carttotal);
    20.     descr = $('#descr_'+id);
    21.     //в корзину всегда помещаем 1 товар, изменение кол-ва происходит в корзине
    22.     $.get('/roma/cart.php?q=1&id='+id,function(data) {  
    23.         arr = data.split('|');    
    24.         id = arr[0];        //id продукта
    25.         cart = arr[1];      //в корзине сейчас
    26.         action = arr[2];    //экшен
    27.         total2 = arr[3];    //сумма
    28.  
    29.         act = icon+(action =='add' ? "В корзину" : "Удалить");
    30.         c_num.html(cart);
    31.         c_total.html(number_format(total2,','));
    32.         descr.html(act);
    33.     });
    34. }
    35.  
    36. function updatecart(){
    37.     final = totqty = 0;
    38.     $("form[name="+formname+"]").find("input[type='hidden']").each(function() {
    39.         if($(this).attr('name')  == 'qnty')
    40.         {
    41.             quantity = $(this).val();
    42.             totqty += parseInt(quantity);
    43.         }
    44.         if($(this).attr('name') == 'price')
    45.         {
    46.             p = $(this).val();
    47.             fp = p*quantity;
    48.             final = parseInt(final + fp);
    49.         }
    50.     });
    51. }
    52.  
    53. function delcart(id){
    54.     oldqty = $('#q'+id).val();
    55.     $('#q'+id).val(0);
    56.     updatecart();
    57.     $('#row'+id).fadeOut('slow');
    58.     if(final == 0)
    59.         $(cartorder).fadeOut('slow', function(){$(this).html('Ваша корзина пуста').fadeIn(500);});   //таблица
    60.     ff = number_format(final,',');
    61.     $(finalprice).html(ff);
    62.     $(carttotal).html(ff);
    63.     shopping(id);
    64. }
    65.  
    66.  
    67. function checkout(price,id,num_prod){
    68.     updatecart();
    69.     ff = number_format(final,',')
    70.     $(finalprice).html(ff);
    71.     $(carttotal).html(ff);
    72.     $(cartnum).html(totqty);
    73.     $.get('/cart/prod'+id+'/qty'+num_prod+'/update/');
    74. }
    75.  
    76. function changeqty(el,price,subt,uod)
    77. {
    78.     var qty = $('#q'+el).val();
    79.     var prc = price;
    80.     if(!isNaN( qty )){
    81.         if(uod == 'up'){qty++;}else{if(qty > 1){qty--;}}
    82.     }
    83.     $('#q'+el).val(qty);
    84.     $('#outqty'+el).html(qty);
    85.     $('#'+subt).html(number_format((qty*prc),','));
    86.     checkout(price,el,qty);
    87.     return false;
    88. }
    89.  
    90. function sendorder(){
    91.         $('#loader').show();
    92.         var values = $("#order").serialize();
    93.         var action = $("#order").attr('action');
    94.         $('#submit').attr('disabled', 'disabled');
    95.         $("#message").slideUp(750, function() {
    96.                 $('#message').hide();
    97.                 $.post(action, values, function(data) {
    98.                     $('#message').html(data);
    99.                     $('#message').slideDown('slow');
    100.                     $('#loader').fadeOut('fast', function() {
    101.                         $(this).hide();
    102.                     });
    103.                     $('#submit').removeAttr('disabled');
    104.                     if (data.match('success') != null)
    105.                         $('#checkout-form').slideUp('slow');
    106.                 });
    107.  
    108.         });
    109. }
    110.  
    111. $(document).ready(function() {
    112.     $("#orderbtn").click( function(){
    113.         if($('#checkout').attr('class') == 'hide'){
    114.             $('#checkout').fadeIn('slow');
    115.             $('#checkout').removeClass('hide');
    116.         }
    117.         else{
    118.             $('#checkout').fadeOut('slow');
    119.             $('#checkout').addClass('hide');
    120.         }
    121.     });
    122. });
    sizecolor.php
    Код (Text):
    1.  
    2. <?php session_start();
    3. $rusname=$_SESSION["rusname"];
    4.  
    5.     $my = mysql_query("SELECT * FROM size WHERE rusname = '$rusname'");
    6.     $k = mysql_fetch_assoc($my);
    7.     $cnt=mysql_num_fields($my);
    8.     $cn=$cnt-1;
    9.     print_r ($k);
    10.     echo $cnt;
    11.     $t=0;
    12.     while ($t<$cn){
    13.     foreach ($k as $value){
    14.     if ("$value"==="yes")
    15.     {
    16.     ?>
    17.     <input type="radio" name="size" value="<?php echo $value;?>">
    18.     <?php echo mysql_field_name($my, $t);
    19.     }
    20.     $t++;
    21.     }
    22.     }
    23. ?>
    24. <div id="sizecolor">
    25. <form name="sizecolor" method="get" action="/">
    26.  
    27.  
    28. </form>
    29. </div>
    inc.php
    Код (Text):
    1.  
    2. <?php
    3. $mysql_host = "localhost";
    4. $mysql_user = "root";
    5. $mysql_pass = "";
    6. $mysql_db = "jakson";
    7.  
    8. function sql_query($query)
    9. {
    10.     $sql = mysql_query($query);
    11.     return $sql;
    12. }
    13. function sqlesc($x) {
    14.     return "'".mysql_real_escape_string($x)."'";
    15. }
    16.  
    17. function utf2cp($text)
    18. {
    19.     return iconv("UTF-8", "CP1251//IGNORE", $text);
    20. }
    21.  
    22. function dbconn()
    23. {
    24.     global $mysql_host, $mysql_user, $mysql_pass, $mysql_db;
    25.     mysql_connect($mysql_host, $mysql_user, $mysql_pass);
    26.     mysql_select_db($mysql_db) or die('dbconn: mysql_select_db: ' + mysql_error());
    27.    
    28. }
    29.  
    30. function get_row_count($table, $suffix = "")
    31. {
    32.     if ($suffix)
    33.         $suffix = " $suffix";
    34.     $r = sql_query("SELECT COUNT(*) FROM $table$suffix");
    35.     $a = mysql_fetch_row($r);
    36.     if($a[0] > 0)
    37.     return $a[0];
    38.     else
    39.     return "0";
    40. }
    41.  
    42. function get_values($field, $from, $where)
    43. {
    44.     $arr = explode(",",$field);
    45.     $sql = mysql_query("SELECT $field FROM $from WHERE $where");
    46.     $fetch = mysql_fetch_row($sql);
    47.     return (count($arr) > 1 ? $fetch : $fetch[0]);
    48. }
    49.  
    50. function validid($id){return is_numeric($id) && ($id > 0) && (floor($id) == $id);}
    51.  
    52. function postval($val){
    53.     return utf2cp(htmlspecialchars(strip_tags(trim($val))));
    54. }
    55. function jsout_err($text){
    56.     return "<li>".$text."</li>";
    57. }
    58. function jsoutcont_err($text,$errors){
    59.             return <<<EOD
    60.             <div class="alert alert-error"><button type="button" class="close" data-dismiss="alert"> &times; </button>
    61.                 <p><b>{$text}</b></p>
    62.                 <ul class="error_messages">
    63.                 {$errors}
    64.                 </ul>
    65.             </div>
    66. EOD;
    67. }
    68. function jsout_ok($text){
    69.     return "<div class=\"alert alert-success\"><button type=\"button\" class=\"close\" data-dismiss=\"alert\"> &times; </button><p><b>".$text."</b></p></div>";
    70. }
    71.  
    72. function getprice($price,$nf=true){
    73.     $p = round($price / 10)*10;
    74.     return ($nf ? number_format($p) : $p);
    75. }
    76.  
    77. dbconn();
    78. session_start(); ?>
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Как вы хотите, чтобы мы это сделали не имея представления?
    Даже не видя, что и как работает?
    Смотря в такой дикий скрипт, и сидеть страдать маразмом, не кому не хочется.
     
  3. AmsTaFFix

    AmsTaFFix Активный пользователь

    С нами с:
    10 дек 2013
    Сообщения:
    22
    Симпатии:
    0
    объясните как это работает, в куче кода разбираться неохота )
     
  4. olegkaz

    olegkaz Активный пользователь

    С нами с:
    21 фев 2013
    Сообщения:
    121
    Симпатии:
    0
    Дайте ссылку на этот проект, хоть посмотреть что это работает.