-1

我有这个代码:

<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 液压双折闸门

“无坡道”应该最后打印,但它跳到查询返回的项目之上。有没有办法让它正确输出?

4

3 回答 3

1

你可以试试这种方式

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>';
于 2013-08-01T15:33:25.433 回答
1

您的 html 无效。该noramp项目不包含在<td>or<th>中,因此浏览器将其移动到表格的“顶部”。

        echo '<tr><input type="radio" name="rampGroup" value="0"';
                  ^----missing <td> here
        echo'>No Ramp</tr></table>';
                     ^---missing </td> here
于 2013-08-01T15:24:35.357 回答
0

我会推荐几件事;

首先,缩进:我真的会帮助你有一个清晰的缩进,特别是对于这种情况下的while和ifs。

其次,验证标签:确保为元素构建开始标签和结束标签;(即;在你的时候,放在echo "<tr>";第一行和echo "</tr>";最后一行`)
最好有更多的代码行,并且能够轻松识别标签。
(至少在一切正常时重构之前)

第三,验证您的 html:您可以使用“查看源代码”按钮或使用W3C Validator来检查它。两者都将帮助您发现 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>
于 2013-08-01T15:44:18.330 回答