2012-10-08 2 views
2

그래서 여기에 내가하려는 일이 있습니다. 회사 목록이있는 표가 있습니다. 특정 직원의 회사 목록이 들어있는 다른 테이블이 있습니다. 여기에 테이블이
COMPANY_ID
이름다중 선택 목록 상자에 두 개의 다른 테이블에있는 데이터 채우기

employees_companies이

기업입니다


은 현재 내가 목록으로 채워집니다 목록 상자가 COMPANY_ID employee_id입니다 empcomp_id 모든 회사. 사용자가 새 직원을 설정할 때 목록 상자에서 하나 이상의 회사를 선택할 수 있습니다. 양식이 제출되면 선택한 모든 회사의 배열을 만들고이를 반복하여 employees_companies 테이블에 새 레코드를 추가합니다. 이 모든 것이 훌륭하게 작동합니다. 내가 겪고있는 문제는 사용자가 이러한 회사를 편집 할 수있는 형태에 있습니다. 먼저 목록 상자에 모든 회사 목록을 채 웁니다. 다음으로이 사용자에 대해 employees_companies 테이블에 나열된 회사를 강조 표시해야합니다. 현재 쿼리에서 반환 된 레코드 수에 관계없이 하나의 레코드 만 강조 표시됩니다. 여기

는 ============= 형태

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>test</title> 
</head> 
<body> 
<form id="frmAdd" name="frmAdd" method="post" action="test.php"> 
    <select name="company_id[]" size="4" multiple="multiple" id="company_id[]"> 
    <?php do { ?> 
    <option value="<?php echo $row_rsCompanyList['company_id']?>" 
    <?php 
     do { 
      if (!(strcmp($row_rsCompanyList['company_id'], $row_rsEmployeeCompanyList['company_id']))) {echo "selected=\"selected\"";} 
     } while ($row_rsEmployeeCompanyList = mysql_fetch_assoc($rsEmployeeCompanyList)); ?>><?php echo $row_rsCompanyList['name']?></option> 
    <?php 
} while ($row_rsCompanyList = mysql_fetch_assoc($rsCompanyList)); 
    $rows = mysql_num_rows($rsCompanyList); 
    if($rows > 0) { 
     mysql_data_seek($rsCompanyList, 0); 
     $row_rsCompanyList = mysql_fetch_assoc($rsCompanyList); 
    } 
?> 
    </select> 
    <input type="submit" name="button" id="button" value="Submit" /> 
</form> 
</body> 
</html> 

모든 기업의 목록과 직원이 회사 여기

// get list of all companies 
mysql_select_db($database_freight, $freight); 
$query_rsCompanyList = "SELECT * FROM companies ORDER BY scac ASC"; 
$rsCompanyList = mysql_query($query_rsCompanyList, $freight) or die(mysql_error()); 
$row_rsCompanyList = mysql_fetch_assoc($rsCompanyList); 
$totalRows_rsCompanyList = mysql_num_rows($rsCompanyList); 

// get employees companies 
$colname_rsEmployeeCompanyList = "17"; 
if (isset($_GET['employee_id'])) { 
    $colname_rsEmployeeCompanyList = $_GET['employee_id']; 
} 
mysql_select_db($database_freight, $freight); 
$query_rsEmployeeCompanyList = sprintf("SELECT * FROM employees_companies WHERE employee_id = %s", GetSQLValueString($colname_rsEmployeeCompanyList, "int")); 
$rsEmployeeCompanyList = mysql_query($query_rsEmployeeCompanyList, $freight) or die(mysql_error()); 
$row_rsEmployeeCompanyList = mysql_fetch_assoc($rsEmployeeCompanyList); 
$totalRows_rsEmployeeCompanyList = mysql_num_rows($rsEmployeeCompanyList); 

을 얻을 수있는 코드입니다 ========================================================================================================== ========================================================================================================================================================== 회사 이름이 목록 상자에 채워지지 않습니다. 귀하의 코드에 닫는 옵션 태그가없는 것으로 나타났습니다. 나는 그것을 추가하고 값에 대해 $ company_id를 입력 했으므로 목록 상자에 company_id를 채우지 만 어떻게 회사 이름을 대신 표시 할 수 있습니까? 여기

내가 양식 옵션

를 배열 여기
// get list of all companies 
mysql_select_db($database_freight, $freight); 
$query_rsCompanyList = "SELECT company_id, name FROM companies ORDER BY scac ASC"; 
$rsCompanyList = mysql_query($query_rsCompanyList, $freight) or die(mysql_error()); 

$all_company_ids = array(); 
while ($row_rsCompanyList = mysql_fetch_array($rsCompanyList)) { 
    $all_company_ids[] = $row_rsCompanyList['compnay_id']; 
} 

// get list of all employees companies 
$colname_rsEmployeeCompanyList = "17"; 
if (isset($_GET['employee_id'])) { 
    $colname_rsEmployeeCompanyList = $_GET['employee_id']; 
} 
mysql_select_db($database_freight, $freight); 
$query_rsEmployeeCompanyList = sprintf("SELECT company_id FROM employees_companies WHERE employee_id = %s", GetSQLValueString($colname_rsEmployeeCompanyList, "int")); 
$rsEmployeeCompanyList = mysql_query($query_rsEmployeeCompanyList, $freight) or die(mysql_error()); 

$emp_company_ids = array(); 
while ($row_rsEmployeeCompanyList = mysql_fetch_array($rsEmployeeCompanyList)) { 
    $emp_company_ids[] = $row_rsEmployeeCompanyList['compnay_id']; 
} 

입니다 만드는 오전 곳이다
<?php foreach($all_company_ids as $company_id): ?> 
    <option value="<?php echo $company_id; ?>" <?php if(in_array($company_id, $emp_company_ids)) echo "selected=\"selected\""; ?>><?php echo $company_id; ?></option> 
<?php endforeach; ?> 
+0

코드가 엉망입니다. 첫째, ORM을 사용할 수 있다면 좋을 것입니다 (좋은 이유가 없다면!). 둘째, 귀하는 귀하의 양식으로 귀하의 DB와 상호 작용하고 있습니다. 이는 좋은 습관이 아닙니다. –

답변

2

나는 이것이 당신이 원하는 생각 : 모든 회사 ID를 표시하고 속하는 만을 강조 직원에게. 나는 모든 회사 ID 또는 직원의 회사 ID를 얻는 방법에 대한 세부 사항에 가지 않았다

<?php 
$all_company_ids = array(); // You should populate this as you wish, but it's better not to do it in your form! 
$emp_company_ids = array(); // Again get this items from the database! 
?> 


<select name="company_id[]" size="4" multiple="multiple" id="company_id[]"> 
<?php foreach($all_company_ids as $company_id): ?> 
    <option value="<?php echo $company_id; ?>" <?php if(in_array($company_id, $emp_company_ids)) echo "selected=\"selected\""; ?>></option> 
<?php endforeach; ?> 
</select> 

참고 : 내가 맞다 경우
, 여기에 그것을하는 간단한 방법입니다.

아이디어는 매우 간단합니다.
먼저 모든 회사 ID를 얻습니다. 그런 다음 루프를 반복하여 각각 option으로 표시하고 항목이 직원에게 속한 경우 선택합니다.

이 코드를 직접 사용해 보지는 않았지만 아이디어가 간단하므로 잘 작동합니다.

회사 이름 편집 는 간단한 방법은 id이 같은 키 값 쌍으로 회사의 name$all_company_ids 채울 수 있습니다 :

$all_companies = array(); 
while ($row_rsCompanyList = mysql_fetch_array($rsCompanyList)) { 
    $all_companies[$row_rsCompanyList['compnay_id']] = $row_rsCompanyList['name']; 
} 

을 그리고 당신은 표시 할 수 있습니다 같은 이름 : 나는에 $all_company_ids 변수의 이름을 변경

<select name="company_id[]" size="4" multiple="multiple" id="company_id[]"> 
<?php foreach($all_companies as $company_id => $company_name): ?> 
    <option value="<?php echo $company_id; ?>" <?php if(in_array($company_id, $emp_company_ids)) echo "selected=\"selected\""; ?>><?php echo $company_name ?></option> 
<?php endforeach; ?> 
</select> 

주 0. 나는 옵션 태그도 수정했다.

+0

도와 주셔서 감사합니다. 그것은 단지 그것을 얻었습니다. 문제가 하나 더 있습니다. 나는 새 코드와 마지막 문제로 내 질문을 업데이트했습니다. – strangedesign

+0

@Ako Sir Sir Sir 대단히 감사합니다. 나는 이것을 찾고있었습니다. 그리고 당신의 대답으로 도움을 얻었습니다. 다시 선생님 ... –

관련 문제