Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123

LazyPay и добавление/редактирование товара

07.05.2015, 12:32. Показов 2710. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Надеюсь по названию тему Вы уже понимаете о чем пойдет речь и я попытаюсь объяснить максимально детально и понятно (по возможности).

Я добавляю товар, указываю там к примеру 10 строк для продажи (кто знаком с движком, тот поймет о чем я), указываю остальные данные (цена, название, т.д.) и сохраняю. Вот товар в магазине, все нормально, не кто еще не купил его.

И так...

Я захотел добавить еще 5 строк к этому товару. Открываю я значит редактор этого товара и к примеру отхожу от компа на 5 минут. За эти 5 минут как оказалось 1 покупатель купил уже 2 строки, но я этого не знал. Я значит скопировал 5 строк (которые хотел добавить 5 минут назад) и вставил в соотв. поле для продажи. Сохранил.

В итоге получается что товар в количестве 15, а не 13, т.к. в редакторе товара были уже те строки, которые купил 1 человек и поэтому их кто-то может купить снова.

P.S. Вы можете сказать типо: "Зачем ты отходил на 5 минут, добавил бы сразу и усе", но нет, допустим пока я копирую новые 5 строк (к примеру 10 секунд), то за это время кто-то все же может успеть купить этот товар.
Даже если я заранее скопировал 5 строк и у меня есть 3 секунды чтобы отредактировать товар, но даже за такое время кто-то может купить товар и купленные строки не удалятся после сохранения.

Варианты решения были такие:
- отключение товара на сайте (чекбокс к примеру в списке всех товаров (и дополнительно блокировка покупки товара для тех, кто уже собрался его покупать))
- добавление новых строк сразу в базу и в конец списка (не открывая редактор товара, чтобы не сохранить уже купленные строки)

Но с моими знаниями PHP это все очень сложно. Версия движка 2.0. Если нужны какие то файлы - говорите.

Так же хочу извиниться если обратился не туда, здесь целая куча категорий и я надеюсь что выбрал верную.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2015, 12:32
Ответы с готовыми решениями:

Оплата, как в Lazypay
Здравствуйте, хочу сделать свой нормальный скрипт без дыр типа Lazypay. Хочу сделать оплату как там. Наприер человек выбирает товар,...

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

Добавление товара в массив
Добрый день. Столкнулся с такой проблей. На странице имеются товары, на них же кнопки "Заказать". При нажатии срабатывает...

25
Заблокирован
07.05.2015, 13:52
Ну так убери из редактирования колонку с количеством.
Для добавления(удаления) именно количества напиши отдельный модуль.
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
07.05.2015, 23:50  [ТС]
Не умею я такого. Нашел еще 1 вариант. Пока не знаю как описать, времени нет.
Можете помочь с чекбоксом для каждого товара? Мне кажется это будет лучший вариант. Я просто не умею работать в базой и не знаю какие запросы нужны.
И как сделать проверку на сайте, чтобы товар не отображался, а у кого вдруг страница товара уже открыта - не покупался.

Добавлено через 5 часов 50 минут
Я смог сделать чекбокс для товаров (изначально значение "0"), но как сделать чтобы при нажатии на чекбокс в базе значение менялось?

Скриншот:
Миниатюры
LazyPay и добавление/редактирование товара  
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
08.05.2015, 13:35  [ТС]
Я уже сделал проверку на чекбокс. Если значение 0, то товар купить нельзя. Помогите же сделать чтобы при нажатии на чекбокс изменялось значение
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
08.05.2015, 18:28
Цитата Сообщение от maksam07 Посмотреть сообщение
Помогите же сделать чтобы при нажатии на чекбокс изменялось значение
если тебе надо автоматом (без перезагрузки) изменять значение выбранного значения то нужен ajax, а если при передачи данных то просто принимай значения отмеченых чекбоксов и изменяй значения в БД
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
08.05.2015, 18:30  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
если тебе надо автоматом (без перезагрузки) изменять значение выбранного значения то нужен ajax, а если при передачи данных то просто принимай значения отмеченых чекбоксов и изменяй значения в БД
мне хоть с перезагрузкой, вообще без разницы как, просто я не знаю как сделать, а лишний раз лезть в базу и меня значение в ручную не всегда удобно. Даже то что ты написал я не понял, мне бы пример какой то, я б может смог от него оттолкнуться.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
08.05.2015, 18:32
вот не большой пример
PHP
1
2
3
4
$uslugi_id = $_POST['cheked_id']; // это значение отмеченого чекбокса
foreach ($uslugi_id as $id) {
$result = mysqli_query ($link, "INSERT INTO uslugi (uslugi_name) VALUES ('value') WHERE id=$id");
}
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
08.05.2015, 22:49  [ТС]
Я еще не понимаю как сделать скрытие не активного товара. Вроде и весь движок облазил и не нашел. Кто работал с LazyPay, помогите, где проверку нужно сделать, в каком файле?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 00:18
Цитата Сообщение от maksam07 Посмотреть сообщение
где проверку нужно сделать, в каком файле
там где вывод идет, делаешь проверку
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 00:24  [ТС]
Дело в том, что я не нашёл где идёт вывод. Точнее нашёл, но там вывод всех товаров одной строкой идёт, и в этом файле проверка только на тип продажи (файл/строка). Не знаю как скрывать весь товар или что ещё.. Могу или все сразу убрать или все сразу показать если не сложно, можешь глянуть код, как пришлю? Файл только днём смогу прислать..
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 00:30
maksam07, выкладывай сюда
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 00:36  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
выкладывай сюда
Весь код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
class goods extends FE_Controller {
    function __Construct() {
        parent::__construct();
        $this->load->model('goods_model');
        $this->load->model('page_model');
    }
    public function index()
    {
        $items = $this->goods_model->get();
        foreach($items as $item) {
            if($item->sell_method == 0)
            {
                $filename = preg_replace('/[^\p{L}\p{N}\s]/u','', md5(config_item('encryption_key').$item->name));
                $uppath = './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u','', md5(config_item('encryption_key').$filename.$item->name)).'/';
                $data = file($uppath.$filename);
                if(empty($data)) 
                {
                    $item->count = '0';
                }
                else
                {
                    if($item->show == 0)
                    {
                        $item->count = '0';
                    }
                    else
                    {
                        $item->count = count($data);
                        $item->goods = "";
                    }
                }
            }
            elseif($item->sell_method == 1)
            {
                $item->count = 'Файл';
                $item->goods = "";
            }           
            elseif($item->sell_method == 2)
            {
                $filename = preg_replace('/[^\p{L}\p{N}\s]/u','', md5(config_item('encryption_key').$item->name));
                $uppath = './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u','', md5(config_item('encryption_key').$filename.$item->name)).'/';
                $data = file_get_contents($uppath.$filename);
                $data = explode("[sep]",$data);
                if(empty($data)) 
                {
                    $item->count = '0';
                }
                else
                {
                    $item->count = count($data);
                    $item->goods = "";
                }
            }
        }
        $ret = array();
        $WMR = $this->config->item('WMR');
        $WMZ = $this->config->item('WMZ');
        $YAD = $this->config->item('yad_wallet');
        $QIWI = $this->config->item('qiwi_num');
        if(!empty($WMR)) {
            $ret[] = array(
            'fundid' => '1',
            'fundname' => 'WMR'
            );
        }
        
        if(!empty($WMZ)) {
            $ret[] = array(
            'fundid' => '2',
            'fundname' => 'WMZ'
            );
        }
        
        if(!empty($YAD)) {
            $ret[] = array(
            'fundid' => '3',
            'fundname' => 'Яндекс.Деньги'
            );
        }       
        
        if(!empty($QIWI)) {
            $ret[] = array(
            'fundid' => '4',
            'fundname' => 'QIWI'
            );
        }
        
        $this->data['funds'] = $ret;
        $this->data['items'] = $items;
        $this->data['modals'] = get_modals($items);
        $this->data['title'] = '';
        $this->data['subview'] = 'items';
        $this->load->view('main_layout',$this->data);
        
    }
    
}
?>
За отображение всего товара отвечает строка:
PHP
1
$this->data['items'] = $items;
Я сделал что если товар якобы не активен, то количество товара устанавливается - 0. Это первое решение, которое я нашел. Но мне нужно чтобы товар скрывался вообще.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 16:03
maksam07, извини с PDO туговато, но как вариант попробуй замени
Цитата Сообщение от maksam07 Посмотреть сообщение
if(empty($data))
* * * * * * * * {
* * * * * * * * * * $item->count = '0';
* * * * * * * * }
* * * * * * * * else
* * * * * * * * {
* * * * * * * * * * $item->count = count($data);
* * * * * * * * * * $item->goods = "";
* * * * * * * * }
на
PHP
1
2
3
4
5
if(!empty($data)) 
        {
            $item->count = count($data);
            $item->goods = "";
         }
если не пусто то выводить
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 16:27  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
на
как я понял этот код значит, что если $data пустое, то нужно установить количество $data?
Я просто не пойму к чему ты это, это вроде не отвечает за скрытие товара.

Добавлено через 20 минут
Цитата Сообщение от Виталюска Посмотреть сообщение
если не пусто то выводить
Как я понял это проверка на то что, есть в файле строки или он пустой? Но дело не в этом, если удалить весь код от foreach($items as $item) { и до закрывающей } то вывод товара все равно будет, только не будет указано количество товара.
за вывод товара отвечает строка
PHP
1
$this->data['items'] = $items;
$items - это переменная или нет? я просто не очень понимаю. Вот есть такой вариант: сделать проверку товара на количество, и если товара > 0, то он записывается к примеру в переменную $items_new, и тогда вместо
PHP
1
$this->data['items'] = $items;
использовать
PHP
1
$this->data['items'] = $items_new;
или
PHP
1
$this->data['items_new'] = $items_new;
(не знаю как правильнее будет)
Надеюсь ты понял о чем я. Мне короче нужен код, который будет записывать данные с $items в $items_new после проверки на количество товара (а проверка на количество у меня уже прописана(то есть, если товар скрыт, то пишет что его 0))
PHP
1
2
3
4
5
6
7
8
9
if($item->show == 0)
{
   $item->count = '0';
}
else
{
   $item->count = count($data);
   $item->goods = "";
}
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 21:18
maksam07, я уже писал что плохо понимаю PDO но попробуй что то вроде этого тогда
PHP
1
2
3
4
5
6
7
8
if ($item != 0) { 
        $this->data['funds'] = $ret;
        $this->data['items'] = $items;
        $this->data['modals'] = get_modals($items);
        $this->data['title'] = '';
        $this->data['subview'] = 'items';
        $this->load->view('main_layout',$this->data);
       }
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 21:26  [ТС]
Виталюска, это тоже не то. Получается если товара нет, то главная страница вообще будет пустая.
Ты мне скажи как перенести данные с $items в другую переменную? А между переносом данных я сделаю проверку на количество товара. Так должно быть правильно, просто я не знаю как переносить.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 21:36
maksam07, я же написал что плохо это понимаю, но наверно так
PHP
1
$this->$items = $items_new;
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 21:46  [ТС]
Виталюска, я почти это и имел в виду, но так оно сразу сохраняет в другую переменную, а как сделать чтобы по одной сохраняло в ту же переменную? По примеру метода продажи можно глянуть, но я там толком не многое понимаю) там проверяется каждый товар на метод продажи и количество товара, вот по тому примеру надо сделать чтобы проверяло целую переменную по одному товару, и если товара больше 0, то оно записывает этот товар в $items_new переменную. Может я и сам разберусь, просто сейчас времени нет. В течении часа думаю гляну
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
09.05.2015, 21:52
maksam07, sory но тут я не помошник
0
1 / 1 / 1
Регистрация: 27.12.2012
Сообщений: 123
09.05.2015, 22:22  [ТС]
Цитата Сообщение от Виталюска Посмотреть сообщение
sory но тут я не помошник
В общем это моя тупость, не досмотрел я код. Оказывается можно было прямо в шаблоне сделать проверку, что я сейчас и сделал. Товар успешно скрывается. Спасибо за то что откликнулся, осталась еще одна не большая проблемка (сохранение данных по нажатию на чекбокс), но я думаю она мне мешать сильно не будет, оставлю пока все как есть, буду через mysql редактировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2015, 22:22
Помогаю со студенческими работами здесь

Как исправить оплату QIWI в LazyPay
Ребята, кто может помочь с оплатой QIWI в скрипте LazyPay? Проблема в том, что сам скрипт не видит оплату. Файлы с оплатой прикрепил...

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

Исправить добавление товара в корзину
Помогите исправить код. На какую ссылку не нажми, по порядку в корзину добавляет все товары и потом постоянно последний товар... &lt;?php...

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

Как реализовать добавление товара в определённую категорию?
Как сделать, чтобы при добавлении товара. У него создавалась своя страница со своим адресом, и он добавлялся в категорию,которая была...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru