在选择框选项中插入隐藏文本

Insert hidden text inside selectbox option

我有一个选择框,可以显示人员列表的名字和姓氏。但我想为他们每个人添加一个 id 并使其不可见。 前任。如果我们有 John SmithID 001 我想写 John Smith:001 ,但是它应该被视为 John Smith。重要的是id不仅看不见而且不占用任何space.

这是我的代码:

$result = pg_query(connect(), "SELECT id, name, surname FROM person ORDER BY name ASC, surname ASC");
    $person = pg_fetch_all($result);
    echo '<select value="Person" name="person">';
         for($i=0; $i<sizeof($person); $i++) {
                $person = $person[$i]['name'].' '.$person[$i]['surname'];
                echo "<option>".$person."<span hidden>:".$person[$i]['name']."</option>";   }       
    echo '</select>';

然而,这不起作用,因为 id 仍然可见

您可以使用选项的值来包含带有分隔符的名称和 ID。阅读的时候可以再拆分。

<option value="$person[$i]['name']:$person[$i]['id']">

尝试使用组合名称和 ID 设置值(根据我的评论):

<?php
$result = pg_query(connect(), "SELECT id, name, surname FROM person ORDER BY name ASC, surname ASC");
$person = pg_fetch_all($result); ?>
<select name="person">
<?php
     for($i=0; $i<sizeof($person); $i++) {
            $name = $person[$i]['name'].' '.$person[$i]['surname']; ?>
      <option value="<?php echo $name.":".$person[$i]['id']; ?>"><?php echo $name; ?></option>
<?php
} ?>  
</select>

给你这样的东西:

Array
    (
        [person] => doug johnson:1
    )

您只需保持不同的值和不同的标题即可。 所以,代码应该是: 让我更简单一点 $name 是这个人的全名, $id 是他的 id。

<option value="<?php echo $name.":".$id?>"><?php echo $name;?></option>

看起来这项工作可以做得更干净一些。但无论如何,关键是您可以使用 value 属性向服务器发送与用户看到的不同的值。

顺便说一句,请记住,用户始终可以通过在浏览器中查看源代码来查看值。 (如果这不是你想要的,那么你必须在 php 代码中更改值部分,否则这段代码就可以了)