2016-11-21 39 views
0

我有一個表格,它根據您填寫和選擇的輸入來組合估計。其中一個輸入是一組複選框,決定項目收到的結果。他們以數組的形式進入數據庫(name="finishes_id[]")。它們被放入一個叫做finishes_used表,如下所示:預選mysql表格中的複選框數組

used_id | estimate_id | finish_id 

此錶鏈接在一起完成表的估計值表。因此,舉例來說,如果3個不同的款式被選爲一個估計,它應該是這樣的:

used_id | line_id | estimate_id | finish_id 
1    1    1000    2     
2    1    1000    6     
3    1    1000    7     

我現在正在做一個編輯頁面,估計和我有麻煩搞清楚如何預選完成使用的複選框。它僅顯示所選的複選框。我需要選擇檢查其他人。

enter image description here

我對我的表單的複選框部分代碼如下所示。我怎樣才能得到上述的預期結果?

<?php 
    $getid  = $_GET['estimate_id']; // The current estimate number 
    $getLineid = $_GET['line_id'];  // The current line item on the estimate 
?> 

<label for="finish_id">Finishing</label> 
<div class="checkbox_group"> 
    <?php 
     if ($select = $db -> prepare("SELECT f.finish_id, f.finish_name, u.estimate_id, u.line_id FROM finishes AS f INNER JOIN finishes_used AS u ON u.finish_id = f.finish_id WHERE u.line_id = ? ORDER BY f.finish_name ASC")) 
     { 
      $select -> bind_param('s', $getLineID); 
      $select -> execute(); 
      $select -> bind_result($finish_id, $finish_name, $used_estimate_id, $used_line_id); 
      while ($select -> fetch()) 
      { 
       echo '<div class="checkbox">'; 
       echo '<input type="checkbox" name="finish_id[]" id="edit_'.$finish_name.'" value="'.$finish_id.'" '; 
       echo '/><label for="edit_'.$finish_name.'">'.$finish_name.'</label>'; 
       echo '</div>'; 
      } 
      $select -> close(); 
     } 
    ?> 
</div> 

回答

0

在我看來,你必須使用left outer join,而不是inner join實現這一目標。

下面是關於連接的一個很好的解釋:What is the difference between "INNER JOIN" and "OUTER JOIN"?

+0

感謝您的回覆。我用左外部連接替換了內部連接,並得到了和以前相同的結果。該語句的var_dump返回'[「num_rows」] => int(3)'。我的新查詢: 'SELECT f.finish_id, ORDER BY f.finish_name ASC' –

+0

明天我會重新創建它,看看發生了什麼。我想我們會找到解決方案 –

+0

非常感謝,我很感謝幫助 –