Maison > base de données > tutoriel mysql > CRUD PHP et MySQL et API et principes fondamentaux importants

CRUD PHP et MySQL et API et principes fondamentaux importants

Barbara Streisand
Libérer: 2024-12-31 13:23:10
original
852 Les gens l'ont consulté

CRUD PHP e MySQL e API e Fundamentos importantes

Comment créer un CRUD (Créer, Lire, Mettre à jour, Supprimer) en PHP avec MySQL.

Cet exemple utilise l'extension MySQLi pour effectuer des opérations de base de données.

Étape 1 : Création de la base de données et de la table

Exécutez le script SQL suivant pour créer la base de données et une table appelée utilisateurs :

CREATE DATABASE crud_example;
USE crud_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
Copier après la connexion
Copier après la connexion

Étape 2 : Connexion à la base de données

Créez un fichier config.php pour gérer la connexion à la base de données :

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "crud_example";

// Conexão com o banco
$conn = new mysqli($servername, $username, $password, $dbname);

// Verifica conexão
if ($conn->connect_error) {
    die("Falha na conexão: " . $conn->connect_error);
}
?>
Copier après la connexion

Étape 3 : page d'accueil

Créez un fichier index.php pour lister les utilisateurs et ajouter des fonctionnalités de création, d'édition et de suppression :

<?php
include 'config.php';

// Leitura dos dados
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD em PHP</title>
</head>
<body>
    <h1>Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Email</th>
            <th>Ações</th>
        </tr>
        <?php while ($row = $result->fetch_assoc()) { ?>
            <tr>
                <td><?= $row['id'] ?></td>
                <td><?= $row['name'] ?></td>
                <td><?= $row['email'] ?></td>
                <td>
                    <a href="edit.php?id=<?= $row['id'] ?>">Editar</a>
                    <a href="delete.php?id=<?= $row['id'] ?>" onclick="return confirm('Tem certeza que deseja excluir?')">Excluir</a>
                </td>
            </tr>
        <?php } ?>
    </table>
</body>
</html>
Copier après la connexion

Étape 4 : Créer un utilisateur

Créez un fichier create.php pour ajouter un nouvel utilisateur :

<?php
include 'config.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')";
    if ($conn->query($sql) === TRUE) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro: " . $conn->error;
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Criar Usuário</title>
</head>
<body>
    <h1>Adicionar Novo Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 5: Editar Usuário
</h3>

<p>Crie um arquivo edit.php para editar um usuário existente:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'config.php';

$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $id";
$result = $conn->query($sql);
$user = $result->fetch_assoc();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    $sql = "UPDATE users SET name='$name', email='$email' WHERE>




<hr>

<h3>
  
  
  Passo 6: Excluir Usuário
</h3>

<p>Crie um arquivo delete.php para excluir um usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'config.php';

$id = $_GET['id'];
$sql = "DELETE FROM users WHERE>




<hr>

<h3>
  
  
  Como Rodar o Projeto
</h3>

<ol>
<li>Configure o servidor local (como XAMPP ou LAMP).</li>
<li>Coloque todos os arquivos em uma pasta dentro do diretório público (htdocs ou equivalente).</li>
<li>Acesse http://localhost/sua_pasta/index.php no navegador.</li>
</ol>

<p>Esse é um CRUD básico e pode ser melhorado com validações, segurança (como SQL Injection), e estruturação MVC.</p>


<hr>

<h2>
  
  
  CRUD usando PHP e MySQL, estruturado de forma <strong>orientada a objetos (OOP)</strong>
</h2>

<p>A abordagem inclui uma classe para gerenciar as operações do banco de dados e separação lógica.</p>


<hr>

<h3>
  
  
  Passo 1: Configuração da Conexão com o Banco
</h3>

<p>Crie um arquivo Database.php para encapsular a conexão com o banco:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
class Database {
    private $host = "localhost";
    private $user = "root";
    private $pass = "";
    private $dbname = "crud_example";
    public $conn;

    public function __construct() {
        $this->conn = new mysqli($this->host, $this->user, $this->pass, $this->dbname);

        if ($this->conn->connect_error) {
            die("Erro na conexão: " . $this->conn->connect_error);
        }
    }
}
?>
Copier après la connexion

Étape 2 : Cours pour les opérations bancaires

Créez un fichier User.php pour gérer les opérations CRUD :

<?php
include 'Database.php';

class User {
    private $db;

    public function __construct() {
        $this->db = (new Database())->conn;
    }

    // Create
    public function create($name, $email) {
        $stmt = $this->db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $name, $email);
        return $stmt->execute();
    }

    // Read
    public function getAll() {
        $result = $this->db->query("SELECT * FROM users");
        return $result->fetch_all(MYSQLI_ASSOC);
    }

    public function getById($id) {
        $stmt = $this->db->prepare("SELECT * FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        $stmt->execute();
        return $stmt->get_result()->fetch_assoc();
    }

    // Update
    public function update($id, $name, $email) {
        $stmt = $this->db->prepare("UPDATE users SET name = ?, email = ? WHERE id = ?");
        $stmt->bind_param("ssi", $name, $email, $id);
        return $stmt->execute();
    }

    // Delete
    public function delete($id) {
        $stmt = $this->db->prepare("DELETE FROM users WHERE id = ?");
        $stmt->bind_param("i", $id);
        return $stmt->execute();
    }
}
?>
Copier après la connexion

Étape 3 : page d'accueil

Créez un fichier index.php pour afficher la liste des utilisateurs et gérer la navigation :

<?php
include 'User.php';

$user = new User();
$users = $user->getAll();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CRUD OOP PHP</title>
</head>
<body>
    <h1>Lista de Usuários</h1>
    <a href="create.php">Adicionar Novo Usuário</a>
    <table border="1">
        <tr>
            <th>ID</th>
            <th>Nome</th>
            <th>Email</th>
            <th>Ações</th>
        </tr>
        <?php foreach ($users as $u) { ?>
            <tr>
                <td><?= $u['id'] ?></td>
                <td><?= $u['name'] ?></td>
                <td><?= $u['email'] ?></td>
                <td>
                    <a href="edit.php?id=<?= $u['id'] ?>">Editar</a>
                    <a href="delete.php?id=<?= $u['id'] ?>" onclick="return confirm('Deseja excluir este usuário?')">Excluir</a>
                </td>
            </tr>
        <?php } ?>
    </table>
</body>
</html>
Copier après la connexion

Étape 4 : Créer un utilisateur

Créez un fichier create.php pour ajouter de nouveaux utilisateurs :

<?php
include 'User.php';

$user = new User();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if ($user->create($name, $email)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro ao criar usuário.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Criar Usuário</title>
</head>
<body>
    <h1>Adicionar Novo Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 5: Editar Usuário
</h3>

<p>Crie um arquivo edit.php para atualizar os dados do usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'User.php';

$user = new User();
$id = $_GET['id'];
$data = $user->getById($id);

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name = $_POST['name'];
    $email = $_POST['email'];

    if ($user->update($id, $name, $email)) {
        header("Location: index.php");
        exit;
    } else {
        echo "Erro ao atualizar usuário.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Editar Usuário</title>
</head>
<body>
    <h1>Editar Usuário</h1>
    <form method="POST">
        <label for="name">Nome:</label>
        <input type="text">




<hr>

<h3>
  
  
  Passo 6: Excluir Usuário
</h3>

<p>Crie um arquivo delete.php para deletar um usuário:<br>
</p>

<pre class="brush:php;toolbar:false"><?php
include 'User.php';

$user = new User();
$id = $_GET['id'];

if ($user->delete($id)) {
    header("Location: index.php");
    exit;
} else {
    echo "Erro ao excluir usuário.";
}
?>
Copier après la connexion

Comment exécuter le projet

  1. Configurer un serveur local (comme XAMPP ou LAMP).
  2. Créez d'abord la base de données en utilisant SQL.
  3. Placez tous les fichiers dans un dossier du répertoire public.
  4. Allez sur http://localhost/your_pasta/index.php dans votre navigateur.

Cet exemple constitue la base d'un CRUD orienté objet et peut être amélioré grâce à de bonnes pratiques, telles que la validation des entrées, une gestion des erreurs plus robuste et l'utilisation d'espaces de noms.

Voici un exemple de création de deux API en PHP : une API backend à consommer et une autre en tant que client pour consommer la première API.


Création de l'API à consommer (Backend)

Étape 1 : Structure de la base de données

Créez une table d'utilisateurs dans la base de données :

CREATE DATABASE api_example;
USE api_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
Copier après la connexion

Étape 2 : Backend de l'API

Créez un fichier appelé api.php pour rendre les points de terminaison disponibles.

<?php
header("Content-Type: application/json");

include 'Database.php';

class UserAPI {
    private $db;

    public function __construct() {
        $this->db = (new Database())->conn;
    }

    public function handleRequest() {
        $method = $_SERVER['REQUEST_METHOD'];
        $endpoint = $_GET['endpoint'] ?? '';

        switch ($endpoint) {
            case 'users':
                if ($method === 'GET') {
                    $this->getUsers();
                } elseif ($method === 'POST') {
                    $this->createUser();
                } else {
                    $this->response(405, "Method Not Allowed");
                }
                break;

            default:
                $this->response(404, "Endpoint Not Found");
        }
    }

    private function getUsers() {
        $result = $this->db->query("SELECT * FROM users");
        $users = $result->fetch_all(MYSQLI_ASSOC);
        $this->response(200, $users);
    }

    private function createUser() {
        $input = json_decode(file_get_contents("php://input"), true);

        if (empty($input['name']) || empty($input['email'])) {
            $this->response(400, "Missing required fields: name or email");
            return;
        }

        $stmt = $this->db->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $input['name'], $input['email']);

        if ($stmt->execute()) {
            $this->response(201, "User created successfully");
        } else {
            $this->response(500, "Internal Server Error");
        }
    }

    private function response($status, $data) {
        http_response_code($status);
        echo json_encode(["status" => $status, "data" => $data]);
    }
}

$api = new UserAPI();
$api->handleRequest();
?>
Copier après la connexion

2. Création de l'API client pour consommer

Client API

Créez un fichier appelé client.php pour utiliser l'API backend.

CREATE DATABASE crud_example;
USE crud_example;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE
);
Copier après la connexion
Copier après la connexion

3. Tester l'API

Étape 1 : Configurer l'environnement local

  1. Configurez votre serveur local (XAMPP, LAMP ou similaire).
  2. Placez les fichiers api.php et client.php dans le même dossier public.

Étape 2 : Testez

  1. API Backend : accédez à http://localhost/api.php?endpoint=users pour vérifier le point de terminaison de l'API.
  2. Client : Exécutez le fichier client.php dans le terminal ou via le navigateur pour tester la consommation.

Cet exemple est une base fonctionnelle. Pour la production, il est recommandé :

  • Utilisez des jetons d'authentification (comme JWT).
  • Ajouter validation et désinfection des données.
  • Améliorez la gestion des erreurs et les réponses HTTP.

Si vous préparez un entretien technique pour un développeur junior avec PHP et MySQL, voici les principaux sujets qui sont habituellement abordés, ainsi que quelques conseils :


Principes fondamentaux de PHP

  • Syntaxe de base : Connaissance des variables, des tableaux, des chaînes, des boucles, des fonctions et des structures de contrôle.
  • Fonctions intégrées : Manipulation de chaînes (par exemple, exploser, imploser, découper), de tableaux (array_merge, array_filter) et de nombres (round, rand).
  • Orientation Objet (POO) : Classes, objets, héritage, encapsulation, polymorphisme et interfaces.
  • Travailler avec des fichiers : fopen, fwrite, file_get_contents.
  • Gestion des erreurs et des exceptions : try-catch et comment gérer les erreurs en PHP.
  • Superglobals : $_POST, $_GET, $_SESSION, $_COOKIE et comment les utiliser.

2. Intégration MySQL et PHP

  • Requêtes de base : SELECT, INSERT, UPDATE, DELETE, avec et sans clauses telles que WHERE, ORDER BY et LIMIT.
  • Jointures : Savoir utiliser INNER JOIN, LEFT JOIN, RIGHT JOIN.
  • Relations : travaillez avec des tables liées (1:1, 1:N, N:N).
  • CRUD avec PDO ou MySQLi : Connaissance de l'exécution de requêtes et de la protection contre l'injection SQL à l'aide de requêtes préparées.
  • Indices : Qu'est-ce qu'ils sont et comment ils contribuent à la performance.
  • Transactions : Concept et utilisation dans MySQL (START TRANSACTION, COMMIT, ROLLBACK).

3. Structure et logique des données

  • Algorithmes de base : Tri (Tri à bulles, Tri rapide), recherche (binaire, linéaire).
  • Structures de données : tableaux, piles, files d'attente, listes.
  • Dépannage : Expérience dans la résolution de petits problèmes logiques, tels que ceux rencontrés dans les défis techniques (par exemple, HackerRank, Codewars).

4. Bonnes pratiques et normes

  • Code propre : Utilisation de noms de variables et de fonctions descriptifs, code bien indenté.
  • DRY (Ne vous répétez pas) et KISS (Keep It Simple, Stupid).
  • Sécurité de base : Prévention contre l'injection SQL, XSS et CSRF.

5. Développement Web

  • HTML/CSS/JavaScript de base : Connaissances suffisantes pour travailler avec des backends qui interagissent avec les frontends.
  • Formulaires : Traitement des formulaires, validation côté serveur.
  • API RESTful : Comment créer et consommer des API, des méthodes HTTP (GET, POST, PUT, DELETE).
  • Sessions et authentification : Utilisation de $_SESSION et gestion de base des connexions/déconnexions.

6. Outils et Environnement

  • Gestion de versions avec Git : commit, branchement, fusion et comment créer des pull request.
  • PHP Composer : Comprendre comment utiliser les dépendances externes.
  • Environnement local : Expérience avec WAMP, XAMPP ou Docker.
  • Débogage : Utilisation de var_dump, print_r ou d'outils comme Xdebug.

7. Concepts de base du génie logiciel

  • Modèles d'architecture : MVC (Model-View-Controller).
  • Base de données relationnelle : Normalisation des tables, clés primaires et étrangères.
  • Contrôle de version : travaillez avec les référentiels Git et comprenez le flux de travail de l'équipe (par exemple, Git Flow).

8. Questions comportementales

Les juniors entreprises évaluent également les soft skills. Préparez-vous à des questions telles que :

  • Pourquoi avez-vous choisi PHP ?
  • Comment résoudre les problèmes sous pression ?
  • Parlez-moi d'un projet que vous avez déjà développé.
  • Comment gérez-vous les erreurs ?

Conseils pour se démarquer

  1. Concevez quelque chose de pratique avant l'entretien : Exemple, un simple CRUD, une API RESTful ou un système de connexion de base. Cela montre votre proactivité.
  2. Apprenez à connaître l'entreprise : Comprenez ce qu'elle fait, ses technologies et voyez si vous pouvez aligner vos réponses sur vos besoins.
  3. Soyez honnête : C'est normal de ne pas tout savoir. Démontrez votre volonté d’apprendre et comment vous résolvez les lacunes en matière de connaissances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal