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)

XAMPP (Apache + MariaDB + PHP + phpmyadmin para Windows)
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>";
}
?>
Editor para PHP: Visual Studio Code
Libro:
Código en GitHub de ejemplos del libro
Bootstrap
Tutorial de creación de una aplicación CRUD
Modificaciones de la aplicación CRUD
includes/header.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP CRUD MYSQL</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<!-- BOOTSTRAP 4 -->
<link rel="stylesheet" href="https://bootswatch.com/4/yeti/bootstrap.min.css">
<!-- FONT AWESOEM -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous">
</head>
<body>
<nav class="navbar navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="index.php">PHP MySQL CRUD</a>
</div>
</nav>
includes/footer.php
<!-- BOOTSTRAP 4 SCRIPTS --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script> </body> </html>
db.php
<?php session_start(); $conn = mysqli_connect( 'localhost', 'admin', 'malaga2425', 'php_mysql_crud' ) or die(mysqli_erro($mysqli)); ?>
database/script.sql
CREATE DATABASE php_mysql_crud; use php_mysql_crud; CREATE TABLE task( id INT(11) PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255) NOT NULL, description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); DESCRIBE task;
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">×</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'); ?>
save_task.php
<?php
include('db.php');
if (isset($_POST['save_task'])) {
$title = $_POST['title'];
$description = $_POST['description'];
$query = "INSERT INTO task(title, description) VALUES ('$title', '$description')";
$result = mysqli_query($conn, $query);
if(!$result) {
die("Query Failed.");
}
$_SESSION['message'] = 'Task Saved Successfully';
$_SESSION['message_type'] = 'success';
header('Location: index.php');
}
?>
edit.php
<?php
include("db.php");
$title = '';
$description= '';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$query = "SELECT * FROM task WHERE id=$id";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) == 1) {
$row = mysqli_fetch_array($result);
$title = $row['title'];
$description = $row['description'];
}
}
if (isset($_POST['update'])) {
$id = $_GET['id'];
$title= $_POST['title'];
$description = $_POST['description'];
$query = "UPDATE task set title = '$title', description = '$description' WHERE id=$id";
mysqli_query($conn, $query);
$_SESSION['message'] = 'Task Updated Successfully';
$_SESSION['message_type'] = 'warning';
header('Location: index.php');
}
?>
<?php include('includes/header.php'); ?>
<div class="container p-4">
<div class="row">
<div class="col-md-4 mx-auto">
<div class="card card-body">
<form action="edit.php?id=<?php echo $_GET['id']; ?>" method="POST">
<div class="form-group">
<input name="title" type="text" class="form-control" value="<?php echo $title; ?>" placeholder="Update Title">
</div>
<div class="form-group">
<textarea name="description" class="form-control" cols="30" rows="10"><?php echo $description;?></textarea>
</div>
<input type="submit" class="btn btn-success btn-block" name="update" value="Update">
<hr>
<a class="btn btn-secondary btn-block" href="index.php">Cancel</a>
</form>
</div>
</div>
</div>
</div>
<?php include('includes/footer.php'); ?>
delete_task.php
<?php
include("db.php");
if(isset($_GET['id'])) {
$id = $_GET['id'];
$query = "DELETE FROM task WHERE id = $id";
$result = mysqli_query($conn, $query);
if(!$result) {
die("Query Failed.");
}
$_SESSION['message'] = 'Task Removed Successfully';
$_SESSION['message_type'] = 'danger';
header('Location: index.php');
}
?>
Instalación
-
descargar el archivo zip del repositorio en GitHub en https://github.com/paco-portada/crud
https://github.com/paco-portada/crud/archive/refs/heads/main.zip
Conectarse por ssh para trabajar en el VPS:
sshusuario@alumno.me
Situarse en la carpeta del servidor web (en Linux es /var/www/html)
cd /var/www/html sudo apt install wget 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 equipo local o en el servidor VPS (/var/www/html en Linux) y cambiarle el nombre a la carpeta:
sudo apt install unzip 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/malaga2526
sudo mysql create user crudUser@localhost identified by 'malaga2526'; 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', 'malaga2526', 'php_mysql_crud' ) or die(mysqli_erro($mysqli)); ?>
- acceder en el navegador a la ruta en el servidor local:
o en el VPS


Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.