Skip to content

Commit 41c8f50

Browse files
committed
complete save and load table functionalities
1 parent da197f7 commit 41c8f50

File tree

11 files changed

+363
-4
lines changed

11 files changed

+363
-4
lines changed

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/profiles_settings.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/react-crud-with-laravel.iml

Lines changed: 126 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

laravelapi/app/Http/Controllers/API/StudentController.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,24 @@
88

99
class StudentController extends Controller
1010
{
11-
public function store(){
11+
public function store(Request $request){
1212
$student = new Student();
13+
$student->name= $request->name;
14+
$student->course= $request->course;
15+
$student->email= $request->email;
16+
$student->phone= $request->phone;
17+
$student->save();
18+
return response()->json([
19+
"status"=> 200,
20+
"message"=>"Student Save Successfully"
21+
]);
22+
}
23+
24+
public function index(){
25+
$students = Student::all();
26+
return response()->json([
27+
"status"=> 200,
28+
"students"=>$students
29+
]);
1330
}
1431
}

laravelapi/routes/api.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
use Illuminate\Http\Request;
44
use Illuminate\Support\Facades\Route;
5+
use App\Http\Controllers\API\StudentController;
56

67
/*
78
|--------------------------------------------------------------------------
@@ -13,6 +14,11 @@
1314
| is assigned the "api" middleware group. Enjoy building your API!
1415
|
1516
*/
17+
// data send er jonno post;
18+
Route::post("/add-student",[StudentController::class,'store']);
19+
Route::get("/all-students",[StudentController::class,'index']);
20+
21+
1622

1723
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
1824
return $request->user();

react-crud-app/src/App.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ import { BrowserRouter as Router, Route, Switch } from "react-router-dom";
22
import "./App.css";
33
import AddStudent from "./components/pages/AddStudent";
44
import Student from "./components/pages/Student";
5+
import EditStudent from "./components/pages/EditStudent";
56

67
function App() {
78
return (
89
<Router>
910
<Switch>
1011
<Route exact path="/" component={Student} />
1112
<Route exact path="/addStudent" component={AddStudent} />
13+
<Route exact path="/editStudent/:id" component={EditStudent} />
1214
</Switch>
1315
</Router>
1416
);

react-crud-app/src/components/pages/AddStudent.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import axios from "axios";
22
import { useState } from "react";
33
import { Link } from "react-router-dom";
4+
import React from 'react';
45

56
export default function AddStudent() {
67
const [studentData, setStudentData] = useState({
@@ -18,9 +19,18 @@ export default function AddStudent() {
1819
};
1920

2021
const saveStudent = async (e) => {
21-
e.prventDefault();
22+
e.preventDefault();
2223
try {
23-
const res = await axios.post("/api/add-student", studentData);
24+
const res = await axios.post("http://localhost:8000/api/add-student", studentData);
25+
if(res.data.status===200) {
26+
console.log(res.data.message);
27+
setStudentData({
28+
name: "",
29+
course: "",
30+
email: "",
31+
phone: "",
32+
})
33+
}
2434
} catch (err) {
2535
console.log(err);
2636
}
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import axios from "axios";
2+
import { useState,useEffect } from "react";
3+
import { Link } from "react-router-dom";
4+
import {useParams} from 'react-router';
5+
import React from 'react';
6+
7+
export default function EditStudent() {
8+
const [studentData, setStudentData] = useState({
9+
name: "",
10+
course: "",
11+
email: "",
12+
phone: "",
13+
});
14+
const {id} = useParams();
15+
16+
17+
let name, value;
18+
const handleChange = (e) => {
19+
name = e.target.name;
20+
value = e.target.value;
21+
setStudentData({ ...studentData, [name]: value });
22+
};
23+
24+
useEffect(()=>{
25+
async function getStudent(){
26+
const res = await axios.get(`api/editStudent/${id}`)
27+
if(res.data.status == 200)
28+
{
29+
30+
}
31+
32+
}
33+
getStudent();
34+
},[id])
35+
36+
const updateStudent = async (e) => {
37+
e.preventDefault();
38+
try {
39+
const res = await axios.post("http://localhost:8000/api/update-student", studentData);
40+
if(res.data.status===200) {
41+
console.log(res.data.message);
42+
setStudentData({
43+
name: "",
44+
course: "",
45+
email: "",
46+
phone: "",
47+
})
48+
}
49+
} catch (err) {
50+
console.log(err);
51+
}
52+
};
53+
54+
return (
55+
<div className="container">
56+
<div className="row">
57+
<div className="col-md-12">
58+
<div className="card">
59+
<div className="card-header">
60+
<h4>
61+
Add Student
62+
<Link to="/" className="btn btn-primary btn-sm float-end">
63+
Back
64+
</Link>
65+
</h4>
66+
</div>
67+
<div className="col-md-6 offset-md-3 mt-3">
68+
<div className="card-body">
69+
<form onSubmit={updateStudent}>
70+
<div className="form-group mb-3">
71+
<label>Student Name</label>
72+
<input
73+
type="text"
74+
name="name"
75+
value={studentData.name}
76+
onChange={handleChange}
77+
required
78+
className="form-control"
79+
/>
80+
</div>
81+
<div className="form-group mb-3">
82+
<label>Student Course</label>
83+
<input
84+
type="text"
85+
name="course"
86+
value={studentData.course}
87+
onChange={handleChange}
88+
required
89+
className="form-control"
90+
/>
91+
</div>
92+
<div className="form-group mb-3">
93+
<label>Student Email</label>
94+
<input
95+
type="email"
96+
name="email"
97+
value={studentData.email}
98+
onChange={handleChange}
99+
required
100+
className="form-control"
101+
/>
102+
</div>
103+
<div className="form-group mb-3">
104+
<label>Student Phone No.</label>
105+
<input
106+
type="text"
107+
name="phone"
108+
value={studentData.phone}
109+
onChange={handleChange}
110+
required
111+
className="form-control"
112+
/>
113+
</div>
114+
<button type="submit" className="btn btn-info btn-block">
115+
Update Student
116+
</button>
117+
</form>
118+
</div>
119+
</div>
120+
</div>
121+
</div>
122+
</div>
123+
</div>
124+
);
125+
}

0 commit comments

Comments
 (0)