2016-11-21 5 views
0

Ich habe ein Formular, das eine Schätzung auf der Grundlage der Eingaben zusammenfasst, die Sie ausfüllen und auswählen. Eine dieser Eingaben ist eine Gruppe von Kontrollkästchen, die bestimmen, was das Projekt abschließt. Sie gehen als Array in die Datenbank ein (name="finishes_id[]"). Sie werden in eine Tabelle setzen finishes_used genannt, die wie folgt aussieht:Vorauswahl eines Arrays von Kontrollkästchen aus mysql Tabelle

used_id | estimate_id | finish_id 

Diese Tabelle Links zusammen die Oberflächen-Tabelle mit den Schätzungen Tabelle. So wurden zum Beispiel für eine Schätzung, wenn drei verschiedene Ausführungen gewählt, würde es so aussehen:

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

Ich bin jetzt eine Bearbeitungsseite für die Schätzung zu machen und ich habe Probleme, herauszufinden, wie die vorzuwählen Beendet die Kontrollkästchen, die verwendet wurden. Es zeigt NUR die Checkboxen an, die ausgewählt wurden. Ich brauche die Option, auch die anderen zu überprüfen.

enter image description here

Mein Code für das Kontrollkästchen Teil meiner Form sieht wie folgt aus. Wie kann ich oben die gewünschten Ergebnisse erzielen?

<?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> 

Antwort

0

Es scheint mir, müssen Sie left outer join statt inner join verwenden, um dies zu erreichen.

ist hier eine große Erklärung schließt sich: für die Antwort What is the difference between "INNER JOIN" and "OUTER JOIN"?

+0

Dank. Ich habe den inneren Join durch den linken äußeren Join ersetzt und erhalte die gleichen Ergebnisse wie zuvor. Ein var_dump der Anweisung gibt '[" num_rows "] => int (3)' zurück. Dies ist meine neue Abfrage: 'SELECT f.finish_id, f.finish_name, u.estimate_id, u.line_id FROM beendet AS f LEFT OUTER JOIN beendet_benutzt AS u ON u.finish_id = f.finish_id WHERE u.line_id =? ORDER BY f.finish_name ASC' –

+0

Ich würde es morgen neu erstellen, um zu sehen, was vor sich geht. Ich denke, wir würden eine Lösung finden –

+0

Vielen Dank, ich schätze die Hilfe –

Verwandte Themen