蓝极冰焰 2024-04-03 17:25 采纳率: 40.7%
浏览 4
已结题

请教:关于do while语法调取数据是出现空数据行的解决办法。

有两张数据表:
数据表用户名中,用于记录登录信息,如:username\password等字段
数据表成绩单中,用于记录登录信息,如:username\realname\event\scores\groups等字段

用户操作登录后,将调用username字段中正在登陆的用户的信息来查询他组里的所有人的成绩信息
并且使用了复选框进行勾选操作,复选框的内容为“Event1”、"Event2"、"Event3",可用于查询不同Event中的所有人的Scores信息

现在出现的问题是:
我用do while进行重复区域操作的时候,发现,始终会在字段标题和信息行之间有一个空数据行,是空数据行,不是单纯的空行。
我自查了数据库,个别数据是null形式存在的,是否有影响?
代码如下,求解

// 假设这是从数据库或其他数据源获取的选项数组
$options = array(
    'Event1,
    'Event2',
    'Event3'
);
?>
      <div align="center" class="container">
      <form method="POST" action="">
<?php
    echo '请选择想要查询的项目:';
    // 循环遍历选项数组并创建复选框
    foreach ($options as $option) {
        // 为每个复选框分配一个唯一的名称和值
        $name = 'checkbox_' . $option;
        $value = $option;
        // 输出复选框
        echo '<input type="checkbox" name="' . $name . '" value="' . $value . '"> ' . $option . ' / ';
    }
    ?>
    <input type="submit" value="查询" ></form></div>
    <div>&nbsp;&nbsp;&nbsp;正在查询>>></div>
    <div class="container">
<table class="table table-hover">
  </div>
  <tr>
    <td>Realname</td>
    <td>Event</td>
    <td>Scores</td>
  </tr>
  <?php        
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            // 检查每个复选框是否被选中
            foreach ($_POST as $name => $xzxm) {
        if (substr($name, 0, 9) === 'checkbox_') {
            // 复选框被选中
            echo  $xzxm.' / ';
        }
            //从考点记录集中调取考点编号
            $username = $row_list_user['username'];
            if($username!=' '){
            $maxRowCount = mysql_num_rows($scores);
            // 根据考点编号,从证书数据库中调取出对应值,并只显示最高等级
            $scores = "select * from scores where username = '$username' and event ='$xzxm' group by username order by username asc" ;
            $scores=mysql_query($scores) or die("查询失败");
}
do { ?>
      <tr>
      <td><?php echo $row['realname']; ?></td>
      <td><?php echo $row['event']; ?></td>
      <td><?php echo $row['scores']; ?></td>
      <td><?php echo $row['group']; ?></td>
      </tr>
<?php } 
      //循环查询多条重复内容
      while ($row = mysql_fetch_assoc($scores)); }
                }?>
</table>


  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-03 17:25
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题出现在代码中的do-while循环上,循环条件中缺少了对$row的判断,导致最后一行数据会重复输出一次。正确的做法是在循环条件中加上对$row的判断,只有当$row存在时才继续执行循环。 修改后的代码如下:
    <?php
    // 假设这是从数据库或其他数据源获取的选项数组
    $options = array(
        'Event1',
        'Event2',
        'Event3'
    );
    ?>
    <div align="center" class="container">
    <form method="POST" action="">
    <?php
    echo '请选择想要查询的项目:';
    // 循环遍历选项数组并创建复选框
    foreach ($options as $option) {
        // 为每个复选框分配一个唯一的名称和值
        $name = 'checkbox_' . $option;
        $value = $option;
        // 输出复选框
        echo '<input type="checkbox" name="' . $name . '" value="' . $value . '"> ' . $option . ' / ';
    }
    ?>
    <input type="submit" value="查询">
    </form>
    <div>&nbsp;&nbsp;&nbsp;正在查询&gt;&gt;&gt;</div>
    <div class="container">
    <table class="table table-hover">
    <tr>
    <td>Realname</td>
    <td>Event</td>
    <td>Scores</td>
    <td>Group</td>
    </tr>
    <?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 检查每个复选框是否被选中
        foreach ($_POST as $name => $xzxm) {
            if (substr($name, 0, 9) === 'checkbox_') {
                // 复选框被选中
                echo $xzxm . ' / ';
            }
            //从考点记录集中调取考点编号
            $username = $row_list_user['username'];
            if($username!=''){
                $maxRowCount = mysql_num_rows($scores);
                // 根据考点编号,从证书数据库中调取出对应值,并只显示最高等级
                $scores = "select * from scores where username = '$username' and event ='$xzxm' group by username order by username asc";
                $scores = mysql_query($scores) or die("查询失败");
                //循环查询多条重复内容
                while ($row = mysql_fetch_assoc($scores)) {
    ?>
    <tr>
    <td><?php echo $row['realname']; ?></td>
    <td><?php echo $row['event']; ?></td>
    <td><?php echo $row['scores']; ?></td>
    <td><?php echo $row['group']; ?></td>
    </tr>
    <?php
                }
            }
        }
    }
    ?>
    </table>
    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 已采纳回答 4月3日
  • 创建了问题 4月3日