将动态命名的无线电输入中的值提交到数据库

Posted

技术标签:

【中文标题】将动态命名的无线电输入中的值提交到数据库【英文标题】:Submitting values from dynamically named radio inputs to database 【发布时间】:2016-09-23 18:14:31 【问题描述】:

我充其量是 php 的业余爱好者,但我可以慢慢地吹嘘自己。 在下面的代码中,我试图获取一些动态生成的单选按钮的值,然后将详细信息提交到数据库。

随着数据库的更新,我取得了部分成功,但这只是最后一次。例如下面的代码为 2016-03-01、2016-03-02、2016-03-03 和 2016-03-04 生成单选按钮。如果我在所有单选按钮上选择“关闭”并提交它只会更改数据库中的最后一个日期。

可能有一种更简单的方法可以做到这一点。但是通过谷歌搜索,这是我设法用我有限的知识拼凑起来的代码。

感谢您提供的任何帮助。

<form action="" id="open_closed" method="post">
<?php
global $wpdb;
$startdate       = '2016-03-01';
$nextdate        = '2016-03-04';
$get_month_dates = $wpdb->get_results("SELECT * FROM wp_vgs_attendance WHERE date >= '$startdate' AND date <= '$nextdate' ");
foreach ($get_month_dates as $month_dates) 
$individual_date = $month_dates->date;
echo '<input type="radio" name="' . $individual_date . '" id="' . $individual_date . '" value="0">Open</input>';
echo '<input type="radio" name="' . $individual_date . '" id="' . $individual_date . '" value="1">Closed</input>';
echo '<input type="hidden" name="date-' . $individual_date . '" id="date-' . $individual_date . '" value="' . $individual_date . '"></input> - ' . $individual_date . '<br><br>';


?>
<input name="open_closed" type="submit" class="button button-primary button-large" value="Submit">
</form>
<?php

if (isset($_POST['open_closed'])) 
global $wpdb;
foreach ($get_month_dates as $month_dates) 
    $individual_date = $month_dates->date;
    $name            = $individual_date;
    $open            = $_POST[$name];
    $date            = $_POST['date-' . $individual_date . ''];


$wpdb->query("UPDATE wp_vgs_attendance SET closed = '$open' WHERE date = '$date'");


【问题讨论】:

您为每个组中的两个按钮提供了相同的 ID。 ID 应该是唯一的。你确定按钮甚至需要有 ID 吗?他们可能只需要名字。 【参考方案1】:
<form action="" id="open_closed" method="post">
<?php
global $wpdb;
$startdate       = '2016-03-01';
$nextdate        = '2016-03-04';
$get_month_dates = $wpdb->get_results("SELECT * FROM wp_vgs_attendance WHERE date >= '$startdate' AND date <= '$nextdate' ");
foreach ($get_month_dates as $month_dates) 
$individual_date = $month_dates->date;
echo '<input type="radio" name="' . $individual_date . '" id="' . $individual_date . '" value="0">Open</input>';
echo '<input type="radio" name="' . $individual_date . '" id="' . $individual_date . '" value="1">Closed</input>';
echo '<input type="hidden" name="date-' . $individual_date . '" id="date-' . $individual_date . '" value="' . $individual_date . '"></input> - ' . $individual_date . '<br><br>';


?>
<input name="open_closed" type="submit" class="button button-primary button-large" value="Submit">
</form>
<?php

if (isset($_POST['open_closed'])) 
global $wpdb;
foreach ($get_month_dates as $month_dates) 
    $individual_date = $month_dates->date;
    $name            = $individual_date;
    $open            = $_POST[$name];
    $date            = $_POST['date-' . $individual_date . ''];

    $wpdb->query("UPDATE wp_vgs_attendance SET closed = '$open' WHERE date = '$date'");



只需将 UPDATE 查询放在 foreach 循环中即可。

【讨论】:

以上是关于将动态命名的无线电输入中的值提交到数据库的主要内容,如果未能解决你的问题,请参考以下文章

jQuery设置无线电输入的值[重复]

是否有一个 JavaScript 函数可以确定检查哪个无线电输入并使用该无线电输入的值发出警报? [复制]

如何在表单提交之前立即在无线电输入上设置自定义值

如何从 JavaScript 中的无线电输入中获取“未检查”事件?

用户提交答案后,有没有办法将测试表的答案复制到 pdf 中?

如何使用react-js以动态形式将复选框值与文本输入绑定?