Как отобразить отфильтрованные значения базы данных в таблице HTML, используя раскрывающийся список в CodeIgniter? - PullRequest
0 голосов
/ 26 декабря 2018

Я новичок в CodeIgniter и HMVC Framework и создаю образец выпадающего тестового изображения, чтобы получить план решения большого проекта, который у меня на этой неделе.У меня вопрос, как я могу искать и отображать отфильтрованные значения базы данных в табличном формате, используя раскрывающийся список?Например, если я выберу одно из значений в раскрывающемся списке и щелкну поиск, все извлеченные значения будут отфильтрованы и будут отображаться в соответствии со значением, выбранным в раскрывающемся списке.Вот код для примера тестового кода для выпадающего изображения:

Вот код в моей модели:

class Image_model extends CI_Model{

    function __construct(){
        parent::__construct();
    }

    /*Sample test model function for the image dropdown list*/

    //display the images table
    public function displayTableImages()
    {
        $query = $this->db->select('main_image, main_image_url');
        $query = $this->db->from('product_master');
        $query = $this->db->get();
        return $query->result();
    }

    //dropdown search list for images
    public function searchDropdownImages($type)
    {
        switch ($type) {

            case 'all':
                {
                    $query = $this->db->where("main_image != '', 'main_image_url != ''");
                }
            case 'with-image':
                {
                    $query = $this->db->where("'main_image != '', 'main_image_url != ''");
                }
            break;
            case 'no-image':
                {
                    $query = $this->db->where("'main_image = ''",  "'main_image_url = ''");
                }   
            break;
            default:
                    $query = $this->db->select('main_image', 'main_image_url');
                    $query = $this->db->from('product_master');
                break;
                    if ($query->num_rows()) {
                    return $query->result();
                    }
            }
    }
    /*End sample test function*/
}

Вот код для моего контроллера:

if(! defined('BASEPATH')) exit('No direct script access allowed');

class Sample_image_dropdown extends MX_Controller{

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        $data['main_view'] = 'sample_view/image_dropdown_view';
        $this->display_table_images();
    }

    public function display_table_images()
    {
        $this->load->model('Sample_model/image_model');
        $data['images'] = $this->image_model->displayTableImages();
        $data['main_view'] = 'sample_view/image_dropdown_view';
        $this->load->view('sample_view/image_dropdown_view', $data);
    }

    public function search_dropdown_images($type)
    {
        $this->load->model('Sample_model/image_model');

        $type['dropdown_images'] = $this->input->post('type');
        switch ($type) {
            case 'all':
                $data['images'] = $this->image_model->get('all');                   
                break;
            case 'with-image':
                $data['images'] = $this->image_model->get('with-image');
                break;
            case 'no-image':
                $data['images'] = $this->image_model->get('no-image');
                break;
            default:
                echo 'There are no images to be returned';
                break;
        }
        $this->load->view('sample_view/image_dropdown_view', $type);
    }
}

Вот код, на мой взгляд:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div>
            <div>
                <?php echo "<select name='type' id='type'>
                                <option value='all'>All Image</option>
                                <option value='with-image'>With Image</option>
                                <option value='no-image'>Without Image</option>
                            </select>" ?>

                <?php echo "<input type='submit' value='Search'>"; ?>
            </div>
            <div>
                <h3>Images</h3>
            </div>
            <div>
                <?php if (isset($images)): ?>
                <?php foreach($images as $image): ?>
                    <table border="1">
                        <tr>
                            <td><?php echo "$image->main_image"; ?></td>
                            <td><?php echo "$image->main_image_url"; ?></td>
                        </tr>
                    </table>
                <?php endforeach; ?>
                <?php endif; ?>
            </div>
    </div>
</body>
</html>

Я с удовольствием оценю любую помощь / предложение, которое вы можете предоставить в отношении моего вопроса.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Используйте библиотеку пагинации и метод get для фильтрации ваших данных ... метод get поможет вам создать base_url.Все, что вам нужно сделать, это использовать ваши данные get для оператора where.проблема, с которой вы сталкиваетесь, заключается в том, что при переходе на другую страницу вы потеряли выбранную вами опцию.в контроллере после записи дыры просто измените base_url для настройки нумерации страниц и установите его на

if(isset($_GET))
            {
                $config['first_url']        = $config['base_url'].'/1'.'?'.http_build_query($_GET, '', "&");    
            }

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

<select name='type' id='type'>
    <option value='all' <?php echo (isset($_get['type']) && $_get['type'] == 'with-image')?'selected':'';  ?> >
      All Image
    </option>
    <option value='with-image'  <?php echo (isset($_get['type']) && $_get['type'] == 'with-image')?'selected':'';  ?>  >
      With Image
    </option>
    <option value='no-image'  <?php echo (isset($_get['type']) && $_get['type'] == 'no-image')?'selected':'';  ?>  >
       Without Image
    </option>
</select>
0 голосов
/ 26 декабря 2018

Вы должны использовать AJAX для этого.Сначала необходимо отправить запрос из ajax в контроллер вызовов, затем использовать контроллер для загрузки данных из базы данных и отправки их в виде блока HTML в представление и отображения.А также сделайте событие OnChange в раскрывающемся списке, связанном с ajax. Надеюсь, это поможет вам

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