Ich habe Schwierigkeiten mit der Anzeige von Daten von der Datenbank zum Dropdown.
Das habe ich versucht:
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>
Die Ergebnisse werden jedoch oben auf meiner Seite angezeigt. Es erscheint nicht in der Dropdown-Liste. Was mache ich hier falsch? Hilfe wird sehr geschätzt. Vielen Dank.
Sie sollten Ihr Modell nicht aus Ihrer Sicht aufrufen. Versuchen Sie stattdessen, Ihr Modell aufzurufen und $data['groups']
einzustellen, bevor Sie Ihre Ansichten laden.
Echo Sie die Zeilenergebnisse in Ihrem Modell nur dann, wenn Sie möchten, dass sie auf Ihrer Seite angezeigt werden.
Controller:
<?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);
}
}
Modell:
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();
}
Aussicht:
<select class="form-control">
<?php
foreach($groups as $row)
{
echo '<option value="'.$row->description.'">'.$row->description.'</option>';
}
?>
</select>
Das sollten Sie tun:
Modell :
public function __construct()
{
parent::__construct();
}
function getAllGroups()
{
$query = $this->db->query('SELECT description FROM location');
return $this->db->query($query)->result();
}
Controller :
<?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);
}
}
Aussicht :
<select class="form-control">
<?php foreach($groups as $each){ ?>
<option value="<?php echo $each->description; ?>"><?php echo $each->description; ?></option>';
<?php } ?>
</select>
Codeigniter verfügt bereits über spezielle Funktionen, die die Menge an HTML minimieren, die Sie in Ihrem Code speichern müssen:
Modell
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;
}
Regler
public function index(){
$data['description_list'] = $this->delivery_model->description_pulldown();
//load all of your view data
$this->load->view('delivery_view', $data);
}
Aussicht
echo form_label("Description");
echo form_dropdown('description', $description_list, set_value('description'), $description_list);
Wenn Sie die vorherigen Daten in der Dropdown-Liste anzeigen lassen möchten, können Sie eine Foreach-Schleife ausführen, um den vorherigen Wert der Dropdown-Liste aus der Datenbank abzurufen, z. und ändern Sie in der Ansicht 'set_value (' description ')' in '$ description'.
Rufen Sie niemals ein Modell aus einer Ansicht an. Es ist machbar, aber Sie verlieren wieder einmal den Punkt, eine MVC zu verwenden ... _. Rufen Sie das Modell von Ihrem Controller aus auf. Holen Sie sich die Daten und übergeben Sie die Daten Ihrer Ansicht.
Verwenden Sie wie unten.
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);
}
Führen Sie in Ihrer Ansicht einfach die Variable $groups
und echo
in Ihrem Dropdown aus.
<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>
Und die Funktion Ihres Modells sollte sein,
function getAllGroups(){
$query = $this->db->get('location');
return $query->result_array();
}
Besser ich denke, verwenden Sie aus Ihrer Sicht:
Auf Ihrem Modell erhalten Sie alle Ihre Daten in einem Array mit:
public function get_all_description()
{
$query = $this->db->get('description');
return $query->result_array();
}
Im Controller:
$data['description']=$this->model->get_all_description();
Im Hinblick auf:
for($i=0;$i<sizeof($description);$i++)
{
$description2[$description[$i]['description']]=$marque[$i]['description'];
}
echo form_dropdown('description', $description22, set_value('description'));