Crud React Axios Api PHP
Crud React Axios Api PHP
try {
const response = await
axios.post('http://localhost:8000/addProduct.php', data, {
headers: { "Content-Type": "multipart/form-data" }
});
if (response.data.success) {
alert("Produit ajouté avec succès !");
setFormData({ nom: '', description: '', prix: '', categorie_id: '', image: null
});
} else {
alert("Erreur lors de l'ajout du produit.");
}
} catch (error) {
console.error("Erreur lors de l'ajout du produit : ", error);
}
};
return (
<form onSubmit={handleAddProduct}>
<input type="text" name="nom" value={formData.nom}
onChange={handleChange} placeholder="Nom" required />
<textarea name="description" value={formData.description}
onChange={handleChange} placeholder="Description"
required></textarea>
<input type="number" name="prix" value={formData.prix}
onChange={handleChange} placeholder="Prix" required />
<input type="number" name="categorie_id"
value={formData.categorie_id} onChange={handleChange}
placeholder="Catégorie ID" required />
<input type="file" name="image" onChange={handleChange}
accept="image/*" />
<button type="submit">Ajouter le produit</button>
</form>
);
};
if ($result) {
echo json_encode(["success" => true]);
} else {
echo json_encode(["success" => false, "error" => mysqli_error($conn)]);
}
} else {
echo json_encode(["success" => false, "error" => "Méthode de requête
invalide"]);
}
mysqli_close($conn);
?>
Get products
GetProducts.js import React, { useState, useEffect } from "react";
import axios from "axios";
useEffect(() => {
const fetchProducts = async () => {
try {
const response = await axios.get(
"http://localhost:8000/getProducts.php"
);
setProducts(response.data || []);
} catch (error) {
console.error("Erreur lors de la récupération des produits : ", error);
}
};
fetchProducts();
}, []);
return (
<div>
<h2>Liste des Produits</h2>
<ul>
{products.map((product) => (
<li key={product.id}>
{product.nom} - {product.prix} €
</li>
))}
</ul>
</div>
);
};
getProducts.php <?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
echo json_encode($products);
mysqli_close($conn);
?>
Get product(id)
GetProduct.js import React, { useState, useEffect } from 'react';
import axios from 'axios';
useEffect(() => {
const fetchProduct = async () => {
try {
const response = await
axios.get(`http://localhost:8000/getProduct.php?id=${id}`);
setProduct(response.data);
} catch (error) {
console.error("Erreur lors de la récupération du produit : ", error);
}
};
fetchProduct();
}, [id]);
return (
<div>
{product ? (
<div>
<h2>{product.nom}</h2>
<p>Description: {product.description}</p>
<p>Prix: {product.prix} €</p>
</div>
):(
<p>Chargement du produit...</p>
)}
</div>
);
};
echo json_encode($product);
mysqli_close($conn);
?>
GetProducts.js et deleteProduct.php
Suppression dans const handleDelete = async (id) => {
GetProducts.js if (window.confirm("Êtes-vous sûr de vouloir supprimer ce produit ?")) {
try {
const response = await
axios.post('http://localhost:8000/deleteProduct.php', { id });
if (response.data.success) {
fetchProducts(); // Rafraîchit la liste des produits après suppression
}
} catch (error) {
console.error("Erreur lors de la suppression du produit : ", error);
}
}
};
deleteProduct.php <?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
mysqli_close($conn);
?>
Mise à jour d'un produit
EditProduct.js import React, { useState, useEffect } from 'react';
import axios from 'axios';
useEffect(() => {
const fetchProduct = async () => {
try {
const response = await
axios.get(`http://localhost:8000/getProduct.php?id=${id}`);
setFormData(response.data);
} catch (error) {
console.error("Erreur lors de la récupération du produit : ", error);
}
};
fetchProduct();
}, [id]);
try {
const response = await
axios.put(`http://localhost:8000/updateProduct.php`, data, {
headers: { "Content-Type": "multipart/form-data" }
});
if (response.data.success) {
alert("Produit mis à jour avec succès !");
}
} catch (error) {
console.error("Erreur lors de la mise à jour du produit : ", error);
}
};
return (
<form onSubmit={handleUpdate}>
<input type="text" name="nom" value={formData.nom}
onChange={handleChange} placeholder="Nom" required />
<textarea name="description" value={formData.description}
onChange={handleChange} placeholder="Description" required></textarea>
<input type="number" name="prix" value={formData.prix}
onChange={handleChange} placeholder="Prix" required />
<input type="file" name="image" onChange={handleChange}
accept="image/*" />
<button type="submit">Mettre à jour</button>
</form>
);
};
parse_str(file_get_contents("php://input"), $_PUT);
$id = $_PUT['id'] ?? null;
$nom = $_PUT['nom'] ?? '';
$description = $_PUT['description'] ?? '';
$prix = $_PUT['prix'] ?? '';
$categorie_id = $_PUT['categorie_id'] ?? '';
$image = isset($_FILES['image']) ?
addslashes(file_get_contents($_FILES['image']['tmp_name'])) : null;
if ($id) {
$query = "UPDATE produits SET nom='$nom', description='$description',
prix='$prix', categorie_id='$categorie_id'";
if ($image) $query .= ", image='$image'";
$query .= " WHERE id='$id'";
$result = mysqli_query($conn, $query);
echo json_encode(["success" => (bool)$result]);
} else {
echo json_encode(["success" => false, "error" => "ID manquant"]);
}
mysqli_close($conn);
?>