создать опцию из 2 таблиц базы данных в codeigniter - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть 2 таблицы базы данных:

1. Таблица для категорий

enter image description here

2.таблицы для опций, основанных на этих категориях.

enter image description here

Я хочу создать группу выбора на основе категорий.

enter image description here

Мой код:

function config_cat($idVps){
		$this->db->select("*");
		$this->db->from("tbcategory_config as a");
		$this->db->join("tbconfig_option as b", "a.id_category = b.id_category");
		$this->db->where("id_vps",$idVps);
		$hasil = $this->db->get();
		return $hasil;
	}

<?php foreach($configcat->result_array() as $row):
									$category =$row['name'];
									$detailCon =$row['detail_config'];
							?>
							<div class="form-group col-md-12">
								<label><?php echo htmlentities($category, ENT_QUOTES, 'UTF-8'); ?></label>
								<select>
									<option><?php echo htmlentities($detailCon, ENT_QUOTES, 'UTF-8'); ?></option>
								</select>
							</div>
							<?php endforeach; ?>	

Я ожидаю, что на выходе появится опция выбора для «Обновление оперативной памяти» = 1. 1 ГБ, 2. 2 ГБ

и

«Обновление ядра» = 1 ядро ​​

Но фактический результат - баран обновления, отображаемый дважды. (на основе 3-го рисунка выше)

1 Ответ

0 голосов
/ 30 апреля 2019

Не обязательно оптимальный подход, но вы можете легко решить эту проблему, не используя предложение join, и иметь отдельные переменные с родительскими категориями и их дочерними элементами.

Вы не показываете свой контроллер, поэтомуне совсем просто сделать предложение, но попробуйте что-то вроде этого:

В вашем контроллере: Имейте две отдельные переменные, заполненные двумя отдельными вызовами модели.Один с содержимым вашей таблицы categories, а другой с содержимым вашей таблицы options.Крайне важно, чтобы оба содержали поле category_id

На ваш взгляд: Вам нужны два вложенных цикла foreach.Самый внешний цикл по категориям.Самая внутренняя петля опций.

<?php
foreach ($categories as $c)
{ ?
  <select name="<?php echo $c->category_id; ?>">
    <?php
    foreach ($options as $o)
    {
      if ($o->category_id == $c->category_id)
      { ?>
        <option value="<?php echo $o->option_id; ?>"><?php echo $o->option_name; ?>
</option>
      <?php 
      } ?>
  </select>
<?php
}
?>

измените вышеприведенное, чтобы использовать ваши собственные имена переменных.Таким образом, у вас будет один элемент SELECT для каждой категории, заполненный таким количеством элементов OPTION, сколько есть вариантов с той же категорией

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