获取所选复选框的ID

时间:2018-02-22 14:29:38

标签: php mysql

我目前正在开发一个php和MySQL应用程序。在我的应用程序中,我从MySQL加载一个表,并将其显示在我的网站中。该表由列(ID,Name,SurName)组成。当我加载表时,我还创建了另一个包含不同复选框的列。我创建表的源代码如下:

function user_clients_table() {

   $con = mysql_connect("localhost","root",'');
   if(!$con){

   die("Cannot Connect" . mysql_error());

   }
    mysql_select_db("client_app",$con);
    $get_user_clients = "SELECT `ID`,`Name`,`SurName` FROM `clients`  ";
    $clients = mysql_query($get_user_clients,$con);

   echo "<table  border=2>
   <tr>   
   <th>Client</th>
   <th>Name</th>
   <th>SurName</th>
   <th>Receive Message</th>
   </tr>";
   while($record = mysql_fetch_array($clients)){
    echo "<form action=pushnotification.php method=post>";
    echo "<tr>";
    echo "<td>".$record['ID']." </td>";
    echo "<td>".$record['Name']." </td>";
    echo "<td>".$record['SurName']." </td>";
    echo "<td>"."<input type=checkbox name= checkbox[".$record['ID']."] "."</td>";
    echo "</tr>";
    echo "</form>";
     }

echo "</table>";     
mysql_close();

}

该表格在网站上看起来是这样的:

enter image description here

我想要做的是,如果在点击网站上的发送按钮后设置了客户端的复选框,则从表的第一列回显客户端ID。例如,如果顶部复选框isset我想要回显“1”,如果选中第三行中的复选框,我想回显“3”。

到目前为止我已经这样做了:

if (isset($_POST['checkbox']))
{
    foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

    echo '<span style="color:#AFA;text-align:center;">'.$receivemsg.'</span>';

}

但它仅适用于第一个复选框,其他复选框不起作用。 有人可以帮我这样做吗? 谢谢你的问候

1 个答案:

答案 0 :(得分:1)

(在HTML中,您将属性放在&#34;&#34;,例如类型=&#34;复选框&#34;。使用&#39;&#39;作为您的代码,以便您可以使用&#34;&#34;对于属性。您在输入标记的末尾也缺少&#34; /&gt;&#34;。

使用isset,您实际上只检查第一个。删除它,使用foreach,无论如何都不需要它,因为它遍历已检查的复选框(如果您将它们作为数组从HTML发送)。如果没有选中任何复选框,则循环将以0次运行。

foreach ($_POST['checkbox'] as $key => $value)
    {
        $receivemsg = $key;
    }

如果你这样写,它只会保存最后一个选中的复选框。也许你想要

foreach ($_POST['checkbox'] as $key => $value)
        {
            $receivemsg[] = $key;
        }

当然,注释,mysqli和其他人在评论中提到了什么。

(就我个人而言,如果复选框作为数组发送,isset不再对它们起作用,我觉得有点奇怪。或者更确切地说,它作为数组的元素在它们上面工作。)

正如@Johannes所说,你还要为每个复选框声明一个表格。