Получение значений до и после отправки формы - CodeIgniter - PullRequest
0 голосов
/ 03 апреля 2020

Я создаю форму редактирования и хотел бы получить значения:

a) перед отправкой формы - из БД

b) после отправки формы - от пользователя

Я изо всех сил пытаюсь сделать эту работу.

Вот так выглядит моя таблица:

CREATE TABLE `categories` (
    `cat_id` INT(5) NOT NULL AUTO_INCREMENT,
    `cat_title` VARCHAR(300) NOT NULL COLLATE 'utf8_general_ci',
    `cat_desc` VARCHAR(300) NOT NULL COLLATE 'utf8_general_ci',
    `cat_active` ENUM('Y','N') NOT NULL COLLATE 'utf8_general_ci',
    `cat_created` DATETIME NOT NULL,
    `cat_updated` DATETIME NOT NULL,
    `cat_author` INT(5) NOT NULL COMMENT 'equal to users.user_id',
    `parent_id` INT(5) NOT NULL COMMENT 'equal to categories.cat_id',
    PRIMARY KEY (`cat_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

В моей модели я объединяю две таблицы - "пользователи" и "категории":

    // get_them_all
function get_all() {
$this->db
->select( '
s.cat_title AS parentTitle,
s.cat_id AS subcatId,
u.user_login AS author,
c.*' )
->from( 'categories AS c' )
->join( 'users AS u', 'u.user_id = c.cat_author' )
->join( 'categories AS s', 's.cat_id = c.parent_id' );
return $this->db->get()->result_array();
}

И ниже мое мнение:

    <select class="custom-select" name="cat_subcat" >
<?php
foreach ( $all_categories as $category ) {
    // after sending the form take values from user
    if ( $this->input->post( 'cat_subcat' ) ) {
        $value = $category[ 'cat_id' ];
        $name = $category[ 'cat_id' ];
        $selected = ( $this->input->post( 'cat_subcat' ) == $value ) ? ' selected="selected"' : "";
    }
    // before sending the form take values from db
    else {
        $value = $category['cat_id'];
        $name = $category[ 'cat_id' ];
        $selected = ( $category['parent_id'] == $value ) ? ' selected="selected"' : "NIE";
    }
    echo '<option value="' . $value . '" ' . $selected . '>' . $name . '</option>';
    echo "\r\n";
}
?>
</select>

Может кто-нибудь объяснить, как заставить это работать, пожалуйста?

РЕДАКТИРОВАТЬ:

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

<select class="custom-select" name="cat_subcat">
<?php foreach($all_categories as $category): ?>
<option value="<?php echo $category['cat_id']; ?>"<?php echo set_select('cat_subcat', $category['cat_id'], TRUE);?>><?php echo $category['cat_title']; ?></option>
<?php endforeach; ?>
</select>

1 Ответ

0 голосов
/ 03 апреля 2020

Прочитайте о Model-View-Controller перед прочтением этого ответа.

Переместите следующий код в контроллер

if ( $this->input->post( 'cat_subcat' ) ) {
    //cat_subcat has the selected value only, no need of checking
   $selected = $this->input->post( 'cat_subcat' );
}

Измените код вида на следующий

<select class="custom-select" name="cat_subcat" >
<?php
foreach ( $all_categories as $category ) {
        $value = $category['cat_id'];
        $name = $category[ 'cat_id' ];
        $selected = ( $category['parent_id'] == $value ) ? ' selected="selected"' : "";
    echo '<option value="' . $value . '" ' . $selected . '>' . $name . '</option>';
}
?>
</select>

Надеюсь, что это полезно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...