0

DDL に組織のリストがあり、テキストには各組織の完全な名前が表示され、値はその組織のキーです。組織が選択されたときにデータベースに入力された氏名とキーの両方が必要です。PHP を使用して値とテキストの両方にアクセスできなかったため、値フィールドに完全な名前とキーを一緒に文字列化し、Explode を使用してそれらを異なる変数に分割しました (以下を参照)。これはこれを行うための最良の方法ですか?よりクリーンでシンプルなものを見落としていないことを確認したいと思います。

HTML:

<form method="post" action="submit.php" name="requestDetailsForm">

<label>Organization Name:</label>
<select id="org_name" name="org_name">
    <option value="Organization 1.abc">Organization 1</option>
    <option value="Organization 2.def">Organization 2</option>
</select>
<input type="Submit" value="Submit">
</form>

PHP:

<?php
$org_name = mysql_escape_string($_POST['org_name']);

$org_name_split = explode('.', $org_name);
$org_name_full = $org_name_split[0];
$org_name_key = $org_name_split[1];

$strSQL = "INSERT INTO Database(org_name_full, org_name_key) VALUES ('$org_name_full', '$org_name_key')"; 
?>
4

3 に答える 3

0

$_POST配列などを介して、選択した値と名前の両方にアクセスする方法はありません。

ただし、このような状況で私が一般的に行うことは、考えられるすべての組織の名前とコードを含むテーブルをデータベースに作成することです。SELECT *PHP では、元のページの HTML を生成するときに、そのデータベースを使用して選択オプションのリストを生成します。次に、データが送信されたら、処理している 2 番目のテーブルに組織コードを挿入するだけです。そのテーブルのレコードに関連付けられている完全な組織コードと名前を知る必要がある場合は、JOINステートメントを使用します。

たとえば、現在扱っている元のデータベースがユーザーを表し、各ユーザーが組織を持っているとします。誰かがフォームを送信すると、そのテーブルに新しいユーザー レコードを挿入し、同じユーザー テーブルの organization_id フィールドに組織コードを挿入します。次に、特定のユーザーの組織コードと名前を知りたい場合は、SELECT * FROM users LEFT JOIN organizations ON user.organization_id = organization.id WHERE user.id = blah. これにより、組織コードと名前とともにユーザー レコードが返されます。

于 2013-10-09T13:48:36.950 に答える
0

これは、PHP のみを使用する場合に最適な方法です。

可能な改善は、POST を変数に分割する方法を改善することです。

list($org_name_full, $org_name_key) = explode('.', $org_name);

それ以外の場合は、javascript を使用して、必要な変数を投稿に追加する必要があります。

于 2013-10-09T13:50:34.980 に答える