Я создаю форму редактирования и хотел бы получить значения:
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>