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

如何用PHP在表格中提交动态下拉列表并传递sbranch_name

解决POST传递下拉列表值的问题

你的问题核心出在下拉列表的name属性写错了,还有一些小细节需要调整,下面一步步给你修正:

1. 修正下拉列表的name属性

你写的是<select name1='sbranch_name'>,但表单元素是通过name属性来标识字段的,PHP的$_POST数组只会识别带有name属性的表单控件,所以要把name1改成name。

2. 调整session_start()的位置

session_start()必须放在所有输出(包括HTML标签)之前,否则会触发"headers already sent"的错误,所以要把它移到PHP代码的最开头。

3. 修正处理页面的冗余代码

你的processstaffb.php里有个无意义的echo "$name1";,这个变量没定义,可以删掉;另外$check变量也未定义,建议改成明确的成功提示。


修改后的下拉列表代码:

<?php session_start(); ?>
<form action="processstaffb.php" method="post">
<table id="t01">
<h2> Add Staff User </h2>
<tr>
<th width="1%">Branch</th>
</tr>
<tr>
<td width="1%">
<?php 
$mysqli = new mysqli(spf, dbuser, dbpw, db); 
$sql="Select sbranch_name from branches"; 
$result = $mysqli->query($sql); 
if ($result->num_rows > 0) { 
    echo "<select name='sbranch_name'>"; 
    while($row = $result->fetch_assoc()) { 
        echo "<option value='" . htmlspecialchars($row['sbranch_name']) . "'>" . htmlspecialchars($row['sbranch_name']) . "</option>"; 
    } 
    echo "</select>"; 
} 
$mysqli->close(); 
?>
</td>
</tr>
</table>
<br>
<br>
<input type="submit" id="button2" name="submit" value="Add staff" />
<input type="reset" id="button2" value="Clear"/>
</form>

额外加了htmlspecialchars()来防止XSS攻击,让代码更安全

修改后的processstaffb.php代码:

<?php
session_start(); // 如果不需要会话功能可以去掉
if (!empty($_POST['sbranch_name'])) { 
    $sbranch_name = $_POST["sbranch_name"]; 
} else { 
    $sbranch_name = null; 
    echo '<p><font color="red">You forgot to enter the branch of the officer!</font></p>'; 
    echo "$sbranch_name"; // 用于测试值是否传递成功
} 

if ($sbranch_name) { 
    $mysqli = new mysqli(spf, dbuser, dbpw, db); 
    $stmt = $mysqli->prepare("INSERT INTO staffbranch (sbranch_name) VALUES (?)"); 
    $stmt->bind_param("s", $sbranch_name); 
    $result = $stmt->execute(); 
    if ($result == true && $stmt->affected_rows>0) { 
        echo "<b>Branch added successfully!</b><br>"; 
    } else { 
        echo '<p>Please <a href="addstaffb.php">Click Here</a> to return</p>'; 
    } 
    $stmt->close(); 
    $mysqli->close(); 
} else { 
    echo '<p>Please <a href="addstaffb.php">Click Here</a> to return</p>'; 
}
?>

现在点击提交按钮,sbranch_name的值就能通过POST正确传递到processstaffb.php完成插入操作了。

内容的提问来源于stack exchange,提问作者Wen Qing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:57:43