【问题标题】:How to fix HTML being output before PHP that is coded before it? [closed]如何修复在它之前编码的 PHP 之前输出的 HTML? [关闭]
【发布时间】:2013-08-01 15:20:44
【问题描述】:

我有这个代码:

<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”应该是最后打印的,但它跳过了从查询返回的项目。有没有办法让它正确输出?

【问题讨论】:

  • 可以按ctrl+u进行调试
  • 把它放在一个td然后你的表代码是无效的

标签: php html html-table output


【解决方案1】:

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

        echo '<tr><input type="radio" name="rampGroup" value="0"';
                  ^----missing <td> here
        echo'>No Ramp</tr></table>';
                     ^---missing </td> here

【讨论】:

    【解决方案2】:

    你可以试试这个方法

    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>';
    

    【讨论】:

      【解决方案3】:

      我会推荐几件事;

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

      第二,验证标签:确保为元素构建开始标签和结束标签; (即;在您的时间里,将echo "&lt;tr&gt;"; 作为第一行,将echo "&lt;/tr&gt;"; 作为最后一行`)
      最好有更多的代码行,并且能够轻松识别标签。
      (至少在一切正常时重构之前)

      第三,验证您的 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>
      

      【讨论】:

        猜你喜欢
        • 2018-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2021-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多