CRUD - ES6 API fetch foto nombre y apellido mysql pdo php json post

 

ES6 API fetch enviar adjunto foto con nombre y apellido delete mysql pdo php   json metodo post

Para enviar un archivo adjunto (en este caso, una foto) con el nombre y apellido del usuario a través de una solicitud POST utilizando el API Fetch de ES6 en JavaScript, y eliminar esa foto en el servidor utilizando PHP, MySQL y PDO, puedes seguir los siguientes pasos:

 

En tu archivo HTML, debes tener un formulario que permita al usuario seleccionar una foto y proporcionar su nombre y apellido. Aquí hay un ejemplo de cómo podría verse el formulario:

python

Copy code

<form id="form" enctype="multipart/form-data">

  <input type="text" name="nombre" placeholder="Nombre">

  <input type="text" name="apellido" placeholder="Apellido">

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

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

</form>

En tu archivo JavaScript, debes agregar un event listener al formulario para escuchar el evento "submit" y enviar una solicitud POST utilizando el API Fetch. Para enviar una foto adjunta, debes usar un objeto FormData para crear una solicitud multipart/form-data. Aquí hay un ejemplo de cómo podría verse el código JavaScript:

javascript

Copy code

const form = document.getElementById('form');

 

form.addEventListener('submit', (event) => {

  event.preventDefault();

 

  const nombre = form.nombre.value;

  const apellido = form.apellido.value;

  const foto = form.foto.files[0];

 

  const formData = new FormData();

  formData.append('nombre', nombre);

  formData.append('apellido', apellido);

  formData.append('foto', foto);

 

  fetch('upload_photo.php', {

    method: 'POST',

    body: formData

  })

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

  .then(data => console.log(data))

  .catch(error => console.error(error));

});

Este código agrega un event listener al formulario que escucha el evento "submit". Cuando se envía el formulario, se obtienen los valores de los campos "nombre", "apellido" y "foto". Luego, se crea un objeto FormData y se agregan los valores de los campos al objeto. Finalmente, se envía una solicitud POST a "upload_photo.php" con el objeto FormData como cuerpo de la solicitud.

 

En el archivo "upload_photo.php", se debe verificar que se recibe el nombre y apellido del usuario y la foto adjunta. Luego, se debe conectar a la base de datos y guardar la foto en el directorio "uploads" y también guardar los detalles de la foto en la base de datos. Aquí hay un ejemplo de cómo podría verse el archivo "upload_photo.php":

 

upload_photo.php mostrar solo

Si solo quieres mostrar el código del archivo upload_photo.php sin explicaciones, aquí te lo dejo:

 

php

Copy code

<?php

 

if (!isset($_POST['nombre']) || !isset($_POST['apellido']) || !isset($_FILES['foto'])) {

  die(json_encode(array('success' => false, 'message' => 'Falta información para guardar la foto')));

}

 

$nombre = $_POST['nombre'];

$apellido = $_POST['apellido'];

$foto = $_FILES['foto'];

 

$dsn = "mysql:host=nombre_del_servidor;dbname=nombre_de_la_base_de_datos";

$username = "nombre_de_usuario";

$password = "contraseña_del_usuario";

 

try {

  $db = new PDO($dsn, $username, $password);

} catch (PDOException $e) {

  die(json_encode(array('success' => false, 'message' => 'Error al conectar a la base de datos: ' . $e->getMessage())));

}

 

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

  $ruta = 'uploads/';

  $nombre_archivo = uniqid() . '_' . $foto['name'];

  $ruta_archivo = $ruta . $nombre_archivo;

  move_uploaded_file($foto['tmp_name'], $ruta_archivo);

  $query = "INSERT INTO fotos (nombre, apellido, ruta) VALUES (?, ?, ?)";

  $stmt = $db->prepare($query);

  $stmt->execute(array($nombre, $apellido, $ruta_archivo));

  echo json_encode(array('success' => true, 'message' => 'La foto se guardó correctamente'));

} else {

  echo json_encode(array('success' => false, 'message' => 'Error al guardar la foto'));

}

 

hacer con update fotos

Si deseas actualizar una foto existente en la base de datos y en la carpeta de uploads, puedes utilizar el siguiente código como base:

 

php

Copy code

<?php

 

if (!isset($_POST['id']) || !isset($_POST['nombre']) || !isset($_POST['apellido']) || !isset($_FILES['foto'])) {

  die(json_encode(array('success' => false, 'message' => 'Falta información para actualizar la foto')));

}

 

$id = $_POST['id'];

$nombre = $_POST['nombre'];

$apellido = $_POST['apellido'];

$foto = $_FILES['foto'];

 

$dsn = "mysql:host=nombre_del_servidor;dbname=nombre_de_la_base_de_datos";

$username = "nombre_de_usuario";

$password = "contraseña_del_usuario";

 

try {

  $db = new PDO($dsn, $username, $password);

} catch (PDOException $e) {

  die(json_encode(array('success' => false, 'message' => 'Error al conectar a la base de datos: ' . $e->getMessage())));

}

 

// Obtenemos la foto que queremos actualizar

$stmt = $db->prepare("SELECT * FROM fotos WHERE id = ?");

$stmt->execute(array($id));

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

 

// Comprobamos que la foto exista en la base de datos

if (!$foto_actual) {

  die(json_encode(array('success' => false, 'message' => 'La foto que intenta actualizar no existe')));

}

 

// Si el usuario no envía una nueva foto, utilizamos la foto actual

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

  $ruta_archivo = $foto_actual['ruta'];

} else {

  // Movemos la nueva foto a la carpeta de uploads

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

    $ruta = 'uploads/';

    $nombre_archivo = uniqid() . '_' . $foto['name'];

    $ruta_archivo = $ruta . $nombre_archivo;

    move_uploaded_file($foto['tmp_name'], $ruta_archivo);

  } else {

    die(json_encode(array('success' => false, 'message' => 'Error al subir la nueva foto')));

  }

}

 

// Actualizamos la información de la foto en la base de datos

$query = "UPDATE fotos SET nombre = ?, apellido = ?, ruta = ? WHERE id = ?";

$stmt = $db->prepare($query);

$stmt->execute(array($nombre, $apellido, $ruta_archivo, $id));

 

// Borramos la foto anterior si ha sido actualizada

if ($foto['error'] != UPLOAD_ERR_NO_FILE && file_exists($foto_actual['ruta'])) {

  unlink($foto_actual['ruta']);

}

 

echo json_encode(array('success' => true, 'message' => 'La foto se actualizó correctamente'));

Este código asume que tienes una columna llamada "id" en tu tabla "fotos", la cual es única para cada foto. También asume que estás recibiendo el "id" de la foto que deseas actualizar en la variable POST "id". Además, cuando actualizas una foto, el código primero verifica si el usuario ha enviado una nueva foto o no. Si no lo ha hecho, se utiliza la foto actual en la base de datos. Si el usuario envía una nueva foto, la nueva foto se carga en la carpeta de "uploads" y se actualiza la ruta en la base de datos. Finalmente, se elimina la foto anterior si ha sido actualizada.

 

hacer con delete fotos

Si deseas eliminar una foto existente en la base de datos y en la carpeta de uploads, puedes utilizar el siguiente código como base:

 

php

Copy code

<?php

 

if (!isset($_POST['id'])) {

  die(json_encode(array('success' => false, 'message' => 'Falta información para eliminar la foto')));

}

 

$id = $_POST['id'];

 

$dsn = "mysql:host=nombre_del_servidor;dbname=nombre_de_la_base_de_datos";

$username = "nombre_de_usuario";

$password = "contraseña_del_usuario";

 

try {

  $db = new PDO($dsn, $username, $password);

} catch (PDOException $e) {

  die(json_encode(array('success' => false, 'message' => 'Error al conectar a la base de datos: ' . $e->getMessage())));

}

 

// Obtenemos la foto que queremos eliminar

$stmt = $db->prepare("SELECT * FROM fotos WHERE id = ?");

$stmt->execute(array($id));

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

 

// Comprobamos que la foto exista en la base de datos

if (!$foto) {

  die(json_encode(array('success' => false, 'message' => 'La foto que intenta eliminar no existe')));

}

 

// Eliminamos la foto de la carpeta de uploads

if (file_exists($foto['ruta'])) {

  unlink($foto['ruta']);

}

 

// Eliminamos la foto de la base de datos

$query = "DELETE FROM fotos WHERE id = ?";

$stmt = $db->prepare($query);

$stmt->execute(array($id));

 

echo json_encode(array('success' => true, 'message' => 'La foto se eliminó correctamente'));

Este código asume que tienes una columna llamada "id" en tu tabla "fotos", la cual es única para cada foto. También asume que estás recibiendo el "id" de la foto que deseas eliminar en la variable POST "id". Además, cuando se elimina una foto, el código primero verifica si la foto existe en la base de datos y en la carpeta de "uploads". Si es así, se elimina la foto de la carpeta de "uploads" y luego se elimina la foto de la base de datos.

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