PATRON MVC 1-2 CRUD PERSONAS API JSON PHP MYSQL

 CREAR TABLA PERSONAS CON NOMBRE DNI Y FOTO INSERTAR SQL CON PHP MYSQL METODO PDO FETCH API JSON  PATRON DISEÑO MVC

Para crear la tabla "personas" con las columnas "nombre", "dni" y "foto", se puede utilizar el siguiente código SQL:


sql

Copy code

CREATE TABLE personas (

  id INT(11) NOT NULL AUTO_INCREMENT,

  nombre VARCHAR(50) NOT NULL,

  dni VARCHAR(10) NOT NULL,

  foto VARCHAR(100),

  PRIMARY KEY (id)

);

Para insertar datos en la tabla utilizando PHP y MySQL con el método PDO, se puede seguir el siguiente ejemplo:


php

Copy code

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "nombre_de_la_base_de_datos";


try {

  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


  $nombre = "Juan Pérez";

  $dni = "12345678A";

  $foto = "ruta/a/la/foto.jpg";


  $stmt = $conn->prepare("INSERT INTO personas (nombre, dni, foto) VALUES (:nombre, :dni, :foto)");

  $stmt->bindParam(':nombre', $nombre);

  $stmt->bindParam(':dni', $dni);

  $stmt->bindParam(':foto', $foto);

  $stmt->execute();


  echo "Datos insertados correctamente";

} catch(PDOException $e) {

  echo "Error: " . $e->getMessage();

}

$conn = null;

?>

Para obtener los datos de la tabla utilizando el método PDO y devolverlos en formato JSON, se puede utilizar el siguiente ejemplo:


php

Copy code

<?php

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "nombre_de_la_base_de_datos";


try {

  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


  $stmt = $conn->prepare("SELECT * FROM personas");

  $stmt->execute();


  $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

  $json = json_encode($result);

  echo $json;

} catch(PDOException $e) {

  echo "Error: " . $e->getMessage();

}

$conn = null;

?>

Para seguir el patrón de diseño MVC, se puede organizar el código de la siguiente manera:


Modelo (personas.php): contiene la lógica para acceder a la base de datos y manipular los datos de la tabla "personas".

Vista (personas_view.php): muestra los datos de la tabla "personas" en formato HTML o JSON, según corresponda.

Controlador (personas_controller.php): recibe las solicitudes del usuario y utiliza el modelo y la vista para procesarlas y devolver una respuesta.

Un ejemplo de código para el modelo sería:


php

Copy code

<?php

class PersonasModel {

  private $db;


  public function __construct($dbname, $username, $password) {

    $servername = "localhost";

    try {

      $this->db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

      $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {

      echo "Error: " . $e->getMessage();

    }

  }


  public function getPersonas() {

    $stmt = $this->db->prepare("SELECT * FROM personas");

    $stmt->execute();

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    return




jose fernandez

el patrón de diseño MVC SOLO ESO

El patrón de diseño MVC (Model-View-Controller) se divide en tres partes principales:


Modelo (Model): representa la capa de datos, es decir, la estructura y la lógica para acceder y manipular los datos. Esto puede incluir el acceso a la base de datos, la validación de datos, la lógica de negocios, etc.

Vista (View): representa la capa de presentación, es decir, la forma en que se muestran los datos al usuario. Esto puede incluir HTML, CSS, JavaScript, etc.

Controlador (Controller): representa la capa de control, es decir, la lógica para procesar las solicitudes del usuario y devolver una respuesta. Esto puede incluir la validación de formularios, la selección de datos del modelo, la gestión de sesiones, etc.

El objetivo del patrón MVC es separar la lógica de la aplicación en tres componentes independientes, lo que facilita su mantenimiento, escalabilidad y reutilización. Cada componente tiene una responsabilidad específica y no interactúa directamente con los demás, sino que lo hace a través de interfaces claras y definidas.


En resumen, el patrón de diseño MVC es una forma de estructurar una aplicación web de manera modular y organizada, lo que ayuda a mejorar su calidad y eficiencia.





jose fernandez

el patrón de diseño MVC SOLO ESO CON CODIGO

Por supuesto, aquí hay un ejemplo de cómo implementar el patrón MVC en PHP:


Modelo (models/PersonaModel.php):


php

Copy code

<?php


class PersonaModel {

  private $db;


  public function __construct($dbname, $username, $password) {

    $servername = "localhost";

    try {

      $this->db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

      $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {

      echo "Error: " . $e->getMessage();

    }

  }


  public function getPersonas() {

    $stmt = $this->db->prepare("SELECT * FROM personas");

    $stmt->execute();

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    return $result;

  }


  public function insertPersona($nombre, $dni, $foto) {

    $stmt = $this->db->prepare("INSERT INTO personas (nombre, dni, foto) VALUES (:nombre, :dni, :foto)");

    $stmt->bindParam(':nombre', $nombre);

    $stmt->bindParam(':dni', $dni);

    $stmt->bindParam(':foto', $foto);

    $stmt->execute();

  }

}

Vista (views/personas.php):


php

Copy code

<!DOCTYPE html>

<html>

<head>

  <title>Personas</title>

</head>

<body>

  <table>

    <tr>

      <th>Nombre</th>

      <th>DNI</th>

      <th>Foto</th>

    </tr>

    <?php foreach ($personas as $persona): ?>

    <tr>

      <td><?php echo $persona['nombre'] ?></td>

      <td><?php echo $persona['dni'] ?></td>

      <td><img src="<?php echo $persona['foto'] ?>"></td>

    </tr>

    <?php endforeach; ?>

  </table>

  <form action="index.php" method="post">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre">

    <br>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni">

    <br>

    <label for="foto">Foto:</label>

    <input type="text" name="foto" id="foto">

    <br>

    <input type="submit" value="Insertar">

  </form>

</body>

</html>

Controlador (index.php):


php

Copy code

<?php


require_once 'models/PersonaModel.php';


$dbname = "nombre_de_la_base_de_datos";

$username = "username";

$password = "password";


$model = new PersonaModel($dbname, $username, $password);


if ($_SERVER['REQUEST_METHOD'] === 'POST') {

  $nombre = $_POST['nombre'];

  $dni = $_POST['dni'];

  $foto = $_POST['foto'];


  $model->insertPersona($nombre, $dni, $foto);

}


$personas = $model->getPersonas();


include 'views/personas.php';

En este ejemplo, el archivo index.php actúa como el controlador, que recibe las solicitudes del usuario y utiliza el modelo (PersonaModel) y la vista (personas.php) para procesarlas y devolver una respuesta. El modelo representa la capa de datos y contiene la lógica para acceder y manipular los datos de la tabla "personas". La vista representa la capa de presentación y





jose fernandez

HAZME MVC INCLUIDO UPDATE Y DELETE

Claro, aquí hay una versión actualizada del ejemplo anterior con funciones para actualizar y eliminar registros:


Modelo (models/PersonaModel.php):


php

Copy code

<?php


class PersonaModel {

  private $db;


  public function __construct($dbname, $username, $password) {

    $servername = "localhost";

    try {

      $this->db = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

      $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {

      echo "Error: " . $e->getMessage();

    }

  }


  public function getPersonas() {

    $stmt = $this->db->prepare("SELECT * FROM personas");

    $stmt->execute();

    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    return $result;

  }


  public function getPersonaById($id) {

    $stmt = $this->db->prepare("SELECT * FROM personas WHERE id=:id");

    $stmt->bindParam(':id', $id);

    $stmt->execute();

    $result = $stmt->fetch(PDO::FETCH_ASSOC);

    return $result;

  }


  public function insertPersona($nombre, $dni, $foto) {

    $stmt = $this->db->prepare("INSERT INTO personas (nombre, dni, foto) VALUES (:nombre, :dni, :foto)");

    $stmt->bindParam(':nombre', $nombre);

    $stmt->bindParam(':dni', $dni);

    $stmt->bindParam(':foto', $foto);

    $stmt->execute();

  }


  public function updatePersona($id, $nombre, $dni, $foto) {

    $stmt = $this->db->prepare("UPDATE personas SET nombre=:nombre, dni=:dni, foto=:foto WHERE id=:id");

    $stmt->bindParam(':id', $id);

    $stmt->bindParam(':nombre', $nombre);

    $stmt->bindParam(':dni', $dni);

    $stmt->bindParam(':foto', $foto);

    $stmt->execute();

  }


  public function deletePersona($id) {

    $stmt = $this->db->prepare("DELETE FROM personas WHERE id=:id");

    $stmt->bindParam(':id', $id);

    $stmt->execute();

  }

}

Vista (views/personas.php):


php

Copy code

<!DOCTYPE html>

<html>

<head>

  <title>Personas</title>

</head>

<body>

  <table>

    <tr>

      <th>Nombre</th>

      <th>DNI</th>

      <th>Foto</th>

      <th>Acciones</th>

    </tr>

    <?php foreach ($personas as $persona): ?>

    <tr>

      <td><?php echo $persona['nombre'] ?></td>

      <td><?php echo $persona['dni'] ?></td>

      <td><img src="<?php echo $persona['foto'] ?>"></td>

      <td>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Editar">

        </form>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Eliminar">

        </form>

      </td>

    </tr>

    <?php endforeach; ?>

  </table>

  <?php if ($accion === 'insertar'):




jose fernandez

HAZME Vista (views/personas.php):

Aquí te muestro cómo se podría ver la vista de la lista de personas con la opción de agregar una nueva persona y la opción de editar o eliminar cada una de las personas existentes.


php

Copy code

<!DOCTYPE html>

<html>

<head>

  <title>Personas</title>

</head>

<body>

  <h1>Listado de Personas</h1>

  <table>

    <tr>

      <th>ID</th>

      <th>Nombre</th>

      <th>DNI</th>

      <th>Foto</th>

      <th>Acciones</th>

    </tr>

    <?php foreach ($personas as $persona): ?>

    <tr>

      <td><?php echo $persona['id'] ?></td>

      <td><?php echo $persona['nombre'] ?></td>

      <td><?php echo $persona['dni'] ?></td>

      <td><img src="<?php echo $persona['foto'] ?>"></td>

      <td>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Editar">

        </form>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Eliminar">

        </form>

      </td>

    </tr>

    <?php endforeach; ?>

  </table>

  <h2>Agregar Persona</h2>

  <form action="index.php" method="post" enctype="multipart/form-data">

    <input type="hidden" name="id" value="<?php echo $personaEditar['id'] ?>">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre" value="<?php echo $personaEditar['nombre'] ?>">

    <br>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni" value="<?php echo $personaEditar['dni'] ?>">

    <br>

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

    <br>

    <input type="submit" name="action" value="<?php echo $accion === 'editar' ? 'Actualizar' : 'Agregar' ?>">

  </form>

</body>

</html>

Esta vista incluye una tabla con el listado de personas, con una fila para cada persona que muestra su ID, nombre, DNI, foto y dos botones, uno para editar y otro para eliminar. También incluye un formulario para agregar o editar personas, que incluye campos para el nombre, DNI y foto, y un botón para agregar o actualizar la información, dependiendo de si se está agregando una nueva persona o editando una existente.





jose fernandez

INCLUIR ACCIONES EN Vista (views/personas.php)

Aquí te muestro cómo podrías incluir las acciones de agregar, editar y eliminar en la vista de personas:


php

Copy code

<!DOCTYPE html>

<html>

<head>

  <title>Personas</title>

</head>

<body>

  <h1>Listado de Personas</h1>

  <table>

    <tr>

      <th>ID</th>

      <th>Nombre</th>

      <th>DNI</th>

      <th>Foto</th>

      <th>Acciones</th>

    </tr>

    <?php foreach ($personas as $persona): ?>

    <tr>

      <td><?php echo $persona['id'] ?></td>

      <td><?php echo $persona['nombre'] ?></td>

      <td><?php echo $persona['dni'] ?></td>

      <td><img src="<?php echo $persona['foto'] ?>"></td>

      <td>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Editar">

        </form>

        <form action="index.php" method="post">

          <input type="hidden" name="id" value="<?php echo $persona['id'] ?>">

          <input type="submit" name="action" value="Eliminar">

        </form>

      </td>

    </tr>

    <?php endforeach; ?>

  </table>

  <h2>Agregar Persona</h2>

  <form action="index.php" method="post" enctype="multipart/form-data">

    <input type="hidden" name="id" value="<?php echo $personaEditar['id'] ?>">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre" value="<?php echo $personaEditar['nombre'] ?>">

    <br>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni" value="<?php echo $personaEditar['dni'] ?>">

    <br>

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

    <br>

    <input type="submit" name="action" value="<?php echo $accion === 'editar' ? 'Actualizar' : 'Agregar' ?>">

  </form>

</body>

</html>

En esta vista, se han agregado dos formularios para cada persona, uno para editar y otro para eliminar. Ambos formularios envían el ID de la persona a través de un campo oculto y envían una acción específica (Editar o Eliminar) al script de controlador index.php. También se ha agregado un formulario para agregar una nueva persona, que incluye campos para el nombre, DNI y foto. El botón de envío de este formulario cambia de "Agregar" a "Actualizar" según el valor de la variable $accion.





jose fernandez

INCUIR <?php if ($accion === 'insertar'):

Si quieres incluir la lógica para mostrar el formulario de agregar una nueva persona, podrías hacerlo usando la siguiente estructura de control:


php

Copy code

<?php if ($accion === 'insertar'): ?>

  <h2>Agregar Persona</h2>

  <form action="index.php" method="post" enctype="multipart/form-data">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre">

    <br>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni">

    <br>

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

    <br>

    <input type="submit" name="action" value="Agregar">

  </form>

<?php endif; ?>

En este caso, se muestra el formulario de agregar una nueva persona si la variable $accion tiene el valor "insertar". La estructura de control <?php if ($accion === 'insertar'): ?> se cierra con <?php endif; ?>. Dentro de la estructura de control se encuentra el formulario HTML para agregar una nueva persona, que envía los datos del formulario a través del método POST al script de controlador index.php.





jose fernandez

<?php if ($accion === 'EDITAR'): ?>

Si quieres incluir la lógica para mostrar el formulario de edición de una persona, podrías hacerlo usando la siguiente estructura de control:


php

Copy code

<?php if ($accion === 'editar'): ?>

  <h2>Editar Persona</h2>

  <form action="index.php" method="post" enctype="multipart/form-data">

    <input type="hidden" name="id" value="<?php echo $personaEditar['id'] ?>">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre" value="<?php echo $personaEditar['nombre'] ?>">

    <br>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni" value="<?php echo $personaEditar['dni'] ?>">

    <br>

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

    <br>

    <input type="submit" name="action" value="Actualizar">

  </form>

<?php endif; ?>

En este caso, se muestra el formulario de edición de una persona si la variable $accion tiene el valor "editar". La estructura de control <?php if ($accion === 'editar'): ?> se cierra con <?php endif; ?>. Dentro de la estructura de control se encuentra el formulario HTML para editar los datos de una persona, que muestra los valores actuales de la persona a editar en los campos correspondientes y envía los datos del formulario a través del método POST al script de controlador index.php. El ID de la persona a editar se envía como un campo oculto.





jose fernandez

<?php if ($accion === 'ELIMINAR'): ?>

Si quieres incluir la lógica para mostrar el mensaje de confirmación de eliminación de una persona, podrías hacerlo usando la siguiente estructura de control:


php

Copy code

<?php if ($accion === 'eliminar'): ?>

  <h2>Eliminar Persona</h2>

  <p>¿Está seguro que desea eliminar la persona "<?php echo $personaEliminar['nombre'] ?>"?</p>

  <form action="index.php" method="post">

    <input type="hidden" name="id" value="<?php echo $personaEliminar['id'] ?>">

    <input type="submit" name="action" value="Confirmar">

    <a href="index.php">Cancelar</a>

  </form>

<?php endif; ?>

En este caso, se muestra el mensaje de confirmación de eliminación de una persona si la variable $accion tiene el valor "eliminar". La estructura de control <?php if ($accion === 'eliminar'): ?> se cierra con <?php endif; ?>. Dentro de la estructura de control se muestra un mensaje de confirmación que incluye el nombre de la persona a eliminar y un formulario HTML que envía el ID de la persona a eliminar y la acción "Confirmar" a través del método POST al script de controlador index.php. Además, se incluye un enlace para cancelar la eliminación y volver a la lista de personas.


PARTE 2


CREAR TABLA PERSONAS CON NOMBRE DNI Y FOTO  crear sentencia INSERT SQL CON PHP MYSQL METODO PDO FETCH API JSON  y con PATRON DISEÑO MVC

Para crear la tabla "personas" con los campos "nombre", "dni" y "foto", la sentencia SQL sería la siguiente:

 

sql

Copy code

CREATE TABLE personas (

  id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  nombre VARCHAR(255) NOT NULL,

  dni VARCHAR(10) NOT NULL,

  foto VARCHAR(255) DEFAULT NULL

);

Para insertar datos en la tabla utilizando PHP, MySQL y PDO, se puede utilizar el siguiente código:

 

php

Copy code

<?php

 

// Conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

try {

    $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

    echo 'Error al conectarse a la base de datos: ' . $e->getMessage();

    exit;

}

 

// Datos a insertar

$nombre = 'Juan Pérez';

$dni = '12345678A';

$foto = 'ruta/de/la/foto.jpg';

 

// Sentencia SQL

$sql = 'INSERT INTO personas (nombre, dni, foto) VALUES (:nombre, :dni, :foto)';

$consulta = $conexion->prepare($sql);

$consulta->bindParam(':nombre', $nombre);

$consulta->

 

 

 

jose fernandez

CREAR TABLA PERSONAS CON NOMBRE DNI Y FOTO  crear sentencia INSERT SQL CON PHP MYSQL METODO PDO FETCH API JSON  y con PATRON DISEÑO MVC incluir formularios

Para crear la tabla "personas" con los campos "nombre", "dni" y "foto", la sentencia SQL sería la siguiente:

 

sql

Copy code

CREATE TABLE personas (

  id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

  nombre VARCHAR(255) NOT NULL,

  dni VARCHAR(10) NOT NULL,

  foto VARCHAR(255) DEFAULT NULL

);

Para insertar datos en la tabla utilizando PHP, MySQL y PDO, se puede utilizar el siguiente código:

 

php

Copy code

<?php

 

// Conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

try {

    $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

    echo 'Error al conectarse a la base de datos: ' . $e->getMessage();

    exit;

}

 

// Si se ha enviado el formulario, se procesa

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // Datos a insertar

    $nombre = $_POST['nombre'];

    $dni = $_POST['dni'];

    $foto = $_FILES['foto']['name'];

    $ruta_foto = $_FILES['foto']['tmp_name'];

 

    // Se mueve la foto al directorio de imágenes

    move_uploaded_file($ruta_foto, 'imagenes/' . $foto);

 

    // Sentencia SQL

    $sql = 'INSERT INTO personas (nombre, dni, foto) VALUES (:nombre, :dni, :foto)';

    $consulta = $conexion->prepare($sql);

    $consulta->bindParam(':nombre', $nombre);

    $consulta->bindParam(':dni', $dni);

    $consulta->bindParam(':foto', $foto);

    $consulta->execute();

}

?>

 

<!-- Formulario HTML -->

<form method="post" enctype="multipart/form-data">

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre">

 

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni">

 

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

 

    <button type="submit">Guardar</button>

</form>

Para mostrar los datos de la tabla utilizando PHP, MySQL y PDO, se puede utilizar el siguiente código:

 

php

Copy code

<?php

 

// Conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

try {

    $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

    echo 'Error al conectarse a la base de datos: ' . $e->getMessage();

    exit;

}

 

// Sentencia SQL

$sql = 'SELECT * FROM personas';

$consulta = $conexion->prepare($sql);

$consulta->execute();

$personas = $consulta->fetchAll(PDO::FETCH_ASSOC);

 

// Se convierte el array a formato JSON

$json_personas = json_encode($personas);

?>

 

<!-- Se muestra la tabla con los datos -->

<table>

    <thead>

        <tr>

            <th>ID</th>

            <th>Nombre</th>

            <th>DNI</th>

            <th>Foto</th>

        </tr>

    </thead>

    <tbody>

        <?php foreach ($personas as $persona): ?>

            <tr>

                <td><?php echo $persona['id']; ?></td>

                <td><?php echo $persona['nombre'];

 

 

 

jose fernandez

hazme Para mostrar los datos de la tabla utilizando PHP, MySQL y PDO, se puede utilizar el siguiente código

Para mostrar los datos de la tabla "personas" utilizando PHP, MySQL y PDO, se puede utilizar el siguiente código:

 

php

Copy code

<?php

 

// Conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

try {

    $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

    echo 'Error al conectarse a la base de datos: ' . $e->getMessage();

    exit;

}

 

// Sentencia SQL

$sql = 'SELECT * FROM personas';

$consulta = $conexion->prepare($sql);

$consulta->execute();

$personas = $consulta->fetchAll(PDO::FETCH_ASSOC);

 

// Se muestran los datos en una tabla

echo '<table>';

echo '<thead>';

echo '<tr>';

echo '<th>ID</th>';

echo '<th>Nombre</th>';

echo '<th>DNI</th>';

echo '<th>Foto</th>';

echo '</tr>';

echo '</thead>';

echo '<tbody>';

foreach ($personas as $persona) {

    echo '<tr>';

    echo '<td>' . $persona['id'] . '</td>';

    echo '<td>' . $persona['nombre'] . '</td>';

    echo '<td>' . $persona['dni'] . '</td>';

    echo '<td>' . ($persona['foto'] ? '<img src="imagenes/' . $persona['foto'] . '">' : '') . '</td>';

    echo '</tr>';

}

echo '</tbody>';

echo '</table>';

?>

Este código realiza una consulta a la tabla "personas" y recupera los datos utilizando el método fetchAll() con la opción PDO::FETCH_ASSOC, que devuelve un array asociativo con los datos de la consulta. Luego, se recorre este array con un bucle foreach y se muestran los datos en una tabla HTML, incluyendo la imagen si se ha especificado una en la columna "foto".

 

 

 

 

jose fernandez

haz formulario para editar mas codigo api json

Aquí te muestro un ejemplo de cómo podrías implementar un formulario para editar los datos de una persona utilizando PHP, MySQL, PDO, Fetch API y JSON:

 

HTML:

 

html

Copy code

<form id="form-persona">

  <input type="hidden" name="id" id="id">

  <div>

    <label for="nombre">Nombre:</label>

    <input type="text" name="nombre" id="nombre">

  </div>

  <div>

    <label for="dni">DNI:</label>

    <input type="text" name="dni" id="dni">

  </div>

  <div>

    <label for="foto">Foto:</label>

    <input type="file" name="foto" id="foto">

  </div>

  <button type="submit">Guardar cambios</button>

</form>

JavaScript:

 

javascript

Copy code

const formPersona = document.getElementById('form-persona');

 

// Función que carga los datos de la persona a editar

function cargarDatosPersona(id) {

  fetch(`obtener_persona.php?id=${id}`)

    .then(response => response.json())

    .then(persona => {

      formPersona.id.value = persona.id;

      formPersona.nombre.value = persona.nombre;

      formPersona.dni.value = persona.dni;

    });

}

 

// Función que envía los datos actualizados de la persona al servidor

function guardarCambiosPersona() {

  const formData = new FormData(formPersona);

  fetch('guardar_cambios_persona.php', {

    method: 'POST',

    body: formData

  })

  .then(response => response.json())

  .then(response => {

    if (response.ok) {

      alert('Cambios guardados correctamente');

    } else {

      alert('Error al guardar cambios');

    }

  });

}

 

// Se captura el evento submit del formulario

formPersona.addEventListener('submit', event => {

  event.preventDefault();

  guardarCambiosPersona();

});

 

// Se carga los datos de la persona a editar

cargarDatosPersona(1); // Se debe reemplazar 1 por el ID de la persona a editar

PHP (obtener_persona.php):

 

php

Copy code

<?php

 

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

// Se recupera el ID de la persona a editar

$id = $_GET['id'];

 

try {

  $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

  echo json_encode(['error' => 'Error al conectarse a la base de datos']);

  exit;

}

 

// Se consulta la persona a editar

$sql = 'SELECT * FROM personas WHERE id = :id';

$consulta = $conexion->prepare($sql);

$consulta->bindValue(':id', $id, PDO::PARAM_INT);

$consulta->execute();

$persona = $consulta->fetch(PDO::FETCH_ASSOC);

 

if (!$persona) {

  echo json_encode(['error' => 'Persona no encontrada']);

  exit;

}

 

echo json_encode($persona);

PHP (guardar_cambios_persona.php):

 

php

Copy code

<?php

 

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_bd';

$usuario = 'usuario';

$password = 'contraseña';

 

try {

  $conexion = new PDO($dsn, $usuario, $password);

} catch (PDOException $e) {

  echo json_encode(['ok' => false]);

  exit;

}

 

// Se recuperan los datos actualizados de la persona

$id = $_POST['id'];

$nombre = $_POST['nombre'];

$dni = $_POST['dni'];

 

//

 

 

 

jose fernandez

haz solo PHP (guardar_cambios_persona.php)

Aquí te muestro el código PHP para guardar los cambios de una persona en la base de datos utilizando PDO, JSON y el patrón de diseño MVC:

 

php

Copy code

<?php

 

// Se importa el modelo de la persona

require_once 'modelo/persona.php';

 

// Se comprueba si se ha enviado el formulario

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

 

  // Se recuperan los datos del formulario

  $id = $_POST['id'];

  $nombre = $_POST['nombre'];

  $dni = $_POST['dni'];

 

  // Se crea un objeto persona con los datos actualizados

  $persona = new Persona();

  $persona->setId($id);

  $persona->setNombre($nombre);

  $persona->setDni($dni);

 

  // Se actualiza la persona en la base de datos

  $resultado = $persona->actualizar();

 

  // Se devuelve la respuesta en formato JSON

  echo json_encode(['ok' => $resultado]);

 

} else {

  // Si no se ha enviado el formulario, se redirige a la página principal

  header('Location: index.php');

  exit;

}

En este código, se importa el modelo de la persona y se comprueba si se ha enviado el formulario por el método POST. Si se ha enviado, se recuperan los datos del formulario y se crea un objeto persona con los datos actualizados. Luego, se llama al método actualizar del objeto persona, que actualiza los datos en la base de datos y devuelve un valor booleano que indica si la actualización se realizó correctamente. Finalmente, se devuelve la respuesta en formato JSON. Si no se ha enviado el formulario, se redirige a la página principal.

 

 

 

 

jose fernandez

guardar_cambios_persona.php sin mvc

Claro, aquí te muestro el código PHP para guardar los cambios de una persona en la base de datos utilizando PDO y JSON sin el patrón de diseño MVC:

 

php

Copy code

<?php

 

// Se recuperan los datos del formulario

$id = $_POST['id'];

$nombre = $_POST['nombre'];

$dni = $_POST['dni'];

 

// Se establece la conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_base_de_datos';

$usuario = 'usuario';

$contraseña = 'contraseña';

 

try {

  $conexion = new PDO($dsn, $usuario, $contraseña);

} catch (PDOException $e) {

  die('Error al conectarse a la base de datos: ' . $e->getMessage());

}

 

// Se prepara la consulta para actualizar la persona en la base de datos

$sql = 'UPDATE personas SET nombre = :nombre, dni = :dni WHERE id = :id';

$consulta = $conexion->prepare($sql);

 

// Se ejecuta la consulta con los datos actualizados

$consulta->execute([

  'nombre' => $nombre,

  'dni' => $dni,

  'id' => $id,

]);

 

// Se devuelve la respuesta en formato JSON

echo json_encode(['ok' => true]);

En este código, se recuperan los datos del formulario y se establece la conexión a la base de datos utilizando PDO. Luego, se prepara la consulta para actualizar la persona en la base de datos utilizando los datos actualizados del formulario. Se ejecuta la consulta y se devuelve la respuesta en formato JSON.

 

 

 

 

jose fernandez

haz para eliminar registro y foto

Claro, aquí te muestro el código PHP para eliminar un registro de una persona y su foto en la base de datos utilizando PDO y JSON:

 

php

Copy code

<?php

 

// Se comprueba si se ha enviado el formulario

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

 

  // Se recuperan los datos del formulario

  $id = $_POST['id'];

 

  // Se establece la conexión a la base de datos

  $dsn = 'mysql:host=localhost;dbname=nombre_de_la_base_de_datos';

  $usuario = 'usuario';

  $contraseña = 'contraseña';

 

  try {

    $conexion = new PDO($dsn, $usuario, $contraseña);

  } catch (PDOException $e) {

    die('Error al conectarse a la base de datos: ' . $e->getMessage());

  }

 

  // Se obtiene la ruta de la foto de la persona

  $sql = 'SELECT foto FROM personas WHERE id = :id';

  $consulta = $conexion->prepare($sql);

  $consulta->execute(['id' => $id]);

  $foto = $consulta->fetchColumn();

 

  // Se elimina la persona de la base de datos

  $sql = 'DELETE FROM personas WHERE id = :id';

  $consulta = $conexion->prepare($sql);

  $consulta->execute(['id' => $id]);

 

  // Se elimina la foto de la persona del servidor

  if ($foto !== null) {

    unlink($foto);

  }

 

  // Se devuelve la respuesta en formato JSON

  echo json_encode(['ok' => true]);

 

} else {

  // Si no se ha enviado el formulario, se redirige a la página principal

  header('Location: index.php');

  exit;

}

En este código, se comprueba si se ha enviado el formulario por el método POST. Si se ha enviado, se recuperan los datos del formulario y se establece la conexión a la base de datos utilizando PDO. Luego, se obtiene la ruta de la foto de la persona y se elimina la persona de la base de datos. Si la persona tiene una foto asociada, se elimina la foto del servidor utilizando la función unlink(). Finalmente, se devuelve la respuesta en formato JSON. Si no se ha enviado el formulario, se redirige a la página principal.

 

 

 

 

jose fernandez

guardar_cambios_persona.php sin mvc pero le falto modificar la foto de la carpeta

¡Cierto! Para modificar la foto de la carpeta, puedes agregar el siguiente código en el archivo guardar_cambios_persona.php:

 

php

Copy code

<?php

 

// Se recuperan los datos del formulario

$id = $_POST['id'];

$nombre = $_POST['nombre'];

$dni = $_POST['dni'];

$foto = $_FILES['foto'];

 

// Se establece la conexión a la base de datos

$dsn = 'mysql:host=localhost;dbname=nombre_de_la_base_de_datos';

$usuario = 'usuario';

$contraseña = 'contraseña';

 

try {

  $conexion = new PDO($dsn, $usuario, $contraseña);

} catch (PDOException $e) {

  die('Error al conectarse a la base de datos: ' . $e->getMessage());

}

 

// Se prepara la consulta para actualizar la persona en la base de datos

$sql = 'UPDATE personas SET nombre = :nombre, dni = :dni WHERE id = :id';

$consulta = $conexion->prepare($sql);

 

// Se ejecuta la consulta con los datos actualizados

$consulta->execute([

  'nombre' => $nombre,

  'dni' => $dni,

  'id' => $id,

]);

 

// Se comprueba si se ha subido una nueva foto

if ($foto['error'] === UPLOAD_ERR_OK) {

 

  // Se obtiene la extensión de la foto

  $extension = pathinfo($foto['name'], PATHINFO_EXTENSION);

 

  // Se genera un nombre único para la foto

  $nombre_foto = uniqid('foto_') . '.' . $extension;

 

  // Se mueve la foto a la carpeta de fotos

  move_uploaded_file($foto['tmp_name'], 'fotos/' . $nombre_foto);

 

  // Se actualiza el registro de la persona en la base de datos con el nombre de la nueva foto

  $sql = 'UPDATE personas SET foto = :foto WHERE id = :id';

  $consulta = $conexion->prepare($sql);

  $consulta->execute(['foto' => 'fotos/' . $nombre_foto, 'id' => $id]);

 

  // Se elimina la foto anterior de la carpeta de fotos, si existe

  $sql = 'SELECT foto FROM personas WHERE id = :id';

  $consulta = $conexion->prepare($sql);

  $consulta->execute(['id' => $id]);

  $fila = $consulta->fetch(PDO::FETCH_ASSOC);

  $foto_anterior = $fila['foto'];

 

  if ($foto_anterior !== null) {

    unlink($foto_anterior);

  }

 

}

 

// Se devuelve la respuesta en formato JSON

echo json_encode(['ok' => true]);

En este código, se agrega el código necesario para actualizar la foto de la persona en la carpeta de fotos. Primero, se comprueba si se ha subido una nueva foto. Si se ha subido, se obtiene la extensión de la foto, se genera un nombre único para la foto y se mueve la foto a la carpeta de fotos. Luego, se actualiza el registro de la persona en la base de datos con el nombre de la nueva foto. Si la persona ya tenía una foto anterior, se elimina la foto anterior de la carpeta de fotos utilizando la función unlink(). Finalmente, se devuelve la respuesta en formato JSON.

Comentarios

Entradas populares de este blog

INSERTAR Y UPDATE FECHA CON PHP MYSQL EN FORMULARIO METODO POST CON JQUERY ETIQUETA DATE

Copia de Seguridad de Archivo MS Access (.mdb) a Pendrive con VB6

CONVERTIR IMÁGEN JPG O PNG A WEBP CON PHP DE FORMA SIMPLE