столкнулся с проблемой: Код не обрабатывает запрос

Swipe

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

P.S. После нажатия на кнопку "купить" выводит ошибку с текстом "не достаточно денег"

PHP:
  1. public function buy($id)
  2. {
  3. $default = $this->load->database('default', TRUE, FALSE);
  4. $id = preg_replace('/[^0-9]/', '', $id);
  5. $bil = $this->load->database('billing', TRUE, FALSE);
  6. $template = $bil->get_where('market_templates', array('id' => $id))->result();
  7. $site = $bil->get_where('arenda', array('domain' => $_SERVER['HTTP_HOST']))->result();
  8. $user = $bil->get_where('arenda', array('id' => $site[0]->user_id))->result();
  9. $buy = $bil->get_where('market_prices', array('id_user' => $user[0]->id , 'id_template' => $id))->result();
  10. if (empty($buy[0]->id)) { $buy = "0";} else { $buy = "1"; }
  11. if ($template[0]->price == 0 or $buy == 1 ) {
  12. echo 'sweetAlert("Ошибка", "Вы уже приобрели данный шаблон .", "error");';
  13. } elseif($user[0]->money < $template[0]->price) {
  14. echo 'sweetAlert("Ошибка", "У вас недостаточно денег на балансе .", "error");';
  15. } else {
  16. $balance = $user[0]->money - $template[0]->price ;
  17. $data = array('money' => $balance);
  18. $bil->where('id', $user[0]->id);
  19. $bil->update('users', $data);
  20. $data = array( 'id_user' => $user[0]->id , 'id_template' => $id );
  21. $bil->insert('market_prices', $data);
  22. echo 'swal("Успех!", "Вы успешно купили данный шаблон .", "success");location.reload(true);';
  23. }
  24. }
 

DIG

Новичок
Партнер клуба
Код хорошо бы форматировать как код. (В редакторе сообщения Вставить->Код->php)
Ну а по вопросу - возможно там действительно "недостаточно денег".
В общем вам поможет отладка.
 

Swipe

Новичок
Добавил file_put_contents('errat.txt', "Сайт: $site, Юзер: $user");
Код с errat.txt
Код:
Сайт: Array, Юзер: Array
Вот весь код обработчик оплаты
PHP:
   public function buy($id)
    {
        $default   = $this->load->database('billing', TRUE, FALSE);
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('arenda', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('arenda', array('id' => $site[0]->user_id))->result();
        $buy = $bil->get_where('market_prices', array('id_user' => $user[0]->id , 'id_template' => $id))->result();
        if (empty($buy[0]->id)) { $buy = "0";} else { $buy = "1"; }
        if ($template[0]->price == 0 or  $buy == 1 ) {
            echo 'sweetAlert("Ошибка", "Вы уже приобрели данный шаблон .", "error");';
        } elseif($user[0]->money < $template[0]->price) {
            echo 'sweetAlert("Ошибка", "У вас недостаточно денег на балансе .", "error");';
            file_put_contents('errat.txt', "Сайт: $site, Юзер: $user");
        } else {
            $balance = $user[0]->money - $template[0]->price ;
            $data = array('money' => $balance);
            $bil->where('id', $user[0]->id);
            $bil->update('arenda', $data);
            $data = array( 'id_user' => $user[0]->id , 'id_template' => $id );
            $bil->insert('market_prices', $data);
            echo 'swal("Успех!", "Вы успешно купили данный шаблон .", "success");location.reload(true);';
        }
    }
 

antson

Новичок
Партнер клуба
на сколько помню в класс активрекорд кодеигнитора работает только с одним подключением.
 

antson

Новичок
Партнер клуба
для начала посмотреть версию кодеигнитора. Они этот класс меняли. Потом посмотреть в документации про костыль в виде глобальной переменной.
Читай документацию. Там есть раздел про работу с двумя подключениями.

можно выкрутиться малой кровью если обе субд на одном сервере и пользователь имеет доступ к обоим.
в этом случае имена таблиц нужно писать так база.таблица
 

Andkorol

Новичок
PHP:
        $default   = $this->load->database('billing', TRUE, FALSE);
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
Какой смысл заводить $default – если в методе эта переменная не используется, да и к тому же подключаемся дважды к одной и той же БД ('billing')?
И что, в CodeIgniter уже не модно использовать модели?
 

Swipe

Новичок
Какой смысл заводить $default – если в методе эта переменная не используется, да и к тому же подключаемся дважды к одной и той же БД ('billing')?
И что, в CodeIgniter уже не модно использовать модели?
Код был написан не мною,я изменил немного (подставил свои значения и тд)
 

antson

Новичок
Партнер клуба
@Swipe, версия кодеигнитера часом не 1.x (1.7.2)?
если да. Поздравляю тебе досталось жуткое легаси. Написанное в то время когда народ переходя с четверки лепил все как привык в контролеры.
 

Swipe

Новичок
@Swipe, версия кодеигнитера часом не 1.x (1.7.2)?
если да. Поздравляю тебе досталось жуткое легаси. Написанное в то время когда народ переходя с четверки лепил все как привык в контролеры.
Версия 2.1.4
Вряд ли уж код не рабочий (так как дизайн бесплатный устанавливается), а вот вывод баланса и покупка не рвботает
 

Swipe

Новичок
Вот исходный код (который взял с интернета)

PHP:
<?php
class market extends Admin_Controller
{
    function __Construct()
    {
        parent::__construct();
        $this->load->model('market_model');
        if (in_array($this->session->userdata('group'), array("2"))) {show_404(); exit;
        }
    }
    
    public function index()
    {
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $templates = $bil->get('market_templates');
        $this->data['templates'] = $templates->result();
        $this->data['subview'] = 'admin/market/index';
        $this->load->view('admin/layout_main', $this->data);
    }
    public function view($id)
    {
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id));
        $site = $bil->get_where('sites', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $buy = $bil->get_where('market_prices', array('id_user' => $site[0]->user_id , 'id_template' => $id))->result();
        if (empty($buy[0]->id)) { $buy = "0";}  else { $buy = "1"; }
        $this->data['buy'] = $buy;
        $this->data['template'] = $template->result();
        $this->data['subview'] = 'admin/market/view';
        $this->load->view('admin/layout_main', $this->data);
    }
    public function install($id)
    {
        $default   = $this->load->database('default', TRUE, FALSE);
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('sites', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('profiles', array('id' => $site[0]->user_id))->result();
        $buy = $bil->get_where('market_prices', array('id_user' => $user[0]->id , 'id_template' => $id))->result();
        if (empty($buy[0]->id)) { $buy = "0";} else { $buy = "1"; }
        if ($template[0]->price == 0 or  $buy == 1) {
            $data = array('value' => $template[0]->tpl_main); $default->where('key', 'main'); $default->update('config_data', $data);
            $data = array('value' => $template[0]->tpl_item); $default->where('key', 'item'); $default->update('config_data', $data);
            $data = array('value' => $template[0]->tpl_items); $default->where('key', 'items'); $default->update('config_data', $data);
            $data = array('value' => $template[0]->tpl_page); $default->where('key', 'page'); $default->update('config_data', $data);
            echo 'swal("Успех!", "Вы успешно установили данный шаблон .", "success")';
        } else {
            echo 'sweetAlert("Ошибка", "У вас не куплен данный шаблон .", "error");';
        }
    }
    public function buy($id)
    {
        $default   = $this->load->database('default', TRUE, FALSE);
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('sites', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('profiles', array('id' => $site[0]->user_id))->result();
        $buy = $bil->get_where('market_prices', array('id_user' => $user[0]->id , 'id_template' => $id))->result();
        if (empty($buy[0]->id)) { $buy = "0";} else { $buy = "1"; }
        if ($template[0]->price == 0 or  $buy == 1 ) {
            echo 'sweetAlert("Ошибка", "Вы уже приобрели данный шаблон .", "error");';
        } elseif($user[0]->money < $template[0]->price) {
            echo 'sweetAlert("Ошибка", "У вас недостаточно денег на балансе .", "error");';
        } else {
            $balance = $user[0]->money - $template[0]->price ;
            $data = array('money' => $balance);
            $bil->where('id', $user[0]->id);
            $bil->update('profiles', $data);
            $data = array( 'id_user' => $user[0]->id , 'id_template' => $id );
            $bil->insert('market_prices', $data);
            echo 'swal("Успех!", "Вы успешно купили данный шаблон .", "success");location.reload(true);';
        }
    }
    public function balance()
    {
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('sites', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('profiles', array('id' => $site[0]->user_id))->result();
        echo $user[0]->money;
    }
    public function login()
    {
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('sites', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('profiles', array('id' => $site[0]->user_id))->result();
        echo $user[0]->firstname;
    }
}
?>
 

Swipe

Новичок
Без «изменил немного» – оригинальный код работает?
Не имею понятия (дизайн инсталлирует (с функции install)),а вот все остальные функции проверить не могу(так как не обрабатывает
P.S. хотя даже базу данных создал с параметрами с исходника,но не работает все кроме инсталляции
 

Andkorol

Новичок
В методе buy перед условиями сделай var_dump($user, $template, $buy);
Ну и поделись с нами, что же выведет этот var_dump на экран.
 

Swipe

Новичок
В методе buy перед условиями сделай var_dump($user, $template, $buy);
Ну и поделись с нами, что же выведет этот var_dump на экран.
Прошу за столь глупый вопрос: верно установил var_dump? Не давно начал изучение пхп(не особо разбираюсь)
PHP:
 public function buy($id)
    {
        $default   = $this->load->database('default', TRUE, FALSE);
        $id = preg_replace('/[^0-9]/', '', $id);
        $bil   = $this->load->database('billing', TRUE, FALSE);
        $template = $bil->get_where('market_templates', array('id' => $id))->result();
        $site = $bil->get_where('arenda', array('domain' => $_SERVER['HTTP_HOST']))->result();
        $user = $bil->get_where('arenda', array('id' => $site[0]->user_id))->result();
        $buy = $bil->get_where('market_prices', array('id_user' => $user[0]->id , 'id_template' => $id))->result();
        var_dump($user, $template, $buy);
        if (empty($buy[0]->id)) { $buy = "0";} else { $buy = "1"; }
        if ($template[0]->price == 0 or  $buy == 1 ) {
            echo 'sweetAlert("Ошибка", "Вы уже приобрели данный шаблон .", "error");';
        } elseif($user[0]->money < $template[0]->price) {
            echo 'sweetAlert("Ошибка", "У вас недостаточно денег на балансе .", "error");';
        } else {
            $balance = $user[0]->money - $template[0]->price ;
            $data = array('money' => $balance);
            $bil->where('id', $user[0]->id);
            $bil->update('arenda', $data);
            $data = array( 'id_user' => $user[0]->id , 'id_template' => $id );
            $bil->insert('market_prices', $data);
            echo 'swal("Успех!", "Вы успешно купили данный шаблон .", "success");location.reload(true);';
        }
 
Сверху