8

データベースからドロップダウンへのデータの表示に問題があります。

これは私が試したことです:

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>

しかし、結果は私のページの上に表示されます。ドロップダウン リストに表示されません。ここで何が間違っていますか?ヘルプは大歓迎です。ありがとう。

4

7 に答える 7

20

ビューからモデルを呼び出すべきではありません。$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>
于 2013-11-12T06:16:19.597 に答える
8

これはあなたがすべきことです:

モデル:

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>
于 2013-11-12T06:27:29.740 に答える
2

ビューからモデルを呼び出さないでください。それは実行可能ですが、そもそも 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();
}
于 2013-11-12T06:24:07.587 に答える
0

これは Codeigniter 4 の回答です。

コントローラ

public function index()
{
    $delModel = new delivery_model();
    $groups=$delModel->getAllGroups();
    $data = [

        'title' => 'Warehouse - Delivery',
        'groups' => $groups,

    ];
        return view('include/header',$data);
        return view('include/navbar',$data);
        return view('delivery_view', $data);
        return view('include/sidebar',$data);
        return view('include/footer',$data);

}

モデル

public function getAllGroups()
{
    $db = \Config\Database::connect();
    $query = $db->query("SELECT description FROM location;");
    return $query->getResultArray();
}

意見

<select>
    <?php
      foreach ($groups as $row) {
      echo '<option value="' . $row["description"] . '">' .$row["description"] . '</option>';
      }?>
</select>   
于 2021-07-17T14:11:51.717 に答える