だからここに私がやろうとしていることがあります。会社のリストを含むテーブルがあります。特定の従業員の会社のリストを含む別のテーブルがあります。ここにテーブルがあります
会社
company_id
名前
employees_companies
empcomp_id
employee_id
company_id
現在、すべての会社のリストが入力されたリスト ボックスがあります。ユーザーが新しい従業員を設定するとき、リスト ボックスから 1 つまたは複数の会社を選択できます。フォームが送信されると、選択したすべての会社の配列を作成し、それらをループして、employees_companies テーブルに新しいレコードを追加します。これはすべてうまくいきます。私が抱えている問題は、ユーザーがこれらの会社を編集できるフォームにあります。まず、リスト ボックスにすべての会社のリストを入力します。次に、このユーザーについて、employees_companies テーブルにリストされている会社を強調表示する必要があります。現在、クエリで返されたレコードの数に関係なく、1 つのレコードのみが強調表示されます。
すべての会社と従業員の会社のリストを取得するコードは次のとおりです。
// 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);
フォームはこちら
<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>
================================================== ============================= ほぼ理解できましたが、1 つだけ問題があります。会社名はリストボックスに表示されません。コードに終了オプション タグがないことに気付きました。私はそれを追加し、値に $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; ?>