2017-10-19 24 views
0

嗯,我已经花了三(!!!)小时试图解决这个问题,我发誓,简单的问题。问题是这样的:我有两个foreach循环。一个经历“工作”,另一个经历“工人”。两个循环 - 如何停止拼接

希望的结果是列出所有工作人员被列出的工作清单以及被选中的工作人员清单。

  1. 工作一个 - 工人约翰(PeterJohn)
  2. 两种工作 - 工人 - 彼得 等

这里是代码:

// GETTING WORKS 
$get_works = Db::query("SELECT * FROM `tasks_works` WHERE `task_id` = '$get_task[id]' ORDER BY `id`"); 

if(mysqli_num_rows($get_works) > 0) 
{ 

    $get_workers = Db::query("SELECT `name_first`, `name_last`, `email`, `id` FROM `users` WHERE `rights` = '1' OR `rights` = '2' AND `deleted` != '1'"); 

    foreach($get_works as $task_work) 
    { 

      // looping through workers 
      foreach($get_workers as $worker) 
      { 


       $workers_list .= '<option value="'.$worker['id'].'" '.(($task_work['worker'] == $worker['id']) ? 'selected' : '').'>'.$worker['name_first'] . ' ' . $worker['name_last'].'</option>'; 


      }    


     // combining it all      
     $works .= '<div class="row wrk" id="'.$task_work['id'].'"> 
     <div class="col-sm-5"><input type="text" class="wrk_additional" value="'.$task_work['work'].'"></div> 
     <div class="col-sm-2"><input type="text" class="wrk_additional_price" value="'.$task_work['price'].'"></div> 
     <div class="col-sm-4"><select class="wrk">'.$workers_list.'</select></div> 
     <div class="col-sm-1 delete_item kill_work" data-id="'.$task_work['id'].'"><img src="'.Site_url.'/gov/i/delete.png" alt="X" /></div> 
     </div>'; 


    } 


} 

有了这个代码,我收到递增连接工人清单

<select> 
<option>John</option> 
<option>Paul</option> 
</select> 


<select> 
<option>John</option> 
<option>Paul</option> 
<option>John</option> 
<option>Paul</option> 
</select> 

...

很明显 - 如果我把工人循环任务循环之外 - 一切都只是罚款,而是“选择”我不能插入到选项列表。

我已经在努力将条件添加到工循环:

$i = 0; 
foreach($get_workers as $worker){ 

if($i == mysqli_num_rows($get_workers)) break; 
$workers_list .= '<option value="'.$worker['id'].'" '.(($task_work['worker'] == $worker['id']) ? 'selected' : '').'>'.$worker['name_first'] . ' ' . $worker['name_last'].'</option>'; 
$i++; 

} 

这工作,但 - 出于某种原因“选择”被错误地放在我的大脑拒绝理解 - 为什么...

请帮忙!

+0

只有3个小时!?? –

+0

@Macro Man))))))))) – Rossitten

回答

1

重置值的每个工作循环后

$workers_list = '';//set the list empty 
foreach($get_workers as $worker) 
      { 


       $workers_list .= '<option value="'.$worker['id'].'" '.(($task_work['worker'] == $worker['id']) ? 'selected' : '').'>'.$worker['name_first'] . ' ' . $worker['name_last'].'</option>'; 

      } 
+0

拜托了。谢谢。但这只会让我和一个(最后一个)工作人员在一起。我需要选择一个工人的整个清单。 – Rossitten

+0

ups我的坏,一秒 – madalinivascu

+1

更新了我的答案 – madalinivascu