Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Еще одна Корзина Товаров-2 на php (отредактировать)
 
 автор: vlady_s   (21.04.2013 в 01:52)   письмо автору
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 ?

  Ответить  
 
 автор: confirm   (21.04.2013 в 02:07)   письмо автору
 
   для: vlady_s   (21.04.2013 в 01:52)
 

Проще выбросить вашу и написать новую, что-то слишком много файлов непосредственно для корзины.

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 02:10)   письмо автору
 
   для: confirm   (21.04.2013 в 02:07)
 

Там просто админка еще для управления.
Заказы, Стили, Товары, Настройки

  Ответить  
 
 автор: confirm   (21.04.2013 в 02:20)   письмо автору
 
   для: vlady_s   (21.04.2013 в 02:10)
 

При чем здесь стили и прочее? Что некий стиль может влиять на количество?

Корзины собственно могут быть трех типов:
1) это на клиенте (куках), а значит разбираться в количестве добавления нужно в клиентском скрипте (именно такой скрипт может зависеть от браузера)
2) на сервере в сессии, где непосредственно и добавляется товары (не зависит от браузера)
3) на сервер в базе (не зависит от браузера)

Согласитесь, что это небольшие фрагменты кода, непосредственно касающиеся добавления, собственно сама корзина (механизм добавления и просчета), это всего то несколько строк. Так неужели нельзя выделить эти строки и разобрать их, вместо того чтобы вываливать кучу непонятных admin1.php, admin2.php,... (слава богу что не 20-30) :)

Вы автор кода? Так выделите эту часть, покажите ее и задайте вопрос.

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 12:58)   письмо автору
 
   для: 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&nbsp;$conf[8]</a></div>";
?>

  Ответить  
 
 автор: Sfinks   (21.04.2013 в 13:20)   письмо автору
 
   для: vlady_s   (21.04.2013 в 12:58)
 

А какого года это произведение искусства?
Похоже на начало 2000-х. Тогда еще можно было с большой долей вероятности идентифицировать пользователя по IP.
Сейчас это полная лажа.
Да и перлы типа url=<?php $_SERVER['REQUEST_URI'] ?> заставляют задуматься.
Выкиньте и напишите с нуля - это будет проще.
Вообще корзина на файлах с идентификацией по IP - это капец. Даже не знаю как назвать.

  Ответить  
 
 автор: confirm   (21.04.2013 в 13:27)   письмо автору
 
   для: vlady_s   (21.04.2013 в 12:58)
 

Каким боком блок <style> может влиять на добавление или нет товара? Зачем вы это все вываливаете сюда, да еще не обрамленное тегом [сode][/сode]?

Собственно и обрамить, все равно... Код просто ужасен уже потому, что не форматирован.

У вас корзина вообще не из одного из трех вариантов описанных мною. У вас реализация на файлах (и не дай бог если все так, а не только корзина).

Даже и не знаю, что и посоветовать вам. Сказать правду, и что более разумно - "выбросить все это к чертовой матери", так обидитесь. Сказать - "ищите в этом", так смысла нет никакого от такой корзины.

Найдите форму которой отправляются на сервер выбранные товары, ищите в скриптах своих код который обрабатывает эти поля - вот это и будет сама корзина. А данный участок принадлежит ли ей, я сказать не могу, потому как понятия не имею, что это за $_POST[$pref].

Клиентский скрипт:

if(navigator.appName=='Microsoft Internet Explorer' || navigator.appName=='Opera')....

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

Вы надо полагать в РНР ни в зуб ногою?

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 15:42)   письмо автору
 
   для: confirm   (21.04.2013 в 13:27)
 

Да это понятно что стили не могут влиять на работу скрипта.
Я залил тот архив, который скачал с сайта автора и пояснил что за файлы в нем:
админка для управления заказами, контактами доставки, стили, создание кода товара для добавления товара в корзину.
Сайт то написан грамотно, но вот с корзиной пока не пруха.

С php я не так хорошо знаком, как с html и css.
На php я умею лишь форму обратной связи делать.

Кто нибудь может написать код корзины товаров, аналогичный тому что я предоставил ?
Или сделать корзину, но без использования базы msql ?
Цена вопроса не столь важна, сколько стабильный скрипт.
Главное чтобы добавление товара в корзину не сопровождалось обновлением страницы сайта.

Вот еще один скрипт корзины: http://softtime.ru/forum/read.php?id_forum=1&id_theme=89434
Он на куках. По нему что скажете ?

  Ответить  
 
 автор: confirm   (21.04.2013 в 16:35)   письмо автору
 
   для: vlady_s   (21.04.2013 в 15:42)
 

>Сайт то написан грамотно

Трудно сказать, если по современным меркам, то это просто хлам.

>Кто нибудь может написать код корзины товаров, аналогичный тому что я предоставил ?

Упаси господь писать аналогичное, именно потому, что в основе это хлам.

Добавление товара без обновления страницы, это Ajax задействовать, но он только обеспечивает диалог с сервером, а корзина, так она на сервере и если не на куках, то никакого отношения, в смысле кода, отношения к Ajax не имеет.

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

Но вы то не знаете РНР, а потому....

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 16:46)   письмо автору
 
   для: confirm   (21.04.2013 в 16:35)
 

Так это не сайт, а просто созданная страница для примера, чтоб вы могли увидеть в действии.
Смотрите http://softtime.ru/forum/read.php?id_forum=1&id_theme=89434 Тут добавляется сразу после клика "в корзину". без ajax.
Сделайте тогда такой же на сессии ?
А то эта корзина в сафари иногда выдает номера и больше 2 товаров в корзину не добавляет

  Ответить  
 
 автор: confirm   (21.04.2013 в 16:56)   письмо автору
 
   для: vlady_s   (21.04.2013 в 16:46)
 

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

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 16:59)   письмо автору
 
   для: 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

  Ответить  
 
 автор: confirm   (21.04.2013 в 17:13)   письмо автору
 
   для: vlady_s   (21.04.2013 в 16:59)
 

Вы либо не понимаете, либо... А я не понимаю, при чем тут if(file_exists("public_html"))break;
if (!file_exists($strpath)) chdir(".."); и все остальное.

Корзина, это:

1) Краткое представление количество/сумма (информация пользователю)
2) Полное представление корзины, с возможностью редактирования

Первое можно решить и без перезагрузки страницы.
Второе это вызов страницы, хотя можно тоже не перегружать текущую страницу.

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

Все остальное, это дополнения, которые можно раздуть до размера целого амбара.

Что вам конкретно надо - код обработчика массива товаров корзины в сессии, или от нуля весь механизм ее работы, начиная от запроса клиента и кончая оформлением заказа?

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 17:18)   письмо автору
16.2 Кб
 
   для: confirm   (21.04.2013 в 17:13)
 

Вот это: механизм ее работы, начиная от запроса клиента и кончая оформлением заказа.
Если можно, то чтоб в корзине отображалось кол-во товаров и общая сумма заказа.
Пример:
В корзине 3 товара
Итого:600руб
посмотрите вложение

  Ответить  
 
 автор: confirm   (21.04.2013 в 17:56)   письмо автору
 
   для: 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 руб.'

Весь же механизм работы корзина клиент<-->сервер сложнее, писать такое бесплатно да еще опираясь на ваш готовый исходник, я конечно же не буду.

  Ответить  
 
 автор: vlady_s   (21.04.2013 в 18:11)   письмо автору
 
   для: confirm   (21.04.2013 в 17:56)
 

Вот по типу таких вариантов:
1) с возможностью указания количества товаров: http://homescript.ru/bas_pro_test.php

2) или просто кликая и добавляя товар в корзину: http://homescript.ru/bas.php

За вашу работу мы заплатим сколько нужно, нам очень нужны эти скрипты для интернет магазинов.
Не обязательно использовать мои исходники, но хотя бы чтоб принцип работы был как в демоверсиях.
В исходниках просто админка нормальная и в принципе она устраивает

  Ответить  
 
 автор: confirm   (21.04.2013 в 18:23)   письмо автору
 
   для: vlady_s   (21.04.2013 в 18:11)
 

Написал письмо, условия в нем. Надо, отвечайте. Адрес временный, так что...

  Ответить  
 
 автор: vlady_s   (23.04.2013 в 01:53)   письмо автору
 
   для: confirm   (21.04.2013 в 18:23)
 

Надо, но корзина без базы нужна. Чтоб при создании резервной копии сайта не приходилось по новой забивать товары и их стоимость

  Ответить  
 
 автор: confirm   (23.04.2013 в 02:02)   письмо автору
 
   для: vlady_s   (23.04.2013 в 01:53)
 

Значит на письмо ответьте.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования