【问题标题】:Codeigniter get form field value from array fields not workingCodeigniter 从数组字段中获取表单字段值不起作用
【发布时间】:2015-12-03 04:40:00
【问题描述】:

我想在我的视图中获取帖子字段值,但所有表单也没有获取该值,当我单击提交按钮时,我在表单视图中得到一个“数组”字符串。

我在数组中声明了字段 => Controller :

$data6 = array(
     'no_lab'                    => $no_lab[$i],
     'low_sampling'              => $low_sampling[$i],
     'sampling_point'            => $sampling_point[$i],
     'sampling_tgr'              => $sampling_tgr[$i],
     'sampling_clk'              => $sampling_clk[$i],
     'sampling_analys'           => $sampling_analys[$i],
     'shift'                     => $shift[$i]
 );

在我的视图中,我设置了“set_value('array[]')”,如下所示:

<td>
   <input type="text" name="no_lab[]" id="no_lab" value="<?php echo set_value('no_lab[]'); ?>" required/></td>
<td>
   <input type="text" name="low_sampling[]" id="low_sampling" value="<?php echo set_value('low_sampling[]'); ?>"/></td>
<td>
   <input type="text" name="sampling_point[]" id="sampling_point" size="17" value="<?php echo set_value('sampling_point[]'); ?>"/></td>
<td>
   <input type="text" name="sampling_tgr[]" id="sampling_tgr" value="<?php echo set_value('sampling_tgr[]'); ?>"/></td>
<td>
   <div class="input-group clockpicker col-sm-12" data-autoclose="true" data-time-format="HH:mm">
     <input type="text" name="sampling_clk[]" id="sampling_clk" value="<?php echo set_value('sampling_clk[]'); ?>" required/>
       <span class="input-group-addon">
       <span class="glyphicon glyphicon-time"></span></span>
   </div>
</td>
<td>
   <input type="text" name="sampling_analys[]" id="sampling_analys" value="<?php echo set_value('sampling_analys[]'); ?>"/></td>

引用 CI 重新填充表单:https://www.codeigniter.com/user_guide/libraries/form_validation.html

那么,我做错了吗?我是 CI 新手。

【问题讨论】:

  • in value=""。值是多少?//set_value('no_lab[]') ?//你能解释一下
  • 当我填写表格并提交时,我想让值显示在 View 上,这就是我设置 "" 的原因但正如您在图片中看到的那样,我无法获取值。
  • 你写过set_value()//函数吗?
  • 您正在调用 set_value() 函数并将值作为 no_lab[] 传递。我对吗?你能发布你的 set_value() 函数吗
  • set_value() 设计用于 CI 表单验证,set_value() 不是我自己的函数。 set_value() 可以使用参数用值填充字段。提交表单后,您可以再次显示该表单,该字段将填写提交的值。就我而言,它在数组中不起作用,先生。

标签: php arrays forms codeigniter


【解决方案1】:

您的数组的Print_r 返回一个值。所以让你的 $a=set_value('no_lab[]');.因此 $a 是数组。我认为 count($a) 返回 1,因此我使用 echo $a[0];现在试试代码

<td>
<input type="text" name="no_lab[]" id="no_lab" value="<?php $a=set_value('no_lab[]'); echo $a[0]; ?>" required/></td>
<td>
<input type="text" name="low_sampling[]" id="low_sampling" value="<?php  $a=set_value('low_sampling[]');echo $a[0];  ?>"/></td>
<td>
<input type="text" name="sampling_point[]" id="sampling_point" size="17" value="<?php $a= set_value('sampling_point[]');echo $a[0];  ?>"/></td>
<td>
<input type="text" name="sampling_tgr[]" id="sampling_tgr" value="<?php $a= set_value('sampling_tgr[]'); echo $a[0]; ?>"/></td>
<td>
<div class="input-group clockpicker col-sm-12" data-autoclose="true" data-time-format="HH:mm">
<input type="text" name="sampling_clk[]" id="sampling_clk" value="<?php $a= set_value('sampling_clk[]');echo $a[0];  ?>" required/>
<span class="input-group-addon">
<span class="glyphicon glyphicon-time"></span></span>
</div>
</td>
<td>
<input type="text" name="sampling_analys[]" id="sampling_analys" value="<?php $a=set_value('sampling_analys[]');echo $a[0];  ?>"/></td>

【讨论】:

  • 通过那些代码我可以得到值,但我得到一个新的错误“消息:未初始化的字符串偏移量:0”
  • echo $a[0];// 替换 echo $a;并尝试
  • 好吧,有了这个 $a=set_value('no_lab[0]');回声$a;再次没有错误,我成功获取了值,非常感谢先生。
  • @Billadsys:很高兴听到。但你只是完美地解决了它。这是你的工作兄弟:)
【解决方案2】:

随便用

<?php echo set_value('no_lab','default value'); ?>

//get the first element of array
echo '<input name="no_lab" id="no_lab" class="no_lab" value="'.$no_lab[0].'" >';
// OR
echo '<input name="no_lab" id="no_lab" class="no_lab" value="'.$no_lab.'" >';

foreach ($no_lab as $nl){
    echo '<input name="no_lab['.$nl.']" id="no_lab_'.$nl.'" class="no_lab" value="'.$nl.'" >';
}

【讨论】:

  • "默认值" ?你是说数组吗?
  • 输入接受一个值而不是数组,或者创建 n 个输入
【解决方案3】:

在使用数组作为表单字段的名称然后将其作为数组提供给set_value 函数时,我遇到了类似的问题。我无法用相应的值重新填充每个表单字段。

根据 Vigneswaran 将 set_value 函数的结果分配给变量的建议,然后我使用循环的计数器作为数组键来访问表单字段中的每个值。

for($i = 0; $i < 2; $i++) {
    $a = set_value('ingredients['.$i.']');
    echo form_input('ingredients[]', $a, TRUE);
}

带有示例值属性的输出:

<input type="text" name="ingredients[] value="form_input_1">
<input type="text" name="ingredients[] value="form_input_2">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    相关资源
    最近更新 更多