0

我有一个 DDL 中的组织列表,其中文本显示每个组织的全名,值是该组织的键。选择组织时,我需要将全名和密钥输入到我的数据库中。我无法使用 PHP 访问 Value 和 Text,所以我最终在 Value 字段中将全名和键串在一起,并使用 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

1

我将使用 jQuery 来执行此操作,我将添加一个隐藏元素并将该值分配为表单提交时选项的文本值。

<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='hidden' name='option_text'value='' >
    <input type="Submit" value="Submit">
</form>

<script type="text/javascript">
    $('form').on('submit', function(e){
        e.preventDefault();
        var text = $('#org_name').find(":selected").text();
        $('input[name="option_text"]').val(text);
        $('form').submit();
    });
</script>
于 2013-10-09T13:44:38.803 回答
0

$_POST无法通过数组之类的方式访问所选值和名称。

但是,在这种情况下,我通常会在数据库中创建一个包含所有可能组织及其名称和代码的表。SELECT *在 PHP 中,当为原始页面生成 HTML 时,我会生成在该数据库上使用的选择选项列表。然后,当提交数据时,您只需将组织代码插入您正在处理的第二个表中。当您需要知道与该表中的记录关联的完整组织代码和名称时,您可以使用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 回答