Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从下拉列表中传递值而不是id_Php_Codeigniter_Model View Controller_Listbox_Dropdown - Fatal编程技术网

Php 从下拉列表中传递值而不是id

Php 从下拉列表中传递值而不是id,php,codeigniter,model-view-controller,listbox,dropdown,Php,Codeigniter,Model View Controller,Listbox,Dropdown,如何传递下拉列表中的确切文本,而不是其值。 我用的是CodeIgniter $tableNames = array_column($tableData, 'TABLE_NAME'); asort($tableNames); echo form_open('index.php/TableController'); echo form_dropdown('TABLE_NAME', $tableNames); echo "<br&g

如何传递下拉列表中的确切文本,而不是其值。 我用的是CodeIgniter

$tableNames = array_column($tableData, 'TABLE_NAME');
        asort($tableNames);
        echo form_open('index.php/TableController');
        echo form_dropdown('TABLE_NAME', $tableNames);
        echo "<br><br>";
        echo form_submit("submit1", "Table");
        echo form_close();
$tableNames=array_column($tableData,'TABLE_NAME');
asort(表格名称);
echo form_open('index.php/TableController');
echo form_下拉列表('TABLE_NAME',$tableNames);
回声“

”; echo表格提交(“提交”、“表格”); 回声形式_close();
这将导致传递选定项的id,而不是其文本。
我不想传递整个数组并用id再次选择文本,我只想将文本传递给我的控制器。

Codeigniter 3.0.4表单下拉列表(名称、选项)

结果:

<select name="shirts">
  <option value="small">Small Shirt</option>
  <option value="med">Medium  Shirt</option>
  <option value="large">Large Shirt</option>
  <option value="xlarge">Extra Large Shirt</option>
</select>

小衬衫
中号衬衫
大衬衫
特大号衬衫

参考:你的问题有点不清楚。但在将数组项从控制器传递到视图之前,将其交给它会更好

你可以试试这个

文件名:Test.php

<?php

class Test extends CI_Controller {

    public function index() {

        $data['records'] = array(

            array(
                'id' => 2135,
                'value' => 'John',
            ),

            array(
            'id' => 3245,
            'value' => 'Sally',
            ),

            array(
                'id' => 5342,
                'value' => 'Jane',

            ),
            array(
                'id' => 5623,
                'value' => 'Peter',
            )

        );

        $this->load->view('test', $data);
    }

    public function submit_test() {
      var_dump($this->input->post('test'));
      exit;
    }
}

产生

这就创造了奇迹:

$tableNames = array_combine($tableNames, $tableNames);

我得到了键和值相同的关联数组,因此如果我将其传递到表单下拉列表,则选项值和文本都将相同。

不要设置值。默认浏览器行为是在没有值时发送选项文本。e、 g.
Foo
发送
Foo
,而
Foo
将发送
bar
。或者只是将文本设置为值:
Foo
。请注意,提及
id
会令人困惑。DOM
id
字段不是随表单提交的。不确定您在问什么,但在典型的下拉列表中,这是显示给用户的,等等……感谢您的回答,很明显我可以用纯html来完成,但CodeIgniter框架是否提供了它?我在文件中没有找到答案。
<?php

echo form_open_multipart('index.php/test/submit_test');

$array_items = array_column($records, 'value', 'id');

$s = array(
        'class'=> 'form-control'
);

echo form_dropdown('test', $array_items, '', $s);

echo form_submit("submit", "Table");

echo form_close();

?>
$tableNames = array_combine($tableNames, $tableNames);