php - 根据 HTML 选择选项在 PHP 中分配一个变量并将结果插入数据库表

标签 php mysql arrays loops

我正在运行以下查询以从 timesheetlogin 表中检索信息。

$clientlist = db_select("SELECT * FROM timesheetlogin WHERE type='client' ORDER BY company DESC");
$candlist = db_select("SELECT * FROM timesheetlogin WHERE type='cand' ORDER BY name DESC");

此信息以表单形式显示在前端。

<select name="client" id="client">
<?php 
    foreach($clientlist as $key => $value) {
            $company = $clientlist[$key]["company"];
            $name = " (" . $clientlist[$key]["name"] . ")";
            echo '<option value="'. $company .'">'. $company . $name .' </option>';
            $clientid = $clientlist[$key]["id"];
                    }
                ?>  
</select><br />

所以表格有很多我没有显示的空白字段,只有客户和候选人姓名是从下拉列表中选择的。

最后我想将条目插入数据库:

if (isset($_POST['submit'])) {
    $clientid = db_quote($_POST['client']);
    $candid = db_quote($_POST['cand']);

这是SQL

db_query("INSERT INTO timesheets (clientid, candid, weekending, department, orderno, basicpay, basiccharge, otpay, otcharge, ot2pay, ot2charge, status, hue, huc) VALUES ('$client', '$cand', '$week_ending', '$department', '$order_no', '$basic_pay', '$basic_charge', '$ot_pay', '$ot_charge', '$ot2_pay', '$ot2_charge', '$status', '$hue', '$huc')");

我遇到的问题是我需要传递与 $_POST['client']$_POST['cand'] 关联的 id,而不是传递的字符串当前在选项字段中。

我最初的想法是做这样的事情来检查'client'字段并查询数据库以获取id的值:

if (isset($_POST['client'])) {
    //code
}

虽然看起来很乱。我已经查询了数据库并遍历了 $clientlist 数组,因此在该循环中可以使用 id。有没有办法根据用户从选择框中选择的内容来分配 $clientid 变量?

谢谢

最佳答案

你可以像这样输入 id :

$clientid = $clientlist[$key]["id"];
echo '<option value="'.$clientid.'">'. $company . $name .' </option>';

关于php - 根据 HTML 选择选项在 PHP 中分配一个变量并将结果插入数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558143/

相关文章:

mysql查询报错unix时间戳

PHP:从 array_values() 中的值中剥离标签

php - 更改 Zend Framework 2 默认模板解析器行为

php - 我需要在准备好的语句中使用 htmlentities() 或 htmlspecialchars() 吗?

php - 带有 php session 的 CORS

php - 如何在数组键中搜索子字符串?

php - 设置每 15 分钟错误收入限额

mysql - 我的 Mysql 查询没有更新

c++ - 反转字符串中单词的字母

c++ - 如何使用数组按引用对对象进行排序? (以一种不那么愚蠢/复杂的方式。)