CRUD en PHP

Creación de una aplicación CRUD en PHP

Entorno

  • servidor web (Apache/Nginx)
  • php 8
  • servidor de bases de datos (mysql/mariadb)

Instalación de LAMP en Linux

XAMPP (Apache + MariaDB + PHP + phpmyadmin para Windows)

 

phpMyAdmin en el VPS

sudo apt-get install phpmyadmin
sudo apt-get install php8.0-mbstring
sudo ln -s  /usr/share/phpmyadmin /var/www/html/phpmyadmin
sudo nginx -t
sudo systemctl restart nginx

crear un usuario y darle permisos

sudo mysql
create user admin@localhost identified by 'malaga2324';
grant all privileges on *.* to admin@localhost with grant option;
flush privileges;
exit;

PHP

Qué es PHP:

ejemplo.php

<!DOCTYPE html>
<html>
    <head>
        <title>Ejemplo</title>
    </head>
    <body>

        <?php
            echo "¡Hola, soy un script de PHP!";
        ?>

    </body>
</html>

Otro ejemplo de PHP: bucle.php

<?php
for ($indice = 1; $indice < 6; $indice ++)
{
    echo "Contador de bucle actual " . $indice . "<br>";
}
?>

Sintaxis de PHP

Editor para PHP: Visual Studio Code

Extensión de PHP para Code

 

Tutorial de creación de una aplicación CRUD

Qué es CRUD?

Código en Github

Modificaciones de la aplicación CRUD

index.php

<?php include("db.php"); ?>

<?php include('includes/header.php'); ?>

<main class="container p-4">
  <div class="row">
    <div class="col-md-12">
      <!-- MESSAGES -->

      <?php if (isset($_SESSION['message'])) { ?>
      <div class="alert alert-<?= $_SESSION['message_type']?> alert-dismissible fade show" role="alert">
        <?= $_SESSION['message']?>
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <?php session_unset(); } ?>
    </div>

  <div class="row">
    <div class="col-md-12">
      <a href="insert.php"  class="btn btn-primary mt-4">Crear tarea</a>
      <hr>
    </div>
  </div>

    <div class="col-md-12">
      <table class="table table-bordered">
        <thead>
          <tr>
            <th>Title</th>
            <th>Description</th>
            <th>Created At</th>
            <th>Action</th>
          </tr>
        </thead>
        <tbody>

          <?php
          $query = "SELECT * FROM task";
          $result_tasks = mysqli_query($conn, $query);    

          while($row = mysqli_fetch_assoc($result_tasks)) { ?>
          <tr>
            <td><?php echo $row['title']; ?></td>
            <td><?php echo $row['description']; ?></td>
            <td><?php echo $row['created_at']; ?></td>
            <td>
              <a href="edit.php?id=<?php echo $row['id']?>" class="btn btn-secondary">
                <i class="fas fa-marker"></i>
              </a>
              <a href="delete_task.php?id=<?php echo $row['id']?>" class="btn btn-danger">
                <i class="far fa-trash-alt"></i>
              </a>
            </td>
          </tr>
          <?php } ?>
        </tbody>
      </table>
    </div>
  </div>
</main>

<?php include('includes/footer.php'); ?>

insert.php

<?php include('includes/header.php'); ?>

<main class="container p-4">
  <div class="row">
    <div class="col-md-8">

      <!-- ADD TASK FORM -->
      <div class="card card-body">
        <form action="save_task.php" method="POST">
          <div class="form-group">
            <input type="text" name="title" class="form-control" placeholder="Task Title" autofocus>
          </div>
          <div class="form-group">
            <textarea name="description" rows="2" class="form-control" placeholder="Task Description"></textarea>
          </div>
          <input type="submit" name="save_task" class="btn btn-success btn-block" value="Save Task">
          <hr>
          <a class="btn btn-secondary btn-block" href="index.php">Cancel</a>
        </form>
      </div>
    </div>
  </div>
</main>

<?php include('includes/footer.php'); ?>

Instalación

Conectarse por ssh para trabajar en el VPS:

ssh usuario@alumno.me

cd /var/www/html
sudo wget https://github.com/paco-portada/crud/archive/refs/heads/main.zip
  • descomprimir el archivo zip en la carpeta de documentos del servidor web en el VPS (/var/www/html en Linux) y cambiarle el nombre a la carpeta:

sudo unzip main.zip
sudo mv crud-main crud
  • crear la base de datos con el script:

crud/database/script.sql

sudo mysql < crud/database/script.sql
  • crear un usuario y contraseña y darle permiso para acceder a la base de datos php-mysql-crud

crudUser/malaga2324

sudo mysql
create user crudUser@localhost identified by 'malaga2324';
grant all privileges on php_mysql_crud.* to crudUser@localhost with grant option;
flush privileges; 
exit;
  • modiifcar en el fichero db.php el usuario y contraseña creados

sudo nano crud/db.php

fichero db.php

<?php
session_start();

$conn = mysqli_connect(
  'localhost',
  'crudUser',
  'malaga2324',
  'php_mysql_crud'
) or die(mysqli_erro($mysqli));

?>
  • acceder en el navegador a la ruta

alumno.me/crud/

Deja una respuesta