用了$-post后 无法判断用int 或float 判断post表单的内容
时间: 2024-09-25 13:16:59 浏览: 28
当你使用`$_POST`数组从HTTP表单接收数据,并遇到无法直接区分某个键对应的值是整数(int)还是浮点数(float)的情况,这通常是因为PHP默认地将用户提交的数据作为字符串处理。`$_POST`是一个关联数组,其键值对都是字符串。
如果你想要明确判断输入是否为数字并且区分整数和浮点数,你应该在获取值之后再进行类型检查。例如:
```php
$value = $_POST['your_key'];
if (is_numeric($value)) {
$as_int = intval($value);
if ($as_int == $value) { // 如果转换后的整数值等于原始值,则是整数
echo "这是一个整数:$as_int";
} else {
$as_float = floatval($value);
echo "这是一个浮点数:$as_float";
}
} else {
echo "这不是一个数字.";
}
```
在这个例子中,`is_numeric()`函数用于初步判断是否为数字,然后分别尝试使用`intval()`和`floatval()`进行转换,如果转换成功则说明是对应类型的数字。
相关问题
我想实现一个新增航班信息的业务,public class FlightDO { private String id; private String src; private String des; private Date date; private String startTime; private String endTime; private int remainSeats; private float fares; private float discountNums; private float discount; private String company; }请给出对应的html页面和controller接口
这是一个简单的新增航班信息的业务,对应的HTML页面和Controller接口如下:
HTML页面(flight.html):
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新增航班信息</title>
</head>
<body>
<h1>新增航班信息</h1>
<form method="post" action="/addFlight">
<label for="id">航班编号:</label><input type="text" id="id" name="id"><br/>
<label for="src">出发地:</label><input type="text" id="src" name="src"><br/>
<label for="des">目的地:</label><input type="text" id="des" name="des"><br/>
<label for="date">日期:</label><input type="date" id="date" name="date"><br/>
<label for="startTime">起飞时间:</label><input type="time" id="startTime" name="startTime"><br/>
<label for="endTime">到达时间:</label><input type="time" id="endTime" name="endTime"><br/>
<label for="remainSeats">剩余座位数:</label><input type="number" id="remainSeats" name="remainSeats"><br/>
<label for="fares">票价:</label><input type="number" id="fares" name="fares"><br/>
<label for="discountNums">折扣数:</label><input type="number" id="discountNums" name="discountNums"><br/>
<label for="discount">折扣:</label><input type="number" id="discount" name="discount"><br/>
<label for="company">航空公司:</label><input type="text" id="company" name="company"><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
```
Controller接口(FlightController.java):
```java
@Controller
public class FlightController {
@PostMapping("/addFlight")
public String addFlight(@ModelAttribute FlightDO flight, Model model) {
// 省略保存逻辑
return "redirect:/success";
}
@GetMapping("/success")
public String success() {
return "success";
}
}
```
在这个例子中,我们使用了Spring MVC框架。当用户提交新增航班信息的表单时,表单数据将被封装为一个FlightDO对象,然后通过FlightController中的addFlight方法进行处理。具体的处理逻辑可以在方法中实现。如果处理成功,我们可以通过重定向到success页面告知用户操作成功。
编程实现学生信息管理系统,要求如下: (1)使用Mysql建立数据库stusys,并在数据库里建立student数据表,student数据表列名包括:stu_id,xuehao,name,age,height,user_name,password。插入至少两条测试数据,并且其中一条数据为考生自己的信息,包括真实的学号和姓名等; (2)视图层(V)设计登录页面login.jsp,页面通过表单提交用户名和密码进行系统登录,如果用户名和密码正确跳转到show.jsp显示该登录用户名的所有信息,否则跳转回login.jsp并提示“用户名或密码错误”;(3)模型层(M)设计Student.java为JavaBean; (4)控制层(C)设计studentDAO.java进行数据库的操作,并编写loginServlet.java判断用户名或密码是否正确进行跳转控制;
好的,我会根据您提供的要求为您进行代码实现。
首先,我们需要创建一个名为stusys的数据库,并在其中创建一个名为student的数据表。可以使用以下代码:
```
CREATE DATABASE stusys;
USE stusys;
CREATE TABLE student (
stu_id INT PRIMARY KEY AUTO_INCREMENT,
xuehao VARCHAR(20) NOT NULL,
name VARCHAR(50) NOT NULL,
age INT,
height FLOAT,
user_name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
INSERT INTO student (xuehao, name, age, height, user_name, password)
VALUES
('001', '张三', 18, 1.75, 'zhangsan', '123456'),
('002', '李四', 20, 1.80, 'lisi', '654321');
```
这样就创建了一个名为stusys的数据库,并在其中创建了一个名为student的数据表,并在其中插入了两条测试数据。
接下来,我们需要创建一个JavaBean,用于封装学生信息。可以使用以下代码:
```
public class Student {
private int stuId;
private String xuehao;
private String name;
private int age;
private float height;
private String userName;
private String password;
// 省略 getter 和 setter 方法
}
```
然后,我们需要创建一个studentDAO类,用于进行数据库的操作。可以使用以下代码:
```
public class studentDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public studentDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/stusys";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean login(String userName, String password) {
try {
String sql = "SELECT * FROM student WHERE user_name=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return false;
}
public List<Student> getStudents(String userName) {
List<Student> list = new ArrayList<>();
try {
String sql = "SELECT * FROM student WHERE user_name=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
rs = pstmt.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setStuId(rs.getInt("stu_id"));
student.setXuehao(rs.getString("xuehao"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setHeight(rs.getFloat("height"));
student.setUserName(rs.getString("user_name"));
student.setPassword(rs.getString("password"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return list;
}
private void close() {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
最后,我们需要创建一个loginServlet类,用于判断用户名或密码是否正确进行跳转控制。可以使用以下代码:
```
public class loginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
studentDAO dao = new studentDAO();
if (dao.login(userName, password)) {
List<Student> list = dao.getStudents(userName);
request.setAttribute("list", list);
request.getRequestDispatcher("show.jsp").forward(request, response);
} else {
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
```
最后,我们需要创建一个login.jsp页面,用于显示登录页面。可以使用以下代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统 - 登录页面</title>
</head>
<body>
<h1>学生信息管理系统 - 登录页面</h1>
<form action="loginServlet" method="post">
<p>
用户名:<input type="text" name="userName" required>
</p>
<p>
密码:<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="登录">
</p>
<p style="color: red;">
${error}
</p>
</form>
</body>
</html>
```
最后,我们需要创建一个show.jsp页面,用于显示该登录用户名的所有信息。可以使用以下代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统 - 显示页面</title>
</head>
<body>
<h1>学生信息管理系统 - 显示页面</h1>
<table border="1">
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>身高</th>
<th>用户名</th>
<th>密码</th>
</tr>
<c:forEach items="${list}" var="student">
<tr>
<td>${student.xuehao}</td>
<td>${student.name}</td>
<td>${student.age}</td>
<td>${student.height}</td>
<td>${student.userName}</td>
<td>${student.password}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
这样,一个简单的学生信息管理系统就完成了。当用户访问登录页面login.jsp时,输入用户名和密码后,提交表单到loginServlet.java进行验证,如果验证通过,则跳转到show.jsp页面显示该登录用户名的所有信息。如果验证不通过,则跳转回login.jsp页面并提示错误信息。
阅读全文