codeigniter:最后一个文本字段的值重复自身或不从文本字段中获取值

时间:2012-08-05 12:08:26

标签: javascript codeigniter

我选择2个文本字段并在第一个文本字段中输入“alpha”,在“beta”上输入第二个。当我在下一页显示它时它只显示第二个值'beta'。我的代码有什么问题?我已经预先知道了保存数据的变量。

这是表单的视图。 (JScript中)

        <script type="text/javascript">

        $(document).ready(function() {  

        $('#bookinfo_adult').change(function(){

            var num = $('#bookinfo_adult').val();                  

            var i = 0; 
            var html = ''; 

            for (i=1;i<=num;i++) {

                html += 'Adult ' + i + ': <input type="text" name="passenger-' + i + '"/><br/>'; 
            }


            $('#List').html(html);
        });
    }); 
</script>

这是表格

      Adult:      
    <select id="bookinfo_adult" name="bookinfo_adult">
    <option value="0">- SELECT -</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
    </select>
    <div id="List"></div>

这是控制器

for ($i=1;$i<=$data['num'];$i++) {
                //concatinate number of fields to a variable
                $name=array();
                $name=$this->input->post('passenger-'.$i);
                $value=array();
                $value='val'.$i;
                $data['bookinfo_passengers']=array();
                $data['bookinfo_passengers']=array($value=>$name);
            }

这是我的显示视图中的内容

     for($a=1;$a<=$num;$a++){
    foreach($bookinfo_passengers as $value=>$name)
    {
        echo $value.'='.$name;
    }     
            }

1 个答案:

答案 0 :(得分:1)

您正在每个循环重新启动数组,并使用新数据覆盖旧数据:

for ($i=1;$i<=$data['num'];$i++) {
            //concatinate number of fields to a variable
            $name=array();
            $name=$this->input->post('passenger-'.$i);
            $value=array();
            $value='val'.$i;
            $data['bookinfo_passengers']=array(); ---> **put this outside of the loop**
            $data['bookinfo_passengers']=array($value=>$name); ---> this will override the previous data.
        }

试试这个:

 $data['bookinfo_passengers']=array();
 $tmp = array();
 for ($i=1;$i<=$data['num'];$i++) {
            //concatinate number of fields to a variable
            $name=array();
            $name=$this->input->post('passenger-'.$i);
            $value=array();
            $value='val'.$i;
            $tmp[$value] = $name;
        }

 $data['bookinfo_passengers']=$tmp;

然后使用它:

foreach($data['bookinfo_passengers'] as $value=>$name)
    {
        echo $value.'='.$name;
    }