CRUD en SQLite en PHP sin Morir en el intento

Sqlite es un motor de base de datos ligero, autonomo y portatil que no requiere un servidor, almacena toda la informacion en un archivo ideal para apps y sitios web pequeños.

La ventaja de usar SQLite es que el archivo database generado se puede mover y respaldar facilmente.

En este ejemplo vamos a ver como usar SQlite con PHP y PDO, una solucion muy interesante ya que apartir de ahora tambien vamos a crear ejemplos de sistemas y apps usando SQLite y PHP.

Algunas ventajas de SQLite:

  • Soporta casi todos las consultas SQL estandar
  • Es compatible con la mayoria de lenguajes de programacion
  • En PHP lo usamos con PDO o con alguna libreria de terceros
  • La mayoria de servidores ya tienen activado el SQLite

Vamos a empezar con esta guia donde vamos a hacer las consultas para mostrar datos, agregar, editar y eliminar.

Conectar y Crear la base de datos

Para conectar la base de datos vamos a usar PDO de PHP, el primero archivo es index.php donde se crea la base de datos y se muestran los datos.

La variable $dsn contiene la ubicacion de la base de datos y el nombre del archivo con extension .db, es lo unico que necesitamos para conectarnos a la base de datos SQLite.

<?php
$dsn ="sqlite:./database.db";
try {
    $pdo = new PDO($dsn);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    /* Crear la base de datos si no existe */
    $sql = "CREATE TABLE IF NOT EXISTS contact (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        phone TEXT NOT NULL UNIQUE
    )";
    $pdo->exec($sql);

} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>

Para este ejemplo creamos una tabla “contact” que tiene 3 campos, un id como llave primaria, name o nombre para nuestro contacto y un numero de telefono.

Si ejecutamos el archivo como se va a crear la base de datos y se le agregara la tabla, si ocurriera algun error se va a lanzar una exepcion.

Mostrar Datos en SQLite

Para mostrar los datos vamos a usar el comando select * from contact de SQL, que nos va a devolver la lista de contactos que tengamos agregados.

Les voy a poner el fragmento de codigo para el listado, este codigo es parte de un ejemplo mas completo que les voy a dejar para descargar al final del articulo, este es el archivo index.php.

 <?php
        try {
            // Mostrar los contactos
            $sql = "SELECT * FROM contact";
            $stmt = $pdo->query($sql);
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                echo "<tr>";
                echo "<td>" . htmlspecialchars($row['id']) . "</td>";
                echo "<td>" . htmlspecialchars($row['name']) . "</td>";
                echo "<td>" . htmlspecialchars($row['phone']) . "</td>";
                echo "<td><a href='edit.php?id=" . $row['id'] . "'>Edit</a> | <a href='delete.php?id=" . $row['id'] . "' onclick=\"return confirm('Are you sure?')\">Delete</a></td>";
                echo "</tr>";
            }
        } catch (PDOException $e) {
            echo "Error: " . $e->getMessage();
        }
        ?>

En la tabla del ejemplo completo tambien agregamos los botones para editar y eliminar, opciones que veremos mas abajo.

Agregar o Insertar datos en SQLite

Para agregar o insertar datos primero vamos a hacer un formulario new.php que tenga 2 campos, uno para el nombre y para el telefono, el Id se va a generar automaticamente.

    <form action="add.php" method="post">
        <label for="name">Nombre:</label>
        <input type="text" id="name" name="name" required><br><br>
        <label for="phone">Teléfono:</label>
        <input type="text" id="phone" name="phone" required><br><br>
        <input type="submit" value="Agregar Contacto">
    </form>

En el formulario hacemos referencia al archivo add.php el cual es el que rebice los datos mediante POST y los va a insertar en la base de datos.

<?php
try {
    $dsn = "sqlite:./database.db";
    $pdo = new PDO($dsn);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = $_POST["name"];
        $phone = $_POST["phone"];
        // Consulta SQL para insertar un nuevo contacto
        $sql = "INSERT INTO contact (name, phone) VALUES (:name, :phone)";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':phone', $phone);
        $stmt->execute();
    }
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
// Redirigir a la página principal después de agregar el contacto
header("Location: index.php");

?>

Al final de la accion de agregar pusimos una redireccion que nos lleva de nuevo a la pagina principal, donde se muestran los datos.

Actualizar Datos en SQLite

Una vez que agregamos los datos, en el listado se va a mostrar un boton de editar, que nos va a llevar a un formulario edit.php ya rellenado con los datos del contacto seleccionado y nos permitira modificar los datos de nombre y telefono.

Para esto primero vamos a consultar la base de datos y vamos a traer solo los datos del Id del contacto seleccionado.

<?php
$id = $_GET['id'];
try {
    $dsn = "sqlite:./database.db";
    $pdo = new PDO($dsn);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT * FROM contact WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    $name = $row['name'];
    $phone = $row['phone'];
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
?>

Ya que tenemos los datos de id, name y phone renderizamos el formulario con estos datos y ahora vamos a hacer referencia al archivo update.php donde se reciben y actualizan los datos.

    <form action="update.php" method="post">
        <input type="hidden" name="id" value="<?php echo $id; ?>">
        <label for="name">Nombre:</label>
        <input type="text" id="name" name="name" value="<?php echo $name; ?>" required><br><br>
        <label for="phone">Teléfono:</label>
        <input type="text" id="phone" name="phone" value="<?php echo $phone; ?>" required><br><br>
        <input type="submit" value="Actualizar Contacto">
    </form>

Cuando se ejecute la copion Actualizar contacto nos va a llevar al archivo update.php y una vez procesado nos regresa a index.php

<?php

$id = $_POST['id'];
try {
    $dsn = "sqlite:./database.db";
    $pdo = new PDO($dsn);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $name = $_POST["name"];
        $phone = $_POST["phone"];
        // Consulta SQL para actualizar el contacto
        $sql = "UPDATE contact SET name = :name, phone = :phone WHERE id = :id";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':phone', $phone);
        $stmt->bindParam(':id', $id);
        $stmt->execute();

    }
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
header("Location: index.php");
?>

Eliminar Datos en SQLite

Por ultimo temos la opcion de eliminar datos delete.php , esta opcion esta en el listado de los contactos junto al boton editar, al dar click en eliminar se lanzada una ventada de confirmacion y al aceptar se ejecuta delete.php el codigo es el siguiente:

<?php
try {
    $dsn = "sqlite:./database.db";
    $pdo = new PDO($dsn);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if ($_SERVER["REQUEST_METHOD"] == "GET") {
        $id = $_GET["id"];
        // Consulta SQL para eliminar el contacto
        $sql = "DELETE FROM contact WHERE id = :id";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':id', $id);
        $stmt->execute();

    }
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage();
}
header("Location: index.php");
?>

Resultado

Esta solo es una imagen de la tabla donde se muestran los usuarios.

Descargar

A continuacion les dejo el link de descarga.

Link: https://drive.google.com/file/d/1kojlPvWSsEc4OSJCNYK7Cjn8TJv-nBsW/view

Instalacion

Para realizar la instalacion solo tienen que subir los archivos a su servidor o a la carpeta htdocs del xampp y listo.

Con esta guia espero puedan hacer sus aplicaciones en SQLite sin morir en el intento.

Si tienen dudas o requieren asistencia por favor no duden en contactarme.

Toma el control absoluto de tu stock y ventas

Deja de perder dinero por inventarios mal gestionados. Con Inventio Max, centralizas tus productos, ventas y reportes en una sola plataforma robusta y escalable.

Ver Inventio Max: El Sistema de Inventario y Ventas Profesional →

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading