Intereting Posts
PHP: создание экземпляра класса из переменной нечетно не выполняется PHP MySQL Выберите ID из одной таблицы и информации из другой таблицы Насколько безопасным (упрочненным) является этот скрипт? Преобразование переменной Javascript в переменную PHP Как настроить пользовательские заголовки в PHP Использование контроллера для обработки возвращаемых настраиваемых файлов css и javascript с помощью codeigniter Regex / PHP Заменить любую повторяющуюся (но гибкую) группу слов Публикация данных для самостоятельного использования с помощью jquery Объединить 2 массива и суммировать значения (числовые клавиши) Извлечение внутренней информации EXE PHP и MYSQL отображают 1 запись с несколькими именами PHP – вычесть даты в рабочие дни и часы работы с использованием завитка с простым хмльдом Установка Pear Extension с установщиком PHP Параметры маршрута Laravel 4 для REST

отображать данные из базы данных в раскрывающийся список CodeIgniter

У меня возникают трудности с отображением данных из db в раскрывающийся список.

Вот что я пробовал:

Model.php

public function __construct() { parent::__construct(); } function getAllGroups() { /* $query = $this->db->get('location'); foreach ($query->result() as $row) { echo $row->description; }*/ $query = $this->db->query('SELECT description FROM location'); foreach ($query->result() as $row) { echo $row->description; } //echo 'Total Results: ' . $query->num_rows(); } 

controller.php

  <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Delivery_controller extends CI_Controller{ public function __construct() { parent::__construct(); $this->load->model('delivery_model'); } public function index() { $data['title']= 'Warehouse - Delivery'; $this->load->view('include/header',$data); $this->load->view('include/navbar',$data); $this->load->view('delivery_view', $data); $this->load->view('include/sidebar',$data); $this->load->view('include/footer',$data); $data['groups'] = $this->delivery_model->getAllGroups(); } } 

view.php

  <select class="form-control"> <?php $data = $this->delivery_model->getAllGroups(); foreach($description as $each) { ?><option value="<?php echo $each['description']; ?>"><?php echo $each['description']; ?></option>'; <?php } ?> </select> 

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

Вы не должны называть свою модель своей точкой зрения. Вместо этого попробуйте вызвать модель и установить $data['groups'] перед загрузкой ваших просмотров.

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

контроллер:

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Delivery_controller extends CI_Controller{ public function __construct() { parent::__construct(); $this->load->model('delivery_model'); } public function index() { $data['title']= 'Warehouse - Delivery'; $data['groups'] = $this->delivery_model->getAllGroups(); $this->load->view('include/header',$data); $this->load->view('include/navbar',$data); $this->load->view('delivery_view', $data); $this->load->view('include/sidebar',$data); $this->load->view('include/footer',$data); } } 

Модель:

  public function __construct() { parent::__construct(); } function getAllGroups() { /* $query = $this->db->get('location'); foreach ($query->result() as $row) { echo $row->description; }*/ $query = $this->db->query('SELECT description FROM location'); return $query->result(); //echo 'Total Results: ' . $query->num_rows(); } 

Посмотреть:

  <select class="form-control"> <?php foreach($groups as $row) { echo '<option value="'.$row->description.'">'.$row->description.'</option>'; } ?> </select> 

Это то, что вы должны делать:

Модель :

 public function __construct() { parent::__construct(); } function getAllGroups() { $query = $this->db->query('SELECT description FROM location'); return $this->db->query($query)->result(); } 

Контроллер :

 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Delivery_controller extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('delivery_model'); } public function index() { $data['title']= 'Warehouse - Delivery'; $data['groups'] = $this->delivery_model->getAllGroups(); //I take here a sample view, you can put more view pages here $this->load->view('include/header',$data); } } 

Вид :

 <select class="form-control"> <?php foreach($groups as $each){ ?> <option value="<?php echo $each->description; ?>"><?php echo $each->description; ?></option>'; <?php } ?> </select> 

Никогда не вызывать модель из представления. Это выполнимо, но вы снова теряете смысл использования MVC. Вызовите модель из своего контроллера. Получите данные и передайте данные в свое представление.

Используйте, как показано ниже.

 public function index(){ $data['title']= 'Warehouse - Delivery'; $data['groups'] = $this->delivery_model->getAllGroups(); $this->load->view('include/header',$data); $this->load->view('include/navbar',$data); $this->load->view('delivery_view', $data); $this->load->view('include/sidebar',$data); $this->load->view('include/footer',$data); } 

На ваш взгляд, просто обведите вокруг переменной $groups и echo в раскрывающемся списке.

 <select class="form-control"> <?php $i = 0; while($i < count($groups)){ $val= $groups[$i]['value']; $des = $groups[$i]['description']; echo "<option value='$i'>$des</option>"; } </select> 

И функция вашей модели должна быть,

 function getAllGroups(){ $query = $this->db->get('location'); return $query->result_array(); } 

Codeigniter уже имеет специализированные функции, которые минимизируют количество html, которое вы должны сбросить в своем коде:

Модель

 public function description_pulldown(){ $this->db->from('location'); $query = $this->db->get(); foreach($query->result() as $row ){ //this sets the key to equal the value so that //the pulldown array lists the same for each $array[$row->description] = $row->description; } return $array; } 

контроллер

 public function index(){ $data['description_list'] = $this->delivery_model->description_pulldown(); //load all of your view data $this->load->view('delivery_view', $data); } 

Посмотреть

 echo form_label("Description"); echo form_dropdown('description', $description_list, set_value('description'), $description_list); 

Если вам нужно, чтобы представление вытягивало предыдущие данные в раскрывающемся списке, вы можете сделать цикл foreach, чтобы получить предыдущее значение выпадающего списка из базы данных, то есть … $ description = $ item-> description; и в представлении измените «set_value (« описание ») на просто« описание ».

Лучше, на мой взгляд, лучше использовать:

На вашей модели получите все свои данные в массиве с:

 public function get_all_description() { $query = $this->db->get('description'); return $query->result_array(); } 

В контроллере:

 $data['description']=$this->model->get_all_description(); 

Ввиду:

 for($i=0;$i<sizeof($description);$i++) { $description2[$description[$i]['description']]=$marque[$i]['description']; } echo form_dropdown('description', $description22, set_value('description'));