You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将表格行内下拉框选中值传递至其他页面(PHP场景)

实现方法

你当前代码有3个基础问题会导致传值失败:

  • 用<div>标签写action/method属性完全无效,表单提交必须使用<form>标签
  • 现有call按钮是固定写死的href链接,无法获取用户操作后动态选中的下拉框值
  • 下拉框写的require是拼写错误,正确HTML校验属性是required;且被设置disabled的表单元素默认不会随请求提交,需要额外兼容

方案1:原生表单POST提交(无JS,兼容性最好)

直接把每行操作区的div换成独立form标签,把a标签换成submit提交按钮,同时补全disabled状态下的隐藏域存默认医生值,修正代码笔误即可,改完的行内操作区代码如下:

<td>
    <!-- 把div换成form标签,指定提交地址和方法 -->
    <form action="manage_db.php" method="post">
        <!-- 隐藏域存当前行的HN号,替代原来url拼接的参数 -->
        <input type="hidden" name="hn_patient" value="<?php echo $row["hn"];?>">

        <select class="select" name="doc_drop" 
            <?php if($row["doc"] != 'general'){ ?>
            disabled
            <?php // 禁用状态下加隐藏域,保证默认值能提交
            $default_doc = trim($row["doc"]); ?>
            <input type="hidden" name="doc_drop" value="<?php echo $default_doc;?>">
            <?php } ?> 
            required>
            <option selected disabled>doctor</option>
            <?php foreach($result2 as $doc_select){
                // 修正原代码笔误:$doc_selectp 多了个p,改为$doc_select
                $doc_val = $doc_select["doc"];
            ?>
                <option value="<?php echo $doc_val;?>" 
                <?= ( trim( $row["doc"] ) == $doc_val ? 'selected' : '' ) ?>>                              
                    <?php echo $doc_val;?>
                </option>
            <?php } ?>
        </select>

        <select class="select" name="room" required>
            <option selected disabled>room</option>
            <option value="1">room 1</option>
            <option value="2">room 2</option>
            <option value="3">room 3</option>
            <option value="4">room 4</option>
            <option value="5">room 5</option>
        </select>

        <!-- 把a标签换成提交按钮,可自行加CSS保持和原btn-call样式一致 -->
        <button type="submit" class="btn-call">call</button>
    </form>
</td>

提交后在manage_db.php里直接用$_POST拿值即可:

$hn = $_POST['hn_patient'];
$selected_doc = $_POST['doc_drop'];
$selected_room = $_POST['room'];

方案2:保留GET跳转,用少量JS拼接参数

如果你不想改POST提交,要保持原来的URL传参形式,给HN列加个标识类、给call按钮加点击事件,动态获取当前行的下拉框值拼到跳转地址里即可:
首先修改HN列的td、call按钮代码:

<!-- 给HN列加类名方便JS取值 -->
<td class="hn-col"><?php echo $row["hn"] ?></td>

<!-- 省略其他列代码 -->

<td>
    <!-- 原有下拉框代码保持不变 -->
    <select class="select" name="doc_drop" <?= ( $row["doc"] == 'general' ? '' : 'disabled' ) ?> required>
        <!-- 原有选项代码不变,记得修正$doc_selectp的笔误、把require改成required -->
    </select>
    <select class="select" name="room" required>
        <!-- 原有选项代码不变 -->
    </select>

    <!-- 修改call按钮,绑定点击事件 -->
    <a href="javascript:;" onclick="goToCall(this)" class="btn-call">call</a>
</td>

在页面底部加JS函数:

function goToCall(btn){
    // 获取当前按钮所在的表格行
    const currentTr = btn.closest('tr');
    // 读取当前行的三个参数
    const hn = currentTr.querySelector('.hn-col').textContent.trim();
    const docVal = currentTr.querySelector('select[name="doc_drop"]').value;
    const roomVal = currentTr.querySelector('select[name="room"]').value;
    // 校验必填项
    if(!docVal || !roomVal){
        alert('请先选择医生和诊室');
        return;
    }
    // 拼接地址跳转
    location.href = `manage_db.php?hn_patient=${hn}&doc_drop=${encodeURIComponent(docVal)}&room=${roomVal}`;
}

这种方式提交后在manage_db.php里用$_GET获取三个参数即可,disabled状态的下拉框值JS可以正常读取,不需要额外加隐藏域。


内容的提问来源于stack exchange,提问作者Namtan Saranya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:48:22