F. api / producto-modifica.php

1
<?php
2
3
require_once __DIR__ . "/../libservidorphp/manejaErrores.php";
4
require_once __DIR__ . "/../libservidorphp/recibeEnteroObligatorio.php";
5
require_once __DIR__ . "/../libservidorphp/recibeTextoObligatorio.php";
6
require_once __DIR__ . "/../libservidorphp/recibeBytesOpcionales.php";
7
require_once __DIR__ . "/../libservidorphp/validaEntidadObligatoria.php";
8
require_once __DIR__ . "/../libservidorphp/devuelveJson.php";
9
require_once __DIR__ . "/Bd.php";
10
require_once __DIR__ . "/productoBusca.php";
11
12
$prodId = recibeEnteroObligatorio("id");
13
$nombre = recibeTextoObligatorio("nombre");
14
$bytes = recibeBytesOpcionales("imagen");
15
16
$bd = Bd::conexion();
17
$bd->beginTransaction();
18
19
$producto = productoBusca($bd, $prodId);
20
$producto = validaEntidadObligatoria("Producto",  $producto);
21
22
$archId = $producto["PRD_ARCH_ID"];
23
24
if ($bytes !== "") {
25
 if ($archId === null) {
26
  $archId = archivoAgrega($bd, $bytes);
27
 } else {
28
  $stmt = $bd->prepare(
29
   "UPDATE ARCHIVO
30
   SET
31
    ARCH_BYTES = :ARCH_BYTES
32
   WHERE
33
    ARCH_ID = :ARCH_ID"
34
  );
35
  $stmt->execute([
36
   ":ARCH_BYTES" => $bytes,
37
   ":ARCH_ID" => $archId,
38
  ]);
39
 }
40
}
41
42
$stmt = $bd->prepare(
43
 "UPDATE PRODUCTO
44
   SET
45
    PRD_NOMBRE = TRIM(:PRD_NOMBRE),
46
    PRD_ARCH_ID = :PRD_ARCH_ID
47
   WHERE
48
    PRD_ID = :PRD_ID"
49
);
50
$stmt->execute([
51
 ":PRD_NOMBRE" => $nombre,
52
 ":PRD_ARCH_ID" => $archId,
53
 ":PRD_ID" => $prodId,
54
]);
55
56
$bd->commit();
57
58
$queryArch = http_build_query(["id" => $archId]);
59
// Los bytes de las imágenes se descargan con "archivo.php"; no desde aquí.
60
devuelveJson([
61
 "id" => ["value" => $prodId],
62
 "nombre" => ["value" => $nombre],
63
 "imagen" => ["data-src" => $archId === "" ? "" : "api/archivo.php?$queryArch"]
64
]);
65
skip_previous skip_next