使用 PHP 获取 Select Option 的值和文本

问题描述 投票:0回答:4

我在 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')"; 
?>
php
4个回答
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>

0
投票

无法通过

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

但是,在这种情况下,我通常会做的是在数据库中创建一个表,其中包含所有可能的组织及其名称和代码。在 PHP 中,在为原始页面生成 HTML 时,我会在该数据库上使用

SELECT *
生成选择选项列表。然后,当提交数据时,您只需将组织代码插入到您正在处理的第二个表中。当您需要知道与该表中的记录关联的完整组织代码和名称时,您可以使用
JOIN
语句。

例如,假设您现在处理的原始数据库代表用户,每个用户都有一个组织。当有人提交表单时,您可以将新的用户记录插入到该表中,并将组织代码插入到同一用户表中的organization_id 字段中。然后,当您想知道给定用户的组织代码和名称时,您只需

SELECT * FROM users LEFT JOIN organizations ON user.organization_id = organization.id WHERE user.id = blah
。这将返回用户记录及其组织代码和名称。


0
投票

这是仅使用 PHP 时的最佳方法。

一个可能的改进可能是改进如何在变量中拆分 POST:

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

否则你应该使用 javascript 将你需要的变量添加到帖子中


0
投票
<select required name="role_user" class="form-select">

                                          <?php 

                                            $options = array( 'DG', 'DD1', 'DD2', 'DD3', 'SPAG', 'AG' );
                                            $options_title = array( 'Admin', 'Superviseur Direction 1', 'Superviseur Direction 2', 'Superviseur Direction 3', 'Super-Agent', 'Agent' );

                                            $output = '';
                                            for( $i=0; $i<count($options); $i++ ) 
                                            {


                                              if ($get_users_data["permission"] == $options[$i]) {

                                                echo "<option value=$options[$i] selected> $options_title[$i]</option>";

                                              }else{

                                                echo "<option value=$options[$i] > $options_title[$i]</option>";

                                              }


                                            }



                                         ?>

                                        </select>
© www.soinside.com 2019 - 2024. All rights reserved.