【问题标题】:Write dynamic Checkbox to table using values from another table使用另一个表中的值将动态复选框写入表
【发布时间】:2013-01-29 01:27:59
【问题描述】:

问题的当前摘要:我正在从表“main”中提取信息,其中列出了特定 ID 的目标编号和目标名称(最多可以有 10 行)。这些显示在网页上的表格中。我在第一列中添加了反映表中行数的复选框。代码如下,这部分工作正常。输出为 3 列,复选框、目标编号、目标名称,以及最多 10 行,具体取决于表中该特定 ID 的信息量。

goals.php

<tr>
        <td valign=top colspan=3>
            Current Goals<br>
                <?php
                //this data is being pulled from 'main'
                    $result = mysql_query("SELECT * FROM main WHERE idnumber = $idnumber ORDER BY goalnumber");
                    if ($result) {
                    $total_rows = mysql_numrows($result);
                    } else { $total_rows = 0; }
                    print "<table border=1 width=400>\n";
                    print "<tr> \n";
                    print "<th> Checkbox </th> \n";
                    print "<th> Goal Number </th> \n";
                    print "<th> Goal Name </th> \n";
                    print "</tr> \n";
                    //}
                    $i = 0;
                    while ( $i < $total_rows )
                    {
                    $goalno = intval(mysql_result($result, $i, "goalnumber"));
                    $goalname = mysql_result($result, $i, "goalname");
                    $goal_id = intval(mysql_result($result, $i, "goal_id"));
                    print "<tr> \n";
                    print "<td> <center><input type=\"checkbox\" name=\"goal_id_$i\" value=\"$goalnumber - $goalname\"></td> \n";
                    print "<td> $goalnumber </td> \n";
                    print "<td> $goalname </td> \n";
                    print "</tr> \n";
                    $i = $i + 1;
                    }
                ?>
                </table>
        </td>

一旦用户选中这些复选框中的 1-10 个并提交表单,我需要将所述选择的值传递给数据库(每个选择都应写入数据库表“updated_goals”中的一个新字段。提交时调用以下文件。请注意,我正在将复选框值写入同一个数据库“updated_goals”中的不同表。我不确定代码哪里出错了,但目标是写入将复选框“$goalnumber - $goalname”添加到goal_id 字段中。

goals_submit.php

// process data in table: updated_goals
$query = "SELECT idnumber from updated_goals where idnumber = {$_POST['idnumber']}";
$result = mysql_query($query);
$total_rows = mysql_numrows($result);

            //writing data to 'updated_goals'

        if (isset($_POST ['goal_id_$i'])) { $goal_id = ReplaceQuotes($_POST['goal_id_$i']); } else { $goal_id = ""; }

    $query = "INSERT INTO updated_goals ( ";
    $query .= "goal_id ";
    $query .= ") VALUES ( ";
    $query .= "'$goal_id' ";
    $query .= ")";

【问题讨论】:

  • 您遇到错误了吗?您是否尝试回显 $query 以查看查询内容?
  • Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDOMySQLi - this article 将帮助您决定哪个。
  • 你为什么使用 $_POST['goal_id'][$i]?它必须是 $_POST['goald_id_$id'];您认为复选框名称是 name="goal_id[$i]" 但它不是。
  • 我得到的错误是'Notice: Undefined variable: i in \goals_submit.php on line 34' 这是上面的'if (isset'语句。查询是://处理数据table: medsocial $query = "SELECT stid from medicaid where stid = {$_POST['stid']}"; $result = mysql_query($query); $total_rows = mysql_numrows($result); 还有其他信息在写在表单上正确,复选框是唯一不起作用的东西。它正在删除表中的“null”值并将其替换为空白“”
  • @AkamOmer 有正确的答案。他只需要添加它作为答案。

标签: php mysql checkbox


【解决方案1】:

可能的解决方案:

改变这一行:

if (isset($_POST ['goal_id'][$i])) { $goal_id = ReplaceQuotes($_POST['goal_id'][$i]); } else { $goal_id = ""; }

if (isset($_POST ['goal_id_'.$i])) { $goal_id = ReplaceQuotes($_POST['goal_id_'.$i]); } else { $goal_id = ""; }

或 改变这一行

print "<td> <center><input type=\"checkbox\" name=\"goal_id_$i\" value=\"$goalnumber - $goalname\"></td> \n";

print "<td> <center><input type=\"checkbox\" name=\"goal_id[$i]\" value=\"$goalnumber - $goalname\"></td> \n";

如果数组用于输入名称,例如: 输入名称[] 它可以通过 $_POST['inputname'][index] 或 $_GET['inputname'][index]

通过 POST 或 GET 获取

【讨论】:

  • 我选择了您的第一个选项,更改了 if (isset 语句,但仍然出现错误:注意:未定义变量:第 36 行的 \goals_submit.php 中的 i 如果我从您的第一个更改为以下内容评论, if (isset($_POST ['goal_id_$i'])) { $goal_id = ReplaceQuotes($_POST['goal_id_$i']); } else { $goal_id = ""; } 错误消失但没有值被传递给表
  • 好的,使用 print_r($_POST) 查看是否有值?并回显 $query 以查看查询是否完整?您还可以使用您尝试过的内容更新您的第一篇文章。
  • 随着 print_r($_POST) 得到以下错误'注意:未定义的索引:第 38 行 \goals_submit.php 中的 target_id_$i 注意:未定义的索引:第 38 行 \goals_submit.php 中的goals_id_$i 38' 其中第 38 行是我们正在处理的语句
  • 好的,我们希望 $i 是一个变量?是的:它被解释为文本,请您粘贴您尝试过的完整代码吗?
  • 对不起,我说错了。这是 print_r($_POST) Array ( [idnumber] =&gt; 123456 [goal_id_1] =&gt; 1 - PLOP/Math [progress] =&gt; Progress Made [unit] =&gt; testing 1 [activity] =&gt; ox [plan] =&gt; Continue [assessment] =&gt; testing 2 ) 的结果,这显示了将goal_id 的值传递给数据库,但是当我在数据库中调用表时它没有显示,所有其他值都显示在表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多