我目前正在开发一个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();
}
该表格在网站上看起来是这样的:
我想要做的是,如果在点击网站上的发送按钮后设置了客户端的复选框,则从表的第一列回显客户端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>';
}
但它仅适用于第一个复选框,其他复选框不起作用。 有人可以帮我这样做吗? 谢谢你的问候
答案 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所说,你还要为每个复选框声明一个表格。