2013-02-02 4 views
0

문서에 대한 테이블을 만들고 사용자가 작업과 관련하여 문서의 필요 여부를 선택할 수있게하려고합니다. 문서의 현재 상태를 확인하여 이미 필요한지 확인하고 체크 된 체크 박스에 표시가되어 있는지 확인해야합니다. 현재 데이터베이스에는 4 개의 문서가 있으며이 특정 작업을 위해 2 개의 문서에 대한 2 개의 연관 만 있습니다.배열 데이터를 기반으로 배열 분리

문서에 작업이 연결되어 있지 않은 경우 데이터베이스에 항목이 없으면 해당 항목과 관련이 없다고 말하면서 해당 테이블에 단순하지 않습니다.

코드는 연관이있는 두 개의 문서에 대해 확인란을 표시하지만 연관이없는 문서의 경우 체크 상자를 전혀 표시하지 않습니다. 사용자가 연결을 변경할 수 있도록 3 개의 확인란을 계속 표시하고 싶지만 기본적으로 필요하지 않은지 확인해야합니다. 현재는 눈금 상자가 전혀 표시되지 않습니다. 아래는 PHP 코드입니다. 스크린 샷이나 DB 덤프를 원한다면 알려주십시오.

도움을 주시면 감사하겠습니다. 나는 그저 긴 날이었고 나는 단순한 것을 잊고 있기를 바라고 있습니다.

<table border=1> 
     <tr> 
     <td align=center><p>Here you can associate documents to Jobs and Tasks to.</p> </td> 
     </tr> 
    </table>'; 



$order2 = "SELECT * FROM documents"; 
$result2 = mysql_query($order2); 
while ($row2 = mysql_fetch_array($result2)) { 

$nice_name = $row2['nice_name']; 
$doc_id = $row2['id']; 

} 

echo ' 
<h3>Documents</h3> 

    <table border=1> 
     <tr><th>Document Name</th><th>Document Type</th><th>Required</th><th>Optional</th><th>Not Required</th></tr> 
    '; 



$order2 = "SELECT * FROM documents ORDER BY type_id"; 
$result2 = mysql_query($order2); 
while ($row2 = mysql_fetch_array($result2)) { 

$nice_name = $row2['nice_name']; 
$doc_id = $row2['id']; 
$doc_type_id = $row2['type_id']; 

echo ' 

     <tr> 
     <td>'.$nice_name.'</td>'; 

$order3 = "SELECT * FROM document_types WHERE id = '$doc_type_id'"; 
$result3 = mysql_query($order3); 
while ($row3 = mysql_fetch_array($result3)) { 

$type_name = $row3['type_name']; 

    echo ' 
     <td>'.$type_name.'</td>'; 

$order4 = "SELECT * FROM document_assoc WHERE doc_id = '$doc_id'"; 
$result4 = mysql_query($order4); 
while ($row4 = mysql_fetch_array($result4)) { 

$requirement = $row4['requirement']; 

    echo ' 

     <td><input type="checkbox" name="req" value="2" '; if ($requirement == 2) { echo ' checked '; } echo '></td> 
     <td><input type="checkbox" name="opt" value="1" '; if ($requirement == 1) { echo ' checked '; } echo '></td> 
     <td><input type="checkbox" name="not" value="0" '; if ($requirement < 1) { echo ' checked '; } echo '></td>'; 
    } 

    } 

    echo ' 
     </tr>'; 
    } 
    echo ' 
    </table>'; 

지금까지 나는 마지막 틱 상자로 요구 사항을 조정 해 보았습니다. 그러나 그것은 내가 NULL을 사용하든간에 동일하게 머무르고있는 것처럼 요. 뭔가 빠진 것 같아.

친절 감사,

n00bstacker

+2

코드를 정리하십시오. – Madbreaks

+0

죄송합니다. 제 코딩이나 사이트에서 발표 한 방식을 언급하고 계십니까? – n00bstacker

+1

[** 새 코드 **에서 mysql_ * 함수를 사용하지 마십시오. (http://bit.ly/phpmsql). 그들은 더 이상 유지되지 않으며 [공식적으로 사용되지 않습니다] (http://j.mp/XqV7Lp). [** 빨간색 상자 **] (http://j.mp/Te9zIL)를 참조하십시오. 대신 [* prepared statements *] (http://j.mp/T9hLWi)에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용하십시오. mysqli) - [이 기사] (http://j.mp/QEx8IB)는 어떤 결정을 내리는 데 도움이 될 것입니다. – Kermit

답변

1

당신은 상황을 파악하고 적절하게 대응하기 위해 다음과 같은 if 문을 사용할 수 있습니다 :이 도움이

  $order4 = "SELECT * FROM document_assoc WHERE doc_id = '$doc_id'"; 
       $result4 = mysql_query($order4); 
       $_results = mysql_fetch_array($result4); 
       if (!$_results) { 
         <<<< OUTPUT THE CHECKBOXES/INPUTS YOU NEED >>>> 
       } else { 
        foreach ($_results as $result) { 

       $requirement = $result['requirement']; 

echo ' 

    <td><input type="checkbox" name="req" value="2" '; if ($requirement == 2) { echo ' checked '; } echo '></td> 
    <td><input type="checkbox" name="opt" value="1" '; if ($requirement == 1) { echo ' checked '; } echo '></td> 
    <td><input type="checkbox" name="not" value="0" '; if ($requirement < 1) { echo ' checked '; } echo '></td>'; 
} 

} 

희망을!

+0

감사합니다. Alberto! 당신의 대답이 저를 데려갔습니다. 완전성을 위해서 당신의 답은 2 개의 오류를 가지고 있습니다 - $ requirement 줄의 "row4"와 foreach를 닫으면 답안의 마지막 에코보다 위에 있어야합니다. 많은 많은 감사합니다 !! – n00bstacker

+0

내가 한 모든 작업은 복사하여 붙여 넣기 만하고 몇 줄에 추가했습니다 ... 위의 예에서 수정해야 할 수도 있습니다 ... –

관련 문제