PHP MySQL Pour Débutant
PHP MySQL Pour Débutant
Eh bien, commençons par créer la table que nous utiliserons dans tous nos exemples.
Nous inclurons plus tard ce fichier de configuration dans d'autres pages en utilisant la fonction
PHP require_once().
<?php
/* Database connexion */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'root');
define('DB_NAME', 'phpcrud');
/* verifier connection */
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
Nous allons également ajouter un bouton de création en haut de la grille de données qui peut
être utilisé pour créer de nouveaux enregistrements dans la table des étudiants. Créez un fichier
nommé "index.php" et insérez-y le code suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Dashboard</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-
icons@1.8.1/font/bootstrap-icons.css">
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
table tr td:last-child{
width: 120px;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="mt-5 mb-3 d-flex justify-content-between">
<h2 class="pull-left">Liste des étudiants</h2>
<a href="create.php" class="btn btn-success"><i
class="bi bi-plus"></i> Ajouter</a>
</div>
<?php
/* Inclure le fichier config */
require_once "config.php";
/* Fermer connection */
mysqli_close($link);
?>
</div>
</div>
</div>
</div>
</body>
</html>
Une fois que la table des étudiants est remplie avec certains enregistrements, la page de
destination, c'est-à-dire la grille de données CRUD, peut ressembler à l'image ci-dessous :
Astuce : Nous avons utilisé le framework Bootstrap pour créer cette mise en page d'application
CRUD rapidement et magnifiquement. Bootstrap est le framework frontend le plus populaire et
le plus puissant pour un développement Web réactif plus rapide et plus facile. Veuillez consulter
le site officiel de Bootstrap pour en savoir plus sur ce framework.
<?php
/* Inclure le fichier config */
require_once "config.php";
if($_SERVER["REQUEST_METHOD"] == "POST"){
/* Validate name */
$input_name = trim($_POST["nom"]);
if(empty($input_name)){
$name_err = "Veillez entrez un nom.";
} elseif(!filter_var($input_name, FILTER_VALIDATE_REGEXP,
array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
$name_err = "Veillez entrez a valid name.";
} else{
$nom = $input_name;
}
/* Validate ecole */
$input_ecole = trim($_POST["ecole"]);
if(empty($input_ecole)){
$ecole_err = "Veillez entrez une ecole.";
} else{
$ecole = $input_ecole;
}
/* Validate age */
$input_age = trim($_POST["age"]);
if(empty($input_age)){
$age_err = "Veillez entrez l'age.";
} elseif(!ctype_digit($input_age)){
$age_err = "Veillez entrez une valeur positive.";
} else{
$age = $input_age;
}
/* Set parameters */
$param_nom = $nom;
$param_ecole = $ecole;
$param_age = $age;
/* executer la requette */
if(mysqli_stmt_execute($stmt)){
/* opération effectuée, retour */
header("location: index.php");
exit();
} else{
echo "Oops! une erreur est survenue.";
}
}
/* Close statement */
mysqli_stmt_close($stmt);
}
/* Close connection */
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Create Record</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2 class="mt-5">Créer un enregistrement</h2>
<p>Remplir le formulaire pour enregistrer l'étudiant dans
la base de données</p>
<?php
/* Verifiez si le paramettre id existe */
if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
require_once "config.php";
/* Preparer la requete */
$sql = "SELECT * FROM students WHERE id = ?";
$param_id = trim($_GET["id"]);
if(mysqli_stmt_execute($stmt)){
$result = mysqli_stmt_get_result($stmt);
if(mysqli_num_rows($result) == 1){
/* recuperer l'enregistrement */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
/* recuperer les champs */
$nom = $row["nom"];
$ecole = $row["ecole"];
$age = $row["age"];
} else{
/* Si pas de id correct retourne la page d'erreur */
header("location: error.php");
exit();
}
} else{
echo "Oops! une erreur est survenue.";
}
}
mysqli_stmt_close($stmt);
mysqli_close($link);
} else{
/* Si pas de id correct retourne la page d'erreur */
header("location: error.php");
exit();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Voir l'enregistrement</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h1 class="mt-5 mb-3">Voir l'enregistremnt</h1>
<div class="form-group">
<label>Nom</label>
<p><b><?php echo $row["nom"]; ?></b></p>
</div>
<div class="form-group">
<label>Ecole</label>
<p><b><?php echo $row["ecole"]; ?></b></p>
</div>
<div class="form-group">
<label>Age</label>
<p><b><?php echo $row["age"]; ?></b> ans</p>
</div>
<p><a href="index.php" class="btn btn-
primary">Retour</a></p>
</div>
</div>
</div>
</div>
</body>
</html>
Créons un fichier nommé "update.php" et insérons-y le code suivant. Il mettra à jour les
enregistrements existants dans la table des étudiants en fonction de l'attribut id de l'étudiant.
<?php
/* Inclure le fichier */
require_once "config.php";
/* Validate ecole */
$input_ecole = trim($_POST["ecole"]);
if(empty($input_ecole)){
$ecole_err = "Veillez entrez une ecole.";
} else{
$ecole = $input_ecole;
}
/* Validate age */
$input_age = trim($_POST["age"]);
if(empty($input_age)){
$age_err = "Veillez entrez l'age.";
} elseif(!ctype_digit($input_age)){
$age_err = "Veillez entrez une valeur positive.";
} else{
$age = $input_age;
}
$param_nom = $nom;
$param_ecole = $ecole;
$param_age = $age;
$param_id = $id;
if(mysqli_stmt_execute($stmt)){
/* enregistremnt modifié, retourne */
header("location: index.php");
exit();
} else{
echo "Oops! une erreur est survenue.";
}
}
mysqli_stmt_close($stmt);
}
mysqli_close($link);
} else{
/* si il existe un paramettre id */
if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
$id = trim($_GET["id"]);
$param_id = $id;
if(mysqli_stmt_execute($stmt)){
$result = mysqli_stmt_get_result($stmt);
if(mysqli_num_rows($result) == 1){
/* recupere l'enregistremnt */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
header("location: error.php");
exit();
}
} else{
echo "Oops! une erreur est survenue.";
}
}
/* Close statement */
mysqli_stmt_close($stmt);
/* Close connection */
mysqli_close($link);
} else{
/* pas de id parametter valid, retourne erreur */
header("location: error.php");
exit();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Modifier l'enregistremnt</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2 class="mt-5">Mise à jour de l'enregistremnt</h2>
<p>Modifier les champs et enregistrer</p>
<form action="<?php echo
htmlspecialchars(basename($_SERVER['REQUEST_URI'])); ?>" method="post">
<div class="form-group">
<label>Nom</label>
<input type="text" name="nom" class="form-control
<?php echo (!empty($name_err)) ? 'is-invalid' : ''; ?>" value="<?php echo
$nom; ?>">
<span class="invalid-feedback"><?php echo
$name_err;?></span>
</div>
<div class="form-group">
<label>Ecole</label>
<textarea name="ecole" class="form-control <?php
echo (!empty($ecole_err)) ? 'is-invalid' : ''; ?>"><?php echo $ecole;
?></textarea>
<span class="invalid-feedback"><?php echo
$ecole_err;?></span>
</div>
<div class="form-group">
<label>Age</label>
<input type="text" name="age" class="form-control
<?php echo (!empty($age_err)) ? 'is-invalid' : ''; ?>" value="<?php echo $age;
?>">
<span class="invalid-feedback"><?php echo
$age_err;?></span>
</div>
<input type="hidden" name="id" value="<?php echo $id;
?>"/>
<input type="submit" class="btn btn-primary"
value="Enregistrer">
<a href="index.php" class="btn btn-secondary ml-
2">Annuler</a>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
<?php
/* confirmer */
if(isset($_POST["id"]) && !empty($_POST["id"])){
/* Inclure le fichier config */
require_once "config.php";
$sql = "DELETE FROM students WHERE id = ?";
$param_id = trim($_POST["id"]);
if(mysqli_stmt_execute($stmt)){
/* supprimé, retourne */
header("location: index.php");
exit();
} else{
echo "Oops! une erreur est survenue.";
}
}
mysqli_stmt_close($stmt);
mysqli_close($link);
} else{
/* verifier si paramettre id exite */
if(empty(trim($_GET["id"]))){
header("location: error.php");
exit();
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Supprimer l'enregistrement</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2 class="mt-5 mb-3">Supprimer l'enregistremnt</h2>
<form action="<?php echo
htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="alert alert-danger">
<input type="hidden" name="id" value="<?php echo
trim($_GET["id"]); ?>"/>
<p>Etes vous sûr de vouloir supprimer cet étudiant
?</p>
<p>
<input type="submit" value="OUI" class="btn
btn-danger">
<a href="index.php" class="btn btn-
secondary">NON</a>
</p>
</div>
</form>
</div>
</div>
</div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Error</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-
1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
crossorigin="anonymous">
<style>
.wrapper{
width: 700px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<h2 class="mt-5 mb-3">Demande invalide</h2>
<div class="alert alert-danger">Désolé, une erreur est
survenue. Svp <a href="index.php" class="alert-link">Retournez</a> et
réessayer.</div>
</div>
</div>
</div>
</div>
</body>
</html>
Nous avons enfin terminé notre application CRUD avec PHP et MySQL.