Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Записать данные из формы в SQL


Recommended Posts

Привет всем!

Изучаю активно opencart возможности и сейчас возникла задача сделать таблицу с данными.

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

 

Могли бы подсказать, что я делаю не так.

 

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

 

Страница отображается с admin/view/template/common/lepingud.twig

Контроллер берётся с admin/controller/common/lepingud.php

 

Для попытки добавить данные используются следующие данные:

Файл контроллера, который будет отвечать за обработку данных формы `admin/controller/extension/form.php`.

<?php
class ControllerExtensionForm extends Controller {
  public function index() {
    $this->load->language('extension/form');

    $data['heading_title'] = $this->language->get('heading_title');
    $data['text_success'] = $this->language->get('text_success');

    if ($this->request->server['REQUEST_METHOD'] == 'POST') {
      $this->load->model('extension/form');

      $this->model_extension_form->addFormData($this->request->post);

      $this->session->data['success'] = $data['text_success'];

      $this->response->redirect($this->url->link('extension/form'));
    }

    $data['breadcrumbs'] = array();

    $data['action'] = $this->url->link('extension/form');
    $data['heading_title'] = $this->language->get('heading_title');

    $data['entry_name'] = $this->language->get('entry_name');
    $data['entry_email'] = $this->language->get('entry_email');
    $data['entry_message'] = $this->language->get('entry_message');

    $data['button_submit'] = $this->language->get('button_submit');

    $this->response->setOutput($this->load->view('extension/form', $data));
  }
}


 

Файл модели, который будет добавлять данные из формы в базу данных MySQL.  `admin/model/extension/form.php`.

php
<?php
class ModelExtensionForm extends Model {
  public function addFormData($data) {
    $sql = "INSERT INTO " . DB_PREFIX . "form_data SET name = '" . $this->db->escape($data['name']) . "', email = '" . $this->db->escape($data['email']) . "', message = '" . $this->db->escape($data['message']) . "'";
    $this->db->query($sql);
  }
}


Файл представления для формы. admin/view/template/common/lepingud.twig

{% if success %}
    <p class="alert alert-success">{{ success }}</p>
{% endif %}

<form action="{{ action }}" method="post">
  <div class="form-group">
    <label>{{ entry_name }}</label>
    <input type="text" name="name" value="{{ name }}" class="form-control" required>
  </div>
  <div class="form-group">
    <label>{{ entry_email }}</label>
    <input type="email" name="email" value="{{ email }}" class="form-control" required>
  </div>
  <div class="form-group">
    <label>{{ entry_message }}</label>
    <textarea name="message" class="form-control" required>{{ message }}</textarea>
  </div>
  <div class="form-group text-center">
    <button type="submit" class="btn btn-primary">{{ button_submit }}</button>
  </div>
</form>

 

Файл перевода проблем, думаю, не вызовет, указывать не буду.

 

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

Заранее спасибо.

Надіслати
Поділитися на інших сайтах


15.04.2023 в 17:43, Yurasic сказал:
$data['action'] = $this->url->link('extension/form');

Урл не правильно формируется - нужно еще токен указывать.

$data['action'] = $this->url->link('extension/form', 'user_token=' . $this->session->data['user_token'], true);

 

Надіслати
Поділитися на інших сайтах

$this->response->setOutput($this->load->view('extension/form', $data));

Кстати, тут написал ошибочно, тут должно быть

 

$this->response->setOutput($this->load->view('common/lepingud', $data));

 

Изменение в программе, также, не дало результата.

Надіслати
Поділитися на інших сайтах


15.04.2023 в 20:24, Yurasic сказал:

Я добавил информацию на страницу, но к сожалению, ничего не изменилось. Всё так же.

проверьте что приходит по POSTу

и закоментируйте временно редирект, а то не увидите что в ПОСТе

if ($this->request->server['REQUEST_METHOD'] == 'POST') {
      $this->load->model('extension/form');
var_dump($this->request->post);
      //$this->model_extension_form->addFormData($this->request->post);

      $this->session->data['success'] = $data['text_success'];

      //$this->response->redirect($this->url->link('extension/form'));
    }

 

Надіслати
Поділитися на інших сайтах

15.04.2023 в 23:57, Yurasic сказал:

Подскажите, пожалуйста, в каком файле и как лучше проверить post?!

 

там же в указанном Вашем файле - var_dump($this->request->post);

 

15.04.2023 в 17:43, Yurasic сказал:

Файл контроллера, который будет отвечать за обработку данных формы `admin/controller/extension/form.php`.

 

я даже показал где и как (можно и модель временно закоментить)

 

15.04.2023 в 21:29, vier сказал:

и закоментируйте временно редирект, а то не увидите что в ПОСТе

if ($this->request->server['REQUEST_METHOD'] == 'POST') {
      $this->load->model('extension/form');
var_dump($this->request->post);
      //$this->model_extension_form->addFormData($this->request->post);

      $this->session->data['success'] = $data['text_success'];

      //$this->response->redirect($this->url->link('extension/form'));
    }

 

 

Надіслати
Поділитися на інших сайтах

В 16.04.2023 в 05:39, Yurasic сказав:

Спасибо Вам за отзывчивость!

Справился сам. Переделал структуру файлов и всё работает. 

пожалуйста.

указали бы, что не так было в Вашей структуре файлов.

ведь возможно кому-то ещё придется столкнутся с подобной проблемой...

Надіслати
Поділитися на інших сайтах

Дело в том, что пункт меню в админке я создал в common/lepingud, а код работы программы я хотел вставить в extension/form, но я не умею это делать правильно. поэтому я создал модель и контроллер в common/lepingud, чтобы совпадало с twig расположением и тогда всё заработало.

Надіслати
Поділитися на інших сайтах


Но у меня сейчас возникла другая сложность.

Я использую одно и тоже модальное окно для добавления и редактирования SQL. Сейчас у меня работает добавление, однако редактирование я не знаю как добавить.

Как я понимаю логику, мне нужно создать переменную в twig (Если значения редактируются, то дать ей значение 1, если добавляются, то значение 0). А уже в контроллере, сделать проверку, если значение переменной в twig 0, тогда выполнить в модели функцию добавления, а если 1, то выполнить в модели функцию исправления. В twig это работает и значение присваивается верное.

Но я не понимаю, как передать переменную из twig в контроллер без нажатия кнопки. Наоборот понимаю, а вот в таком направлении нет.

 

Есть мысли, как это лучше сделать?!

Спасибо

Змінено користувачем Yurasic
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.