我有这个代码:
<table><tr><th>Select a Ramp: </th></tr>
<?php
global $dbc;
$rampq="SELECT item_id, item_name FROM items WHERE category_id = '1'";
$rampr = @mysqli_query($dbc, $rampq) or die(mysqli_error($dbc));
while($row = mysqli_fetch_array($rampr)){
echo '<tr><td><input type="radio" name="rampGroup"
value="' . $row['item_id'] . '"';
if(isset($_POST['rampGroup']) && $_POST['rampGroup']==$row['item_id']){
echo 'checked="checked"';}echo'>' . $row['item_name'] . '</tr>'; }
echo '<tr><input type="radio" name="rampGroup" value="0"';if(isset($_POST['rampGroup']) && $_POST['rampGroup']==0){echo 'checked="checked"';}
echo'>No Ramp</tr></table>';
?>
当这个代码在浏览器上输出时,它看起来像:
o无坡道
选择坡道:
o液压单闸门
o液压双折叠闸门
"no ramp"应该是最后打印的,但它会跳到查询返回的项目之上。有什么方法可以让它正确输出吗?
您的html无效。noramp
项不包含在<td>
或<th>
中,因此浏览器将其移动到表的"顶部"。
echo '<tr><input type="radio" name="rampGroup" value="0"';
^----missing <td> here
echo'>No Ramp</tr></table>';
^---missing </td> here
您可以尝试这种方式
global $dbc;
$rampq="SELECT item_id, item_name FROM items WHERE category_id = '1'";
$rampr = @mysqli_query($dbc, $rampq) or die(mysqli_error($dbc));
while($row = mysqli_fetch_array($rampr)){
if(isset($_POST['rampGroup']) && $_POST['rampGroup']==$row['item_id']){
$checked= 'checked="checked"';}
if(isset($_POST['rampGroup']) && $_POST['rampGroup']==0)
{$checked= 'checked="checked"';}
echo '<tr><td><input type="radio" name="rampGroup" value="' . $row['item_id'] . '"'.$checked.'>'. $row['item_name'].'<td></tr>';
echo '<tr><td><input type="radio" name="rampGroup" value="0"'.$checked.'No Ramp></td></tr>';
echo'></tr></table>';
我会推荐一些东西;
首先,缩进:我真的会帮助你有一个清晰的缩进,尤其是在这种情况下的while和if。
第二,验证标记:确保为元素构建了开始标记和结束标记;(即,在您的时间内,将echo "<tr>";
作为第一行,echo "</tr>";
作为最后一行`)
最好有更多的代码行,并且能够轻松识别标签
(至少在重构之前,一切正常)
第三,验证您的html:您可以使用"查看源代码"按钮或W3C验证器进行检查。两者都将帮助您查找html中的错误,并找出它不能正确显示的原因。
考虑到所有这些,我会重新设计你的代码如下:
<table>
<tr><th>Select a Ramp: </th></tr>
<?php
global $dbc;
$rampq="SELECT item_id, item_name FROM items WHERE category_id = '1'";
$rampr = @mysqli_query($dbc, $rampq) or die(mysqli_error($dbc));
while($row = mysqli_fetch_array($rampr)){
echo '<tr>';
echo '<td><input type="radio" name="rampGroup" value="' . $row['item_id'] . '"';
if(isset($_POST['rampGroup']) && $_POST['rampGroup']==$row['item_id']){
echo ' checked="checked"';
}
echo'>' . $row['item_name'] . '</td>';
echo '</tr>';
}
echo '<tr>';
echo '<td><input type="radio" name="rampGroup" value="0"';
if(isset($_POST['rampGroup']) && $_POST['rampGroup']==0) {
echo 'checked="checked"';
}
echo'>No Ramp</td>';
echo '</tr>';
?>
</table>