-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

html が無効です。noramp項目が<td>または内に含まれていないため、ブラウザーは項目<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 と if について、明確なインデントを作成するのに本当に役立ちます。

次に、タグの確認: 要素の開始タグと終了タグを必ず作成してください。(つまり、while では、echo "<tr>";最初の行とecho "</tr>";最後の行として入れます`)
コードの行数を増やして、タグを簡単に識別できるようにすることをお勧めします。
(少なくとも、すべてが正常に機能するリファクタリングの前)

3 番目に、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 に答える