Php CodeIgniter-视图中的2个表单

Php CodeIgniter-视图中的2个表单,php,forms,codeigniter,Php,Forms,Codeigniter,我有一个视图,它有两种形式: <table> <th>Write a comment.</th> <tr> <td> <?php echo form_open($this->uri->uri_string(),$form1); echo form_textarea($comment); echo form_submit('submit',

我有一个视图,它有两种形式:

<table>
<th>Write a comment.</th>
<tr>
    <td>
        <?php echo form_open($this->uri->uri_string(),$form1); 
              echo form_textarea($comment);
              echo form_submit('submit','submit');
              echo form_close();
        ?>
    </td>
</tr> 


</table>

<table>
    <tr>

        <td>
            <?php echo form_open($this->uri->uri_string()); 
                  echo form_dropdown('portion', $portion_options); 
                  echo form_submit('book','book');
                  echo form_close();
            ?>
        </td>
    </tr>
</table>
但是,单击“书本”按钮时,不会执行任何操作。这就像按钮从未被点击过一样。而当我点击“提交”按钮时,每一个动作都被正确地完成了


在过去,我在普通php上使用了相同的技术(我的意思是没有框架,只有php),对我来说效果很好。codeigniter是否需要进一步配置?我做错了什么吗?

为什么不在两个表单中分别添加一个名为
form\u id
的隐藏字段,其值分别为1和2?易于捕捉在您的控制器后;e、 g:

<?php echo form_open($this->uri->uri_string(),$form1); 
if($this->input->post()){
  switch($this->input->post('form_id')){
  case 1:
    // do stuff
  break;
  case 2:
    // do stuff
  break;
  }
}

为什么不在两个名为
form\u id
的表单中分别添加一个值为1和2的隐藏字段?易于捕捉在您的控制器后;e、 g:

if($this->input->post()){
  switch($this->input->post('form_id')){
  case 1:
    // do stuff
  break;
  case 2:
    // do stuff
  break;
  }
}

在花了一整天的时间之后,我终于设法以某种方式解决了这个问题(尽管我相信这不是一个解决这个问题的好办法)

嗯:

$comment=array(
'名称'=>'注释',
'id'=>'comment',
'值'=>'写评论',
“行”=>“5”,
'cols'=>'100'
);
写评论。
写评论。
可能表单字段(textarea和dropdown)需要有相同的名称(我已经设置为“comment”)。虽然我不明白为什么:/


谢谢大家帮助我:)

在花了一整天的时间之后,我终于设法解决了这个问题(尽管我相信这不是解决这个问题的好办法)

嗯:

$comment=array(
'名称'=>'注释',
'id'=>'comment',
'值'=>'写评论',
“行”=>“5”,
'cols'=>'100'
);
写评论。
写评论。
可能表单字段(textarea和dropdown)需要有相同的名称(我已经设置为“comment”)。虽然我不明白为什么:/



谢谢大家帮助我:)

否,或者当我将表单合并为1时,单击的按钮会被识别并正常工作。但是,如果可能的话,我需要将它们放在单独的表单上。在任何情况下,都不要在CodeIgniter中使用
if(isset($\u POST['book'))
。使用内置的
$this->input->post('book')
并在firebug/chrome developer tools中查看发送到控制器的数据,可以在网络选项卡中看到。尽管我不知道如何使用firebug,但在网络选项卡的标题选项卡中,我看到我从下拉列表中选择的是sentno,当我将表单合并为1时,然后可以识别单击的按钮并正常工作。但是,如果可能的话,我需要将它们放在单独的表单上。在任何情况下,都不要在CodeIgniter中使用
if(isset($\u POST['book'))
。使用内置的
$this->input->post('book')
并在firebug/chrome developer tools中查看发送到控制器的数据,可以在网络选项卡中看到。尽管我不知道如何使用firebug,但在网络选项卡的标题选项卡中,我看到我从下拉列表中选择的内容已发送。感谢您的回复。我只是用你的方式尝试过,但是,仍然只是“提交”按钮被识别。你是否可以使用
if($this->input->post('book')){
或原始
if(isset($\u post['book']){
?实际上,我使用了$this->input->post(),因为我认为从swich可以理解发布的表单。我现在尝试了$this->input->post('book')还是没有。我只是在本地测试,在两个窗体上分别使用
echo form_hidden('form_id',1)
echo form_hidden('form_id',2)
。在控制器中,我使用
if($this->input->post()){echo$this->input->post('form id')}
我得到了正确的输出-所以它应该可以工作。我想我已经解决了。您正在检查
if(isset($\u POST['submit']))
由于两个按钮都是
submit
按钮,您的第二个
if
将始终计算为true。因此您需要检查的不是
submit
是否存在,而是是否存在另一个元素,即我建议的隐藏字段。或者,您可以执行以下操作:
if($\u POST['submit']='submit'){/code>和
if($\u POST['submit']='book'){
谢谢你的回复。我只是用你的方式尝试了一下,但是,仍然只有'submit'按钮可以识别你是否可以使用
if($this->input->POST('book')){
或原始
if(isset($\u POST['book']){
?实际上我使用了$this->input->POST()因为我认为从swich可以理解哪个表单被发布了。我现在尝试使用$this->input->post('book'),但仍然没有任何结果。我只是在本地测试,在两个表单上分别使用
echo form_hidden('form_id',1);
echo form_hidden('form_id',2)
。在控制器中,如果($this->input->post()){echo$this->input->post('form_id');}
我得到了正确的输出,所以它应该可以工作。我想我找到了。你正在检查
if(isset($\u post['submit']))
由于两个按钮都是
submit
按钮,您的第二个
if
将始终计算为true。因此您需要检查的不是
submit
是否存在,而是是否存在另一个元素,即我建议的隐藏字段。或者,您可以执行以下操作:
if($\u POST['submit']='submit'){/code>和
if($_POST['submit']=='book'){
哦,告诉我$form1中的数组。它在哪里?你应该可以在一个页面上有两个表单。你可以在浏览器中发布你点击的uri\u字符串,然后发布你的整个方法吗?你也可以发布生成的表单html吗?我的视图顶部有它。这是数组:$form1=array('name'=>'form1','id'=>'form1');很抱歉我耽搁了。我正在查看问题是否在
<?php echo form_open($this->uri->uri_string(),$form2); 
if($this->input->post()){
  switch($this->input->post('form_id')){
  case 1:
    // do stuff
  break;
  case 2:
    // do stuff
  break;
  }
}
$comment = array(
    'name'      => 'comment',
    'id'        => 'comment',
    'value'     => 'write you comment',
    'row'       => '5',
    'cols'      => '100'
    );

<table>
<th>Write a comment.</th>
<tr>
    <td>
        <?php echo form_open($this->uri->uri_string()); 
              echo form_hidden('form_id', 1);
              echo form_textarea($comment);
              echo form_submit('submit','submit');
              echo form_close();
        ?>
    </td>
</tr> 


</table> 

<table>
    <th>Write a comment.</th>
    <tr>
        <td>

            <?php echo form_open($this->uri->uri_string()); 
                  echo form_hidden('form_id', 2);
                  echo form_dropdown('comment', $portion_options);
                  echo form_submit('book','book');
                  echo form_close();
            ?>

        </td>
    </tr> 


</table>