我有一个表单,我可以在其中订阅新闻稿,如下所示:
它的代码就是:
<?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
}
?>
$ objQuery1:
$strSQL1 = "SELECT ID, Titel FROM Mail";
$objQuery1 = mysql_query($strSQL1);
这个表单就像这样工作得很好,问题是我想把输入更改为无线电。为此,我将其编辑为以下内容:
<?php
$i = 0;
while($objResult1 = mysql_fetch_array($objQuery1))
{
$i++;
?>
<?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; ?>
<?php
}
?>
这个问题是现在不再显示ID为1的第一行。有谁知道出了什么问题?^^它可能是一个非常简单的解决方案,但我似乎无法找到它。任何帮助都会很棒!
答案 0 :(得分:2)
当您致电$objResult1 = mysql_fetch_array($objQuery1)
时,您会从结果集中获取一行。所以当你这样做时,就在它之后:
<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++): ?>
您正在获取结果集的第二行,这就是您在$objResult1
中使用的内容。在您的代码中,您永远不会使用第一个结果集。
我的建议是,如果必须保留此设计,则使用do{} while();
循环。
答案 1 :(得分:1)
改变这个:
<?php for ($i = 0; $objResult1 = mysql_fetch_array($objQuery1); $i++) : ?>
到
<?php for ($j = 0; $objResult1 = mysql_fetch_array($objQuery1); $j++) : ?>
循环中的内容累积
在外圈和内圈
中使用$ i让你变得混乱答案 2 :(得分:0)
您不需要for循环。只需将复选框更改为while循环中的单选按钮。
编辑:
<?php
$i = 1;
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="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
}
?>
答案 3 :(得分:0)
你嵌套了两个循环:while和for。两者似乎都做同样的工作(即:从结果集中获取行)。所以基本上你的第一行while
“消耗”你的第一行。你应该摆脱它。