F. php / producto-modifica.php

1
<?php
2
3
require_once __DIR__ . "/lib/manejaErrores.php";
4
require_once __DIR__ . "/lib/recibeEnteroObligatorio.php";
5
require_once __DIR__ . "/lib/recibeTextoObligatorio.php";
6
require_once __DIR__ . "/lib/recibeBytesOpcionales.php";
7
require_once __DIR__ . "/lib/validaEntidadObligatoria.php";
8
require_once __DIR__ . "/lib/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::pdo();
17
$bd->beginTransaction();
18
19
$producto = productoBusca($bd, $prodId);
20
$producto = validaEntidadObligatoria("Producto",  $producto);
21
22
$archId = $producto["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
    PROD_NOMBRE = :PROD_NOMBRE,
46
    ARCH_ID = :ARCH_ID
47
   WHERE
48
    PROD_ID = :PROD_ID"
49
);
50
$stmt->execute([
51
 ":PROD_NOMBRE" => $nombre,
52
 ":ARCH_ID" => $archId,
53
 ":PROD_ID" => $prodId,
54
]);
55
56
$bd->commit();
57
58
$encodeArchId = $archId === null ? "" : urlencode($archId);
59
$htmlEncodeArchId = htmlentities($encodeArchId);
60
// Los bytes de las imágenes se descargan con "archivo.php"; no desde aquí.
61
devuelveJson([
62
 "id" => ["value" => $prodId],
63
 "nombre" => ["value" => $nombre],
64
 "imagen" => [
65
  "data-src" => $htmlEncodeArchId === ""
66
   ? ""
67
   : "php/archivo.php?id=$htmlEncodeArchId"
68
 ]
69
]);
70
skip_previous skip_next