如何在MySQL取数前隐藏其余文本框,仅显示注册码输入框与提交按钮
实现方案
通过PHP条件判断控制字段渲染逻辑,初始状态只渲染注册码输入框和提交按钮,仅当用户提交查询且数据库返回有效学生数据时,才渲染其余字段的HTML代码。
后端逻辑补充
在页面顶部PHP处理逻辑中新增标识变量,判断是否查询到有效数据:
<?php // 初始化变量 $student_reg = ''; $student_name = ''; $phone_number = ''; $show_detail_fields = false; // 处理提交的查询请求 if (isset($_POST['search'])) { $student_reg = trim($_POST['student_reg']); // 这里保留你原有连接数据库、查询学生信息的逻辑 // 假设查询结果集为$result,判断是否查到有效数据 if (mysqli_num_rows($result) > 0) { $show_detail_fields = true; // 原有给$student_name、$phone_number赋值的逻辑 $data = mysqli_fetch_assoc($result); $student_name = $data['student_name']; $phone_number = $data['phone_number']; } } ?>
修改后的前端表单代码
<div class="container"> <form id="contact" action="mix.php" method="post"> <fieldset> <input type="text" name="student_reg" required="required" placeholder="学生注册码" value="<?php echo $student_reg;?>"> </fieldset> <div> <input type="submit" class="myButton" name="search" style="width:100%;" value="查询"> </div> <!-- 仅当查询到数据时才渲染以下字段 --> <?php if ($show_detail_fields): ?> <fieldset> <input type="text" name="student_name" placeholder="姓名" style="border:0;outline:none;width:100%;height:100%;font-size:13px;text-align: left;" value="<?php echo $student_name;?>" readonly> </fieldset> <fieldset> <input type="text" name="phone_number" placeholder="手机号码" style="border:0;outline:none;width:100%;height:100%;font-size:13px;text-align: left;" value="<?php echo $phone_number;?>" readonly> </fieldset> <!-- 其余需要展示的字段都可以放在这个if判断区间内 --> <?php endif; ?> </form> </div>
这种服务端渲染控制的方式不会出现页面加载时字段闪显的问题,也不会额外暴露未查询时的字段结构,比前端CSS隐藏的方式更稳妥。
内容的提问来源于stack exchange,提问作者xoxo
相关产品推荐
相关产品推荐

