2

会社名データベースから会社名を検索するクエリで埋められるドロップダウンボックスを作成しました。これらの名前には、表示したくないがクエリで検索されるID番号も含まれています。会社のサイトにリンクするにはID番号が必要なので、サイトページの送信ボタンを押すと、位置の値を調べてクエリ配列の位置に関連付けることでID番号が見つかります。何をすべきかを知っています。それが役立つ場合、これは私がドロップボックスに記入する方法です:

mysql_select_db("DB", $con);
$query = "SELECT Company_Name, ID FROM company_table";
$result = mysql_query($query) or die(mysql_error());
$options ='';
$num = 0;
while ($row=mysql_fetch_array($result)) {
$num = $num+1; 
$options.= "<OPTION VALUE=\"$num\">".$row["Company_Name"]; 
}
<SELECT NAME=thing> 
<OPTION VALUE=0>Choose 
<?=$options?> 
</SELECT>

何か案は?

4

2 に答える 2

0

これを行うには、2つの直接的な方法があります。1つは、インデックスを使用して、現在の状態を維持すること$numです。もう1つの方法は、実際の会社IDフィールドを使用することIDです。のインデックスを$num使用する場合、ユーザーがフォームを送信するとき(つまり、会社を選択するとき)、データベースを再クエリし、結果を再ループして特定の会社を見つける必要があります(または、LIMIT/を使用できます)。 OFFSET;回答の最後にあるメモ)。

フォームで実際の会社IDを使用することをお勧めします。

while (($row = mysql_fetch_assoc($result))) {
    $options.= '<option value="' . $row['ID'] . '">' . $row["Company_Name"] . '</option>'; 
}

これにより、それぞれの値が特定の会社IDになることを除いて、現在のようにオプションのリストが生成されます。ユーザーがフォームを送信するときに、フォームがを使用していると仮定しPOSTます。次のコマンドでIDを取得できます。

$companyId = (isset($_POST['thing']) && is_numeric($_POST['thing'])) ? intval($_POST['thing']) : false;
$results = mysql_query('SELECT * FROM company_table WHERE ID=' . $companyId);

..そしてあなたが望むように処理します。

$_POST['thing']上記の例では、コード例にselectフィールドという名前が付いているので使用します。IDまた、整数であると仮定します。

指定されているように、実際IDを非表示のままにする必要がある場合は、次のように、のインデックスをMySQLの/$numで使用できます。LIMITOFFSET

$selectedCompany = (isset($_POST['thing']) && is_numeric($_POST['thing'])) ? intval($_POST['thing']) : -1;
if ($selectedCompany >= 0) {
    $query = "SELECT Company_Name, ID FROM company_table LIMIT " . $selectedCompany . ", 1";
    // process as desired
}
于 2012-07-20T01:46:40.450 に答える
0

オプションは、タイムスタンプである会社テーブルに「作成された」フィールドを追加するか、ランダムなUUID列である2番目の列だけを追加することです。次に、ドロップダウンの値をこの列に設定して、IDを表示しないようにしますが、「その他」のIDも使用しているため、レコードは引き続きわかります。私は実際に私のプログラムの1つでこの方法を使用していますが、それはあなたと同じ状況であり、クライアントはIDが表示されることを望んでいませんでした。

この方法を使用したくない場合(2番目の列が必要ないため)、IDまたはその他のハッシュ方法をmd5でハッシュすることができます。

その後、あなたはします

SELECT * FROM company where md5(id) = "$value". 

このメソッドの欠点は、インデックスを使用せず、各IDのすべてのmd5ハッシュを計算する必要があるため、コストのかかるクエリになることです。

于 2012-07-20T01:47:26.607 に答える