【问题标题】:How to store the names of checkboxes of a form to a php arrray如何将表单复选框的名称存储到php数组中
【发布时间】:2013-10-13 02:06:16
【问题描述】:

首先,我想存储提交的这些复选框的名称,而不是它们的值。

这是我的代码:

<?php
    $con=mysqli_connect("localhost","root","","notifier");
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM student");

echo "Enter the attendance. Please untick for 'ABSENT' students and submit";
echo "<br>";
echo "<form action=\"d.php\" method=\"post\">";
while($row = mysqli_fetch_array($result))
{
    echo "<br>" .$row['classrollno'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
}
    echo "<input type=\"submit\" name=\"submit\" value=\"submit\">";
echo "</form>";
?>

此代码只是从学生表中获取一列学生卷号,打印它们,并在它们前面打印一个默认选中的复选框。 复选框的名称将是学生 ID(varchar,另一列)。

现在由于所有选中的复选框,即将提交到下一页的复选框将具有相同的默认值“P”,我不关心它们的值。

如何将这些复选框的名称存储在一个数组中,然后使用它来为所有这些学生 ID 执行表中的更新?

【问题讨论】:

  • 然后尝试将您实际需要的数据作为值,并查看this example

标签: php mysql sql checkbox


【解决方案1】:

继续将名称添加到数组中。直截了当。

while 循环外声明$allStudentIds = array();。然后,要存储在该数组中,

$allStudentIds[] = $row['studentid'];

由于您想稍后使用这些值,您可以直接将它们存储在会话变量中:

$_SESSION['allStudentIds'][] = $row['studentid'];

在上述情况下,$_SESSION['allStudentIds'] 将是一个包含所有选定学生 ID 的数组。

注意:您需要在打开&lt;?php标签后使用session_start()作为脚本的第一行来启动会话。

【讨论】:

    【解决方案2】:

    简单地说,在获取 while 循环中,定义一个数组并将每个复选框值设置为其元素之一,然后将其分配为会话变量:

    while($row = mysqli_fetch_array($result))
    {
        echo "<br>" .$row['classrollno'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
    $names[] = $row['studentid'];
    }
    

    那么,

    $_SESSION['names'] = $names;
    

    【讨论】:

      【解决方案3】:

      使用以下代码:

      while($row = mysqli_fetch_array($result))
      {
          echo '<br>' .$row['classrollno'] . '&nbsp;&nbsp;&nbsp;<input type="checkbox" name="studentId[]" value="' . $row['studentid'] . '" checked />';
      }
      

      然后,当您处理表单时,$_POST['studentId'] 变量将包含一个包含所有 id 的数组。

      由于每个学生可能插入到数据库中的值是“P”,因此您无需将其包含在表单中,只需将其硬编码到查询中即可。

      【讨论】:

      • 优秀的解决方案。我试图保存名称而不是值,您向我展示了如何在表单中切换名称和值。谢谢。
      【解决方案4】:

      您的困惑似乎源于您将视图(HTML 中复选框的名称)和模型/数据(您从数据库查询中获得的 student_id 即 $row = mysqli_fetch_array( $result) 在 while 循环中)。

      您需要做的就是在循环之前和回显语句之后创建一个空数组(例如 $studentid_arr),这只是对视图(HTML)有贡献,您可以对数据进行一些处理。您当前要做的是将 student_ids(而不是复选框的名称)存储在 $studentid_arr 中。

      这可以通过一个简单的array_push ($studentid_arr,$row['studentid']);来完成

      所以你的 while 循环看起来像

      while($row = mysqli_fetch_array($result))
      {
          echo "<br>" .$row['classrollno'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
          array_push ($studentid_arr,$row['studentid']);
      }
      

      现在您可以将这个 PHP 数组发布到您的下一个脚本,该脚本需要这些值。 (这就是我假设您提交到下一页的意思)

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多