我试图在PHP中使用while循环在html中创建多个复选框。
while($counter != 5){
?>
<Input type = 'Checkbox' Name = '<?php echo '$foods[$counter]'; ?>' value ="yeeeey">
<?php
echo $foods[$counter];
echo " ";
?>
<input type="text" class="textfield" value="" name="<?php echo $foods_val[$counter]; ?>"
onkeypress="return isNumber(event)" style="width:55px";>
<P>
<?php
$counter++;
}
$counter = 0;
?>
<INPUT TYPE = "Submit" Name = "Submit1" VALUE = "Input order">
</FORM>
暂时不介意文字字段。基本上,我试图根据数组创建多个带有名称和值的复选框。
$foods = array($rw, $mrd, $rd, ... , $bb);
并且每个变量都包含一个字符串。 我有一个代码来检测检查了哪些复选框
if(isset($_POST['Submit1'])){
while($counter != 21){
if(isset($_POST['$foods[$counter]'])){
echo "yeeeeeeeeeeeeeeeeeeeeey";
}
$counter++;
}
}
然而,当我尝试检查一些盒子时,字符串&#34;yeeeeeeeeeeeeeeeeeeeeeeeeeeée;&#34;永远不会打印。似乎$ _POST [&#39; $ foods [$ counter]&#39;]是空的,即使它应该包含&#34; yeeeeeey&#34;。你怎么解决这个?抱歉蹩脚的格式化,仍然习惯它。感谢
小更新。 $ foods [$ counter]中的所有变量现在都包含相同的字符串:&#34; food&#34;。我现在的问题是,所有复选框的行为都像是经过检查并且包含相同的值&#34; yeeey&#34;
答案 0 :(得分:1)
我认为,您的问题至少与您在$_POST['$foods[$counter]']
中使用的引号有关。如果您使用&#34;双引号&#34;,以$开头的PHP变量将替换为它们的值,但如果使用&quot;单引号&#39;,则它们不是。因此,您尝试访问'$foods[$counter]'
的密钥$_POST
(字面意思!)。
用&#34;双引号替换它们&#34;可能有效,但由于$foods
包含字符串,因此您根本不需要引号:$_POST[$foods[$counter]]
如果仍然不起作用,则代码中可能存在更多缺陷。暂时,给它一个特里;)
答案 1 :(得分:1)
这是通过php生成复选框数组的代码。
<?php
$i = 0;
while($i < 5) {
echo "<input type='checkbox' name='hobbies[]' />";
$i++;
}
此代码将创建5个复选框的数组...您不需要指定计数器变量 你做了......
<Input type = 'Checkbox' Name = '<?php echo '$foods[$counter]'; ?>' value ="yeeeey">
答案 2 :(得分:0)
<input type="text" class="textfield" value="" name="food_vals[]" onkeypress="return isNumber(event)" style="width:55px";>
然后在服务器端:
foreach ($_POST['food_vals'] as $value) {
echo $value;
}