|
 96.5 Кб |
|
| У меня есть еще один скрипт корзины, на php.
Демо: http://demo2.msk0. ru/index2.php
http://demo2.msk0. ru/bas_pro/admin/
login:admin
pass:111
Исходник: http://demo2.msk0. ru/demo2.rar
Мне нужно, чтобы товар добавлялся в корзину без перезагрузки страницы.
Поскольку некоторые сайты имеют весьма объемное содержимое, то лишний раз обновлять страницу из-за добавления товара в корзину не хочется.
Есть ли вариант отредактировать код корзины, чтобы при клике "в корзину" товар тут же отобразился в корзине без restart page ? | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 01:52)
| | Проще выбросить вашу и написать новую, что-то слишком много файлов непосредственно для корзины. | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 02:07)
| | Там просто админка еще для управления.
Заказы, Стили, Товары, Настройки | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 02:10)
| | При чем здесь стили и прочее? Что некий стиль может влиять на количество?
Корзины собственно могут быть трех типов:
1) это на клиенте (куках), а значит разбираться в количестве добавления нужно в клиентском скрипте (именно такой скрипт может зависеть от браузера)
2) на сервере в сессии, где непосредственно и добавляется товары (не зависит от браузера)
3) на сервер в базе (не зависит от браузера)
Согласитесь, что это небольшие фрагменты кода, непосредственно касающиеся добавления, собственно сама корзина (механизм добавления и просчета), это всего то несколько строк. Так неужели нельзя выделить эти строки и разобрать их, вместо того чтобы вываливать кучу непонятных admin1.php, admin2.php,... (слава богу что не 20-30) :)
Вы автор кода? Так выделите эту часть, покажите ее и задайте вопрос. | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 02:20)
| | Я не автор, а эту корзину приобрел на homescript.ru,
Автору обращался с этим вопросом, по факту он ничего толкового сказать не может.
Знаю что Эта корзина точно не на куках, базы тоже нет. Поэтому скорее ко 2 варианту относится корзина.
Всего то нужно, чтобы товар добавлялся в корзину при клике "в корзину" но без перезагрузки страницы.
ФРАГМЕНТ INDEX.PHP
<?php
$catalog='bas_pro';
if(!file_exists("$catalog/admin/admin1.php"))exit("Не надо этот файл открывать!");
$conf=file("$catalog/admin/conf/sett.txt");
for($i=0; $i<count($conf); $i++) $conf[$i]=trim($conf[$i]);
$view=file("$catalog/admin/conf/view.txt");
for($i=0; $i<count($view); $i++) $view[$i]=trim($view[$i]);
include_once("$catalog/func.php");
$list=array();
$list=file("$catalog/admin/db/price.txt");
$id=array();
$val=array();
$name=array();
$price=array();
$total=array();
foreach($list as $line)
{
$line=trim($line);
$expl=explode("*",$line);
$id[]="$expl[2]";
$val[$expl[2]]=0;
$name[$expl[2]]=$expl[0];
//пересчёт
if($conf[10]=="")$price[$expl[2]]=$expl[1];
else
{
$price[$expl[2]]=$expl[1]*$conf[9];
$price[$expl[2]]=round($price[$expl[2]],2);
}
$total[$expl[2]]=$expl[4];
}
foreach($_POST as $k=>$v)
{
if(in_array($k,$id))
{
$pref="t_$k";
$_POST[$pref]=trim($_POST[$pref]);
$_POST[$pref]=intval($_POST[$pref]);
if(is_int($_POST[$pref]) && $_POST[$pref] > -1)
{
if(!file_exists("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]") )
{
if($_POST[$pref]!=0)
{
$f=fopen("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]","w+");
fwrite($f,$k."*".$_POST[$pref]."*".$name[$k]."*".$price[$k]."\r\n");
fclose($f);
}
}
else
{
$file=file("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]");
$f=fopen("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]","w");
$search=false;
foreach($file as $line)
{
$line=trim($line);
$expl=explode("*",$line);
if($expl[0]!=$k) fwrite($f,$line."\r\n");
else
{
$search=true;
fwrite($f,$k."*".$_POST[$pref]."*".$name[$k]."*".$price[$k]."\r\n");
}
}
if(!$search) fwrite($f,$k."*".$_POST[$pref]."*".$name[$k]."*".$price[$k]."\r\n");
fclose($f);
}
?>
<script type="text/javascript">
if(navigator.appName!='Microsoft Internet Explorer' && navigator.appName!='Opera')
location.replace("<?php $_SERVER['REQUEST_URI'] ?>");
</script>
<meta http-equiv="refresh" content="0; url=<?php $_SERVER['REQUEST_URI'] ?>">
<?php
}
}
}
$summ=0;
$oll_staf=0;
if(file_exists("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]"))
{
$file=file("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]");
foreach($file as $line)
{
$line=trim($line);
$expl=explode("*",$line);
$val[$expl[0]]=$expl[1];
$summ+=$expl[1]*$expl[3];
$oll_staf+=$expl[1];
}
if($summ==0)unlink("$catalog/admin/db/ip/$_SERVER[REMOTE_ADDR]");
}
?>
<style>
#b_win {
position: absolute;
left: 50%;
top: 200px;
margin-left: -200px;
margin-top: -150px;
padding:10px;
background: #FFFFFF;
border: solid 1px #808080;
color:#3E3E3E;
font-size:12pt;
font-family:"Times New Roman", "serif";
width:700px;
}
#b_win a
{
color:#0080C0;
font-size:12pt;
font-family:"Times New Roman", "serif";
}
#sett1
{
border-style:<?php echo $view[7] ?>;
border-color:<?php echo $view[5] ?>;
border-left-width: 0px;
border-right-width: <?php echo $view[6] ?>px;
border-top-width: <?php echo $view[6] ?>px;
border-bottom-width:0px;
}
#sett2
{
border-style:<?php echo $view[7] ?>;
border-color:<?php echo $view[5] ?>;
border-left-width: 0px;
border-right-width: 0px;
border-top-width: <?php echo $view[6] ?>px;
border-bottom-width:0px;
}
#sett3
{
border-style:<?php echo $view[7] ?>;
border-color:<?php echo $view[5] ?>;
border-left-width: 0px;
border-right-width: <?php echo $view[6] ?>px;
border-top-width: 0px;
border-bottom-width:0px;
}
#st
{
color:<?php echo $view[18] ?>;
font-size:<?php echo $view[19] ?>pt;
font-style:<?php echo $view[20] ?>;
font-weight:<?php echo $view[21] ?>;
font-family:<?php echo $view[22] ?>;
}
#st a
{
color:<?php echo $view[18] ?>;
font-size:<?php echo $view[19] ?>pt;
font-style:<?php echo $view[20] ?>;
font-weight:<?php echo $view[21] ?>;
font-family:<?php echo $view[22] ?>;
}
#but {
font-family:"Times New Roman", "serif";
color:#606060;
font-size:11pt;
background-color:#F7F7F7;
font-weight:300;
text-align:center;
padding:1px;
border-style:solid;
border-width: 1px;
border-color:#4B4B4B;
}
#tab_price
{
background-color:<?php echo $view[0] ?>;
width:<?php echo $view[4] ?>px;
border-style:<?php echo $view[3] ?>;
border-width: <?php echo $view[2] ?>px;
border-color:<?php echo $view[1] ?>;
}
#name_price
{
color:<?php echo $view[8] ?>;
font-size:<?php echo $view[9] ?>pt;
font-style:<?php echo $view[10] ?>;
font-weight:<?php echo $view[11] ?>;
font-family:<?php echo $view[12] ?>;
}
#name_price a
{
color:<?php echo $view[8] ?>;
font-size:<?php echo $view[9] ?>pt;
font-style:<?php echo $view[10] ?>;
font-weight:<?php echo $view[11] ?>;
font-family:<?php echo $view[12] ?>;
}
#name_price_pod
{
color:<?php echo $view[28] ?>;
font-size:<?php echo $view[29] ?>pt;
font-style:<?php echo $view[30] ?>;
font-weight:<?php echo $view[31] ?>;
font-family:<?php echo $view[32] ?>;
}
#opis
{
color:<?php echo $view[33] ?>;
font-size:<?php echo $view[34] ?>pt;
font-style:<?php echo $view[35] ?>;
font-weight:<?php echo $view[36] ?>;
font-family:<?php echo $view[37] ?>;
}
#num_price
{
color:<?php echo $view[13] ?>;
font-size:<?php echo $view[14] ?>pt;
font-style:<?php echo $view[15] ?>;
font-weight:<?php echo $view[16] ?>;
font-family:<?php echo $view[17] ?>;
}
.navig_activ
{ text-decoration:none;
color:#0080FF;
font-size:11pt;
font-weight:600;
font-family:"Times New Roman", "serif";
padding:5px;
}
.navig_passiv
{ text-decoration:none;
color:#808080;
font-size:11pt;
font-weight:300;
font-family:"Times New Roman", "serif";
padding:5px;
}
a.navig_activ
{
text-decoration:none;
}
a.navig_passiv
{
text-decoration:none;
}
a{
text-decoration:none;
}
</style>
<script type="text/javascript">
function rel()
{
if(navigator.appName=='Microsoft Internet Explorer' || navigator.appName=='Opera')
{
window.history.go(0);
}
else
{
window.location.reload();
}
}
function win()
{
window.open('/<?php echo $catalog ?>/form.php?op=1','','width=750,height=450,status=no,toolbar=no,menubar=no,scrollbars=yes')
}
</script>
<?php
if($summ==0) echo "<div id=\"st\"><img src=../bas.png width=60px height=60px alt=\"корзина\" border=0 align=middle><br>В корзине:0</div>";
else echo "<div id=\"st\"><img src=../bas.png width=60px height=60px alt=\"корзина\" border=0 align=middle>
<a href=javascript:win();><br>В корзине: $oll_staf товаров<br>Стоимость: $summ $conf[8]</a></div>";
?> | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 12:58)
| | А какого года это произведение искусства?
Похоже на начало 2000-х. Тогда еще можно было с большой долей вероятности идентифицировать пользователя по IP.
Сейчас это полная лажа.
Да и перлы типа url=<?php $_SERVER['REQUEST_URI'] ?> заставляют задуматься.
Выкиньте и напишите с нуля - это будет проще.
Вообще корзина на файлах с идентификацией по IP - это капец. Даже не знаю как назвать. | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 12:58)
| | Каким боком блок <style> может влиять на добавление или нет товара? Зачем вы это все вываливаете сюда, да еще не обрамленное тегом [сode][/сode]?
Собственно и обрамить, все равно... Код просто ужасен уже потому, что не форматирован.
У вас корзина вообще не из одного из трех вариантов описанных мною. У вас реализация на файлах (и не дай бог если все так, а не только корзина).
Даже и не знаю, что и посоветовать вам. Сказать правду, и что более разумно - "выбросить все это к чертовой матери", так обидитесь. Сказать - "ищите в этом", так смысла нет никакого от такой корзины.
Найдите форму которой отправляются на сервер выбранные товары, ищите в скриптах своих код который обрабатывает эти поля - вот это и будет сама корзина. А данный участок принадлежит ли ей, я сказать не могу, потому как понятия не имею, что это за $_POST[$pref].
Клиентский скрипт:
if(navigator.appName=='Microsoft Internet Explorer' || navigator.appName=='Opera')....
у вас как раз и может глючить. Почему, рассказывать нет смысла тоже, ибо это не корзина, это ужас.
Вы надо полагать в РНР ни в зуб ногою? | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 13:27)
| | Да это понятно что стили не могут влиять на работу скрипта.
Я залил тот архив, который скачал с сайта автора и пояснил что за файлы в нем:
админка для управления заказами, контактами доставки, стили, создание кода товара для добавления товара в корзину.
Сайт то написан грамотно, но вот с корзиной пока не пруха.
С php я не так хорошо знаком, как с html и css.
На php я умею лишь форму обратной связи делать.
Кто нибудь может написать код корзины товаров, аналогичный тому что я предоставил ?
Или сделать корзину, но без использования базы msql ?
Цена вопроса не столь важна, сколько стабильный скрипт.
Главное чтобы добавление товара в корзину не сопровождалось обновлением страницы сайта.
Вот еще один скрипт корзины: http://softtime.ru/forum/read.php?id_forum=1&id_theme=89434
Он на куках. По нему что скажете ? | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 15:42)
| | >Сайт то написан грамотно
Трудно сказать, если по современным меркам, то это просто хлам.
>Кто нибудь может написать код корзины товаров, аналогичный тому что я предоставил ?
Упаси господь писать аналогичное, именно потому, что в основе это хлам.
Добавление товара без обновления страницы, это Ajax задействовать, но он только обеспечивает диалог с сервером, а корзина, так она на сервере и если не на куках, то никакого отношения, в смысле кода, отношения к Ajax не имеет.
Я могу написать скрипт корзины на сессии или на куках, но встраивать его в свой сайт будете сами, так как ковыряться в таком хламе, нет желания.
Но вы то не знаете РНР, а потому.... | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 16:35)
| | Так это не сайт, а просто созданная страница для примера, чтоб вы могли увидеть в действии.
Смотрите http://softtime.ru/forum/read.php?id_forum=1&id_theme=89434 Тут добавляется сразу после клика "в корзину". без ajax.
Сделайте тогда такой же на сессии ?
А то эта корзина в сафари иногда выдает номера и больше 2 товаров в корзину не добавляет | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 16:46)
| | Я же сказал, я могу написать корзину, вы ее сами сможете подключить к своему сайту? | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 16:56)
| | Примерно такой код встраиваю на страницу в то место, где должна быть корзина.
Вот собственно и вся встройка. А у вас какой код будет ?
<?
//Установка корзины.
$strpath="bas/index.php";
$adrself=getcwd();
for($i=0; $i<100; $i++)
{
if(file_exists("public_html"))break;
if (!file_exists($strpath)) chdir("..");
else break;
}
include ($strpath);
chdir($adrself);
?>
Вы главное в самих файлах пропишите пути чтоб они были в связке
Тут исходники если что: http://homescript.ru/bas_man.php
http://homescript.ru/load.php?down=down_bas | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 16:59)
| | Вы либо не понимаете, либо... А я не понимаю, при чем тут if(file_exists("public_html"))break;
if (!file_exists($strpath)) chdir(".."); и все остальное.
Корзина, это:
1) Краткое представление количество/сумма (информация пользователю)
2) Полное представление корзины, с возможностью редактирования
Первое можно решить и без перезагрузки страницы.
Второе это вызов страницы, хотя можно тоже не перегружать текущую страницу.
То есть и первое, второе можно сделать по разному. Но вот сама корзина, код обработки ее, это всего несколько строк кода. В случае на сессиях, это просто массив в сессии, которые и используют оба представления корзины.
Все остальное, это дополнения, которые можно раздуть до размера целого амбара.
Что вам конкретно надо - код обработчика массива товаров корзины в сессии, или от нуля весь механизм ее работы, начиная от запроса клиента и кончая оформлением заказа? | |
|
|
|
|
 16.2 Кб |
|
|
для: confirm
(21.04.2013 в 17:13)
| | Вот это: механизм ее работы, начиная от запроса клиента и кончая оформлением заказа.
Если можно, то чтоб в корзине отображалось кол-во товаров и общая сумма заказа.
Пример:
В корзине 3 товара
Итого:600руб
посмотрите вложение | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 17:18)
| | >Если можно, то чтоб в корзине отображалось кол-во товаров и общая сумма заказа.
Ну это не задача, это пустяк. Все ведь зависит от того, что будет помещаться в корзину. Например, если в корзине содержаться по id товаров как массивы информация об их количестве (первый элемент) и цене за единицу (второй элемент), то это очень просто:
<?
//пусть это корзина в сессии, которая содержит
//на данный момент три товара с id = 12, 22 и 34
//а их массивы количество и цену
$_SESSION['basket'] = array(
12 => array('count'=>3, 'price'=>50),
22 => array('count'=>2, 'price'=>30),
34 => array('count'=>4, 'price'=>80)
);
//считаем количество товаров в корзине
$totp = array_sum(array_values(array_map('current', $_SESSION['basket'])));
//считаем сумму товаров в корзине
$totm = array_sum(array_map('array_product', $_SESSION['basket']));
//выводим информацию о корзине
echo 'Всего товаров в корзине: '.$totp.' шт., на сумму: '.$totm.'.00 руб.';
|
Весь же механизм работы корзина клиент<-->сервер сложнее, писать такое бесплатно да еще опираясь на ваш готовый исходник, я конечно же не буду. | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 17:56)
| | Вот по типу таких вариантов:
1) с возможностью указания количества товаров: http://homescript.ru/bas_pro_test.php
2) или просто кликая и добавляя товар в корзину: http://homescript.ru/bas.php
За вашу работу мы заплатим сколько нужно, нам очень нужны эти скрипты для интернет магазинов.
Не обязательно использовать мои исходники, но хотя бы чтоб принцип работы был как в демоверсиях.
В исходниках просто админка нормальная и в принципе она устраивает | |
|
|
|
|
|
|
|
для: vlady_s
(21.04.2013 в 18:11)
| | Написал письмо, условия в нем. Надо, отвечайте. Адрес временный, так что... | |
|
|
|
|
|
|
|
для: confirm
(21.04.2013 в 18:23)
| | Надо, но корзина без базы нужна. Чтоб при создании резервной копии сайта не приходилось по новой забивать товары и их стоимость | |
|
|
|
|
|
|
|
для: vlady_s
(23.04.2013 в 01:53)
| | Значит на письмо ответьте. | |
|
|
|
|