控制器里面根据id去查询数据库。可以通过调用service来实现这个查询动作,service使用mybatis访问数据库,或者直接创建数据库连接,编写SQL查询数据库。可以把以下关键代码搬到你的程序中,放到合适的位置:
String driver = "com.mysql.cj.jdbc.Driver";
try {
Class.forName(driver);
System.out.println("加载驱动成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 数据库连接参数
String url = "jdbc:mysql://localhost:3306/mydatabase";
String username = "your_username";
String password = "your_password";
// 查询用户信息SQL
String query = "SELECT * FROM user WHERE id = " + id //id为前端传过来的用户Id;
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(query)) {
if (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID: " + id);
System.out.println("Name: " + name);
} else {
System.out.println("未找到记录");
}
} catch (SQLException e) {
e.printStackTrace();
}
用的是sts里面的h2数据库
<script>
var answer = document.getElementById(newStr[i]);
answer.style.display="block";
</script>
我将回答问题1:
为了实现根据前端传来的用户id,展示需要修改的用户信息并将其渲染在前端的修改界面上,需要先编写控制器的相应函数。假设我们有一个User模型,可以先在控制器中定义如下代码:
public function editUser($id){
//首先通过id从数据库中查询该用户的信息
$user = User::find($id);
//将查询结果放入视图中
return view('editUser',compact('user'));
}
这里定义了一个editUser函数,它接受一个$id参数,作为要修改的用户的id。在函数中通过该id从数据库中查询用户信息,并将查询结果放入名为editUser的视图中,在该视图中可以通过$user变量访问到查询结果。
接下来需要创建editUser视图,可以在resources/views目录下创建一个名为editUser.blade.php的文件,编写如下代码:
<form action="{{route('updateUser',$user->id)}}" method="post">
@csrf
<label>用户名:</label>
<input type="text" name="name" value="{{$user->name}}"><br>
<label>邮箱:</label>
<input type="email" name="email" value="{{$user->email}}"><br>
<button type="submit">保存</button>
</form>
该视图中包含一个表单,表单提交的目标为updateUser路由,提交方法为POST。在表单中,使用了Laravel中的CSRF保护机制,用于防止跨站请求伪造攻击。表单中包含用户名和邮箱两个输入框,它们的初始值均为通过控制器中查询到的用户信息。最后还有一个保存按钮。
在控制器中还需要定义updateUser方法,用于更新数据库中的用户信息。可以编写如下代码:
public function updateUser(Request $request, $id){
//首先通过id查找要更新的用户
$user = User::find($id);
//将用户的name和email字段更新为表单提交的值
$user->name = $request->input('name');
$user->email = $request->input('email');
//保存更改
$user->save();
//重定向到用户列表页面或其他目标页面
return redirect()->route('users');
}
该方法接受一个Request参数,用于接收表单提交的数据,以及一个$id参数,用于指定要更新的用户。在函数中首先通过$id从数据库中查询到该用户,然后将用户的name和email字段更新为表单提交的值,并保存更改。最后需要重定向到用户列表页面或其他目标页面。
最后需要定义路由,将editUser函数和updateUser函数与控制器中的对应方法关联起来。可以在routes/web.php中定义如下路由:
Route::get('/editUser/{id}','UserController@editUser')->name('editUser');
Route::post('/updateUser/{id}','UserController@updateUser')->name('updateUser');
通过name('editUser')和name('updateUser')给路由命名,可以在其他地方使用route函数生成对应的链接,充分利用Laravel的路由系统。
以上就是完整的解决方案,通过控制器中的editUser函数根据传递来的$id查询到用户信息并将其放入视图中,实现了在前端展示需要修改的用户信息。而通过updateUser函数可以将表单提交的值更新到数据库中,实现了修改操作的最终目的。