|
|
 18 Кб |
|
|
для: dirol
(17.11.2011 в 15:21)
| | или ладно , если дублируются пусть дублируются, но при выводе товара в корзине чтобы объединялись, такое возможно?
<?php
$cookies = ($_COOKIE['shop']);
$str = str_replace(" ", "", $cookies);
$elements = explode("|", $str);
$basket = array();
$sizes = array();
if(!empty($elements)){
for($i = 0; $i < count($elements); $i++){
list($id, $size, $totals) = explode("-", $elements[$i]);
$basket[] = $id;
$sizes[] = $size;
}
}
$arr_i = implode(",", $basket);
$arr_i = chop($arr_i, ",");
$pattern = "#(XS|S|M|L|XL|XXL|XXL|XXXL|XXS|XS|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|)(\d+)#";
$result = $db->sql_query("SELECT id, title, preis FROM ".$prefix."_shop WHERE id IN ($arr_i)");
while(list($sid, $title, $preis) = $db->sql_fetchrow($result)) {
if(!empty($elements)){
for($i = 0; $i < count($elements); $i++){
list($id, $size, $totals) = explode("-", $elements[$i]);
if($id==$sid){
$sizes = preg_replace($pattern, "\\1 \\2", $size);
$content .= "".$sid."-<a href=\"index.php?name=shop&op=view&id=$sid\">".$title."</a>-".$sizes."-".$totals."";
}
}
}
}
|
| |
|
|
|
|
|
|
|
для: cheops
(17.11.2011 в 15:16)
| | ну тут получается добавление в корзину, в данном случаии в кукисы, и показ корзины function show_basket
$cid = intval($_REQUEST['id']); это id товара
|
for ($i = 0; $i < (17); $i++) {
$size[] = trim(str_replace(array("'", '"', " ", " ", ":", ";", ".", "(", ")"), "", ($_REQUEST["size".$i.""])));
}
это размеры
|
for ($a = 0; $a < (17); $a++) {
$text[] = ($_REQUEST["text".$a.""]);
}
тут количество товара
|
$text=array_diff($text,array(""));
$size=array_diff($size,array(""));
for ($i = 0; $i < count($size); $i++) {
if($text[$i]!=0){
$finish[] = $cid."-".$size[$i]."-".$text[$i];
}
}
$finish = implode("|", $finish);
if ($cookies) {
$info = ("".$cookies."".$finish."");
setcookie("shop", ($info), time() + 86400);
} else {
setcookie("shop", ($finish), time() + 86400);
$info = ($finish);
}
тут собирается кукисы, если нету кукисов то создает объект, если есть кукисы то просто добавляет значение.
вот тут бы вставить вашу функцию, что если есть в кукисах данный ключ то дописать его
|
| |
|
|
|
|
|
|
|
для: dirol
(17.11.2011 в 15:13)
| | Ммм... Если честно не знаю, так как логика приложения мне до конца не понятна. Лучше будет создать небольшой API, который будет содержать три функции - извлечения массива из cookie, запись массива в cookie и отображение корзины. Тогда проектировать корзину станет намного проще. | |
|
|
|
|
|
|
|
для: cheops
(17.11.2011 в 14:37)
| | нет , хочется без дублирования.
куда правильно вставить ваш код в данную функцию?
<?php
function add_basket2(){
global $db, $prefix, $confso;
$cid = intval($_REQUEST['id']);
$vote_check = ($_REQUEST['vote']);
for ($i = 0; $i < (17); $i++) {
$size[] = trim(str_replace(array("'", '"', " ", " ", ":", ";", ".", "(", ")"), "", ($_REQUEST["size".$i.""])));
}
for ($a = 0; $a < (17); $a++) {
$text[] = ($_REQUEST["text".$a.""]);
}
$text=array_diff($text,array(""));
$size=array_diff($size,array(""));
for ($i = 0; $i < count($size); $i++) {
if($text[$i]!=0){
$finish[] = $id."-".$size[$i]."-".$text[$i];
}
}
$finish = implode("|", $finish);
if ($cookies) {
$info = ("".$cookies."".$finish."");
setcookie("shop", ($info), time() + 86400);
} else {
setcookie("shop", ($finish), time() + 86400);
$info = ($finish);
}
show_basket($info, $cid, $typ);
}
?>
|
| |
|
|
|
|
|
|
|
для: dirol
(17.11.2011 в 14:02)
| | Погодите, у вас в cookie не должно быть одинаковых ключей, предполагается, что вы действуете как-то так
<?php
// Исходные данные
$cookie = "91-44164-30|91-46170-10|91-48170-22|11-XL170-22";
// Преобразуем сроку в массив
$items = explode("|", $cookie);
$products = array();
for($i = 0; $i < count($items); $i++)
{
if(empty($items[$i])) continue;
list($id, $sizes, $totals) = explode("-", $items[$i]);
$products[$id][$sizes] = $totals;
}
// Выводим промежуточный результат
echo "<pre>";
print_r($products);
echo "</pre>";
// Увеличиваем количество товаров для id = 11
$products[11]['XL170'] += 10;
// Преобразуем массив обратно в строку
$subcookie = array();
foreach($products as $id => $sizes)
{
foreach($sizes as $size => $total)
{
$subcookie[] = $id."-".$size."-".$total;
}
}
$cookie = implode("|", $subcookie);
echo $cookie;
?>
| если же все-таки дублирующие записи в cookie необходимы и никуда от них не деться, то при первой же возможности их нужно сворачивать, для этого, в приведенном выше коде, строку
$products[$id][$sizes] = $totals;
| следует заменить на
$products[$id][$sizes] += $totals;
|
| |
|
|
|
|
|
|
|
для: dirol
(17.11.2011 в 14:02)
| |
$cookies = ($_COOKIE['shop']) ? ($_COOKIE['shop']) : "" ;
$str = str_replace(" ", "", $cookies);
$elements = explode("|", $str);
$text=array_diff($text,array(""));
$size=array_diff($size,array(""));
for ($i = 0; $i < count($size); $i++) {
if($text[$i]!=0){
list($id, $sizes, $totals) = explode("-", $elements[$i]);
$finish.="$cid-$size[$i]-$text[$i]|";
}
}
|
понамутил | |
|
|
|
|
|
|
|
для: dirol
(16.11.2011 в 13:32)
| | все выдохся, не получается
в кукисах хранится 91-44164-30|91-46170-10|91-48170-22|11-XL170-22|11-XL170-10|
первое это id товара - потом размер - количество
человек заказал товар потом еще раз добавил туже самую позицую, докупил ее как бы. она тоже заносится в кукисы но дублируется.
не могу понять как разабрать кукисы на предмет к примеру,
найти 11-XL170 и к его количеству 22 шт прибавить еще 10 шт | |
|
|
|
|
|
|
|
для: dirol
(16.11.2011 в 11:19)
| | все победил! | |
|
|
|
|
|
|
|
для: dirol
(16.11.2011 в 10:36)
| | вроде собрал
for ($i = 0; $i < (11); $i++) {
$size[] = trim(str_replace(array("'", '"', " ", " ", ":", ";", ".", "(", ")"), "", ($_REQUEST["size".$i.""])));
}
for ($a = 0; $a < (11); $a++) {
$text[] = ($_REQUEST["text".$a.""]);
}
$text=array_diff($text,array(""));
$size=array_diff($size,array(""));
for ($i = 0; $i < count($size); $i++) {
$finish.="$cid-$size[$i]-$text[$i]|";
}
|
| |
|
|
|
|
|
|
|
для: cheops
(15.11.2011 в 18:33)
| | сделал на ajax передачу размеров и количество товаров
Array
(
[0] => L 170
[1] => M 170
[2] => S 170
[3] => XL 170
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
)
Array
(
[0] => 55
[1] => 55
[2] => 55
[3] => 55
[4] =>
[5] =>
[6] =>
[7] =>
[8] =>
[9] =>
[10] =>
)
|
и есстествно id товара
как все собрать и превести к виду, который был указан выше, 48273-2-21
id -size-count | |
|
|
| |
|