2016-04-18 3 views
1

Ich schreibe eine kleine App mit Codeigniter und lief in ein paar Probleme bis jetzt! Ich habe eine Dropdown-Liste, die aus einer Db-Tabelle aufgefüllt wird. Das Dropdownfeld wird ausgefüllt und korrekt angezeigt. Wenn ich jedoch versuche, den Inhalt (die Werte) in einer neuen db-Tabelle zu speichern, speichert es die Position in der Dropdown-Liste und nicht den Wert, der angezeigt wird.CodeIgniter - Drop-Down-Menü Übergabe der Position in der Liste zu db statt Wert

Ein Teil der Form in Aussicht:

<?php echo form_open('manage/create_sold_vehicle_record'); ?> 
    Registration Number 
    <br> 
    <?php echo form_dropdown('reg_no', $vehicle_list, 'large'); ?> 

Der relevante Teil des Controllers:

function sell_vehicle() 
    { 
    $this->load->helper('form'); 
    $this->load->helper('url'); 

    $id = $this->uri->segment(3); 
    $this->load->model('MVehicle','',TRUE); 
    $this->load->model('manage_model','',TRUE); 
    $vehicles_qry = $this->MVehicle->listSaleVehicles(); 

    $vehicle_list = array(); 
    foreach ($vehicles_qry->result() as $vehicle) 
    { 
     $vehicle_list[] = $vehicle->reg_no; 
    } 

    $data['vehicle_list'] = $vehicle_list; 
    $data['main_content'] = 'sell_stock_vehicle'; 
    $this->load->view('includes/template', $data); 
    } 

Dies ist das Modell:

function create_sold_vehicle_record() 
    { 


     $new_vehicle_insert_data = array(
      'reg_no' => $this->input->post('reg_no'), <-- This is saved to db, but is the position in dropdown list, not the value shown. 
      'sold_by' => $this->input->post('staff'), 
      'bought_by' => $this->input->post('customer'), 
      'sale_price' => $this->input->post('sale_price'), 
      'comm_rate' => $this->input->post('comm_rate'), 
      'total_comm' => $this->input->post('total_comm'), 
      'sale_date' => $this->input->post('date') 
     ); 

     $insert = $this->db->insert('sold_vehicles', $new_vehicle_insert_data); 

     return $insert; 
    } 

Also, anstatt zum Beispiel Speichern Sie 'OU03XHC' als reg_no-Wert in db, es wird '1' gespeichert (oder wie auch immer die Position des Wertes in der Dropdown-Liste war) .

Antwort

0

$vehicle_list[] Bedürfnisse ein assoziatives Array

$vehicle_list = array(); 
foreach ($vehicles_qry->result() as $vehicle) 
{ 
    $vehicle_list[$vehicle->reg_no] = $vehicle->reg_no; 
} 

Jetzt form_dropdown() produziert auch Optionswerte (andere als 0,1, etc.) In der Dropdown-html

+0

Hallo - Danke, es hat perfekt für reg_no field funktioniert! –

+0

Leider habe ich 2 andere, Mitarbeiter und Kunden und das gleiche tut scheint nicht auf diese ... \t \t

$staff_qry = $this->manage_model->listStaff(); \t \t $staff_list = array(); \t \t foreach ($staff_qry->result() as $staff) \t \t { \t \t \t $staff_list[$staff->lname] = $staff->lname; \t \t }
Irgendwelche Ideen, warum das wäre? Vielen Dank. –

+0

Überprüfen Sie den HTML-Code, den form_dropdown() für Mitarbeiter und Kunden erstellt. Was ist "value"? – Vickel

0

ersetzen

$vehicle_list = array(); 
foreach ($vehicles_qry->result() as $vehicle) 
{ 
    $vehicle_list[] = $vehicle->reg_no; 
} 
sein

TO

$vehicle_list = array(); 
    foreach ($vehicles_qry->result() as $vehicle) 
    { 
     $vehicle_list[$vehicle->reg_value] = $vehicle->reg_no; 
    } 

"$ vehicle-> reg_value" veriable ist der Wert, den Sie in Ihrem DB speichern möchten

Verwandte Themen