我有一个表单,我可以订阅和取消订阅用户的简报,“表单”本身如下:
使用以下代码动态创建复选框:
<?php
$i = 0;
while($objResult1 = mysql_fetch_array($objQuery1))
{
$i++;
?>
<tr>
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
<td><div align="center"><?=$objResult1["Titel"];?> </div></td>
<td><div align="center"><input type="checkbox" name="sub[]" value="10"> </div></td>
<td><div align="center"><input type="checkbox" name="sub[]" value="90"> </div></td>
</tr>
<?php
}
?>
我在另一个脚本中使用这些值,我将它们插入到这样的数据库中:
foreach($_POST['sub'] as $i=>$s){
$sql = mysql_query("INSERT INTO Subscriptions (Klant_ID, Mail_ID, Status, Datum) VALUES ('".$Klant_ID."', '".$_POST['mailid'][$i]."', '".$s."', '".$Datum."')") or die(mysql_error());
}
问题是,可以在每一行中选中两个复选框(基本上我可以选择所有复选框)。当我将输入类型设置为“radio”时,我只能选择6个单选按钮中的一个。我有什么办法可以让它工作,所以我可以在每一行选择1个单选按钮吗?如果您有任何疑问或需要更多信息,请在评论中提问。 Thnx提前!
注意: 不总是有3行,根据数据库中的行数动态创建行。
修改 由于Jueecy's answer:
,我让它使用此代码<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
<tr>
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
<td><div align="center"><?=$objResult1["Titel"];?> </div></td>
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="10"> </div></td>
<td><div align="center"><input type="radio" name="sub[<?php echo $i; ?>]" value="90"> </div></td>
<tr>
<?php endfor; ?>
我现在只有另外一个问题,ID为1的行不再显示了。任何人都知道如何解决这个问题?^^
答案 0 :(得分:1)
我有什么方法可以让它工作,所以我可以在每一行选择1个单选按钮吗?
当然有。您应该选择具有无线电按钮并按名称对它们进行分组。只有具有相同名称的单选按钮才会被限制为只有一个值:
<input type="radio" name="row1" value="x">X</input>
<input type="radio" name="row1" value="y">Y</input>
<input type="radio" name="row2" value="x">X</input>
<input type="radio" name="row2" value="y">Y</input>
我认为你很容易想出一个合适的循环。有点像:
<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
<tr>
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
<td><div align="center"><?=$objResult1["Titel"];?> </div></td>
<td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="10"> </div></td>
<td><div align="center"><input type="checkbox" name="sub<?php echo $i; ?>" value="90"> </div></td>
<tr>
<?php endfor; ?>
答案 1 :(得分:0)
为了实现这一点,单选按钮的名称只能在每行共享,因为名称定义了一组无线电,其中只有一个可以被检查。
明确这一点对你解决方案的其余部分有影响,但我相信你可以解决这些问题。
答案 2 :(得分:0)
我举了一个单选按钮的例子:
<html>
<head>
<title>My Page</title>
</head>
<body>
<form name="myform" action="http://www.mydomain.com/myformhandler.cgi" method="POST">
<div align="center"><br>
<input type="radio" name="group1" value="Milk" /> Milk<br />
<input type="radio" name="group1" value="Butter" checked /> Butter<br />
<input type="radio" name="group1" value="Cheese" /> Cheese
<hr />
<input type="radio" name="group2" value="Water"/> Water<br />
<input type="radio" name="group2" value="Beer" /> Beer<br />
<input type="radio" name="group2" value="Wine" checked /> Wine<br />
</div>
</form>
</body>
</html>
要对radioboxes进行分组,请使用“name”属性。 我只想改变你的例子如下:
<?php
$i = 0;
while($objResult1 = mysql_fetch_array($objQuery1))
{
$i++;
?>
<tr>
<td><div align="center"><?=$objResult1["ID"];?><input type="hidden" name="mailid[]" value="<?=$objResult1["ID"];?>"> </div></td>
<td><div align="center"><?=$objResult1["Titel"];?> </div></td>
<td><div align="center"><input type="checkbox" name="sub1" value="10"> </div></td>
<td><div align="center"><input type="checkbox" name="sub1" value="90"> </div></td>
<td><div align="center"><input type="checkbox" name="sub2" value="10"> </div></td>
<td><div align="center"><input type="checkbox" name="sub2" value="90"> </div></td>
</tr>
<?php
}
?>
答案 3 :(得分:0)
每行使用一个单选按钮组或在选择订阅时使用javascript取消选择取消订阅,反之亦然。
答案 4 :(得分:0)
您可以使用此代码:它可以100%运行
<tr>
<td><div align="center">1</div></td>
<td><div align="center">2</div></td>
<td><div align="center"><input type="radio" name="sub[1]" value="10"> </div></td>
<td><div align="center"><input type="radio" name="sub[1]" value="90"> </div></td>
</tr>
<tr>
<td><div align="center">1</div></td>
<td><div align="center">2</div></td>
<td><div align="center"><input type="radio" name="sub[2]" value="10"> </div></td>
<td><div align="center"><input type="radio" name="sub[2]" value="90"> </div></td>
</tr>
<tr>
<td><div align="center">1</div></td>
<td><div align="center">2</div></td>
<td><div align="center"><input type="radio" name="sub[3]" value="10"> </div></td>
<td><div align="center"><input type="radio" name="sub[3]" value="90"> </div></td>
</tr>