2014-11-17 16 views
0

我控制器我遇到for循环的问题。在MySQL

for($a=0; $a<count($area_id); $a++) 
{ 
    for($i=0; $i<count($estimated_time); $i++) 
    { 
     $project_area = new Projectarea; 
     $project_area->area_id = $area_id[$a]; 
     $project_area->project_id = $project->id; 
     $project_area->estimated_time = $estimated_time[$i]; 
     $project_area->save(); 
    } 
} 
return Redirect::to('admin'); 

我看来

<div class="form-group"> 
    <label for="select_client">Choose area</label> 
    <select class="form-control" name="area_id[]" multiple="multiple"> 
    @foreach($area as $row) 
     <option class="click" value="{{ $row->id }}" area="{{ $row->id }}">{{$row->area_name}}</option> 
    @endforeach 
    </select> 

    @foreach($area as $row) 
     <input class="other" id="{{ $row->id }}" type="text" name="estimated_time[]" placeholder="{{ $row->area_name }}" /> 
    @endforeach 
</div> 

的MySQL结果重复值。

如果我选择,例如从多个三个值中选择,我有这样的结果在数据库

project_id area_id estimated_time 
123   7   0 
123   7   2 
123   7   3 
123   7   4 
123   7   0 
123   8   0 
123   8   2 
123   8   3 
123   8   4 
123   8   0 
123   9   0 
123   9   2 
123   9   3 
123   9   4 
123   9   0 
124   8   0 

谢谢

+0

你想要什么样的输出?根据我的理解,你正在使用两个for循环,其中如果找到一个值,另一个循环将以相同的值运行,那么agiain会使用另一个prev for循环并执行相同的操作。 –

+0

这是一种项目任务的想法。在创建项目时,项目的估计时间被定义为项目所需的每个区域的时间。我有三张桌子,因为它是多对多的关系。例如,这个项目将花费40个小时的网站开发,30个小时的设计等。我试图把一个循环放在两个变量中,$ estimated_time和$ area_id我有一个错误未定义偏移量3. – Dean

回答

0

你的错误是由于双重的foreach,你的foreach太多的时间。

var_dump($_POST); 
for($a=0; $a<count($_POST['area_id']); $a++) 
{ 

    var_dump($_POST['estimated_time'][$_POST['area_id'][$a]]); 
    var_dump($_POST['area_id'][$a]); 
    echo 'insert'; 

} 

编辑::

3值选定= 3环(for($a=0; $a<count($area_id); $a++))* n个循环每estimated_time(for($i=0; $i<count($estimated_time); $i++)

所以除去第二的foreach和经由阵列存取权限POST它SA校正我们的你的代码,但你的意见仍然是错误的

+0

我试过这样,但它的工作原理只有我从升序选择选择。否则它会将前一个值赋值给下一个值。 – Dean

+0

为什么你要为estimated_time创建一个数组?你可以这样做'estimated_time [{{$ row-> id}}]'并像这样访问这个值'$ _POST ['estimated_time'] [$ _ POST ['area_id'] [$ a]]' –

0

从你的问题很难理解,但是,如果我明白你正试图根据位置插入项目的估计时间。问题是你实际上不需要inner for循环,因为estimated_time数组和area_id数组实际上具有相同的大小。

请尝试以下代码:

for($i=0; $i<count($area_id); $i++) 
{ 
     $project_area = new Projectarea; 
     $project_area->area_id = $area_id[$i]; 
     $project_area->project_id = $project->id; 
     $project_area->estimated_time = $estimated_time[$i]; 
     $project_area->save(); 
} 
return Redirect::to('admin');