
problema con empty($_FILES) no toma el true
Publicado por anonymous (5 intervenciones) el 27/06/2016 00:32:10
Bueno ahora vuelvo con otro inconveniente, a ver si alguno encuentra el error, no puedo dar en la tecla. Porque no deberia estar fallando.
En los ultimos if determino si el campo tipo FILE esta vacio, el inconveniente lo tengo al modificar el producto sin modificar la imagen, con un error en la funcion validoTipoImagen($newImage); cuyo codigo es el siguiente:
PHP me tira este warning:
Warning: exif_imagetype(): Filename cannot be empty in C:\wamp64\www\proyecto\funcionesphp\validaciones.php on line 93
El tema es que al estar encerrada la funcion que contiene el exif_imagetype, en la parte falsa de empty($_FILES) no se deberia ejecutar. Ya me esta volviendo loco jajaja
Osea el inconveniente es que no me esta entrando a la parte verdadera del empty($_FILES)
al no agregarle la imagen en el input tipo file, si agrego una imagen se actualiza sin problemas y sin errores.
Mill gracias.
En los ultimos if determino si el campo tipo FILE esta vacio, el inconveniente lo tengo al modificar el producto sin modificar la imagen, con un error en la funcion validoTipoImagen($newImage); cuyo codigo es el siguiente:
PHP me tira este warning:
Warning: exif_imagetype(): Filename cannot be empty in C:\wamp64\www\proyecto\funcionesphp\validaciones.php on line 93
El tema es que al estar encerrada la funcion que contiene el exif_imagetype, en la parte falsa de empty($_FILES) no se deberia ejecutar. Ya me esta volviendo loco jajaja
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* Retorna el tipo de imagen en caso de ser JPEG o PNG caso contrario retorna false
* @param $img
* @return bool|string
*/
function validoTipoImagen($img){
/*EXIF_IMAGETYPE RETORNA UN NUMERO EQUIVALENTE AL TIPO DE LA IMAGEN*/
$typefile = exif_imagetype ($img['tmp_name'] ); //Guardo el tipo de imagen
/*Si el tipo de archivo es JPEG o PNG lo guardo junto al tipo de archivo */
if (($typefile === IMAGETYPE_JPEG) || ($typefile === IMAGETYPE_PNG)) {
if ($typefile === IMAGETYPE_JPEG) {
$tipoImagen = "jpeg";
return $tipoImagen;
} elseif ($typefile === IMAGETYPE_PNG) {
$tipoImagen = "png";
return $tipoImagen;
}
}
return false;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
if ((empty($_POST)) && (!empty($_GET))){
$_SESSION['idProducto'] = $_GET['productoAModificar'];
$idProducto= $_GET['productoAModificar'];
$producto = getProducto($idProducto);
?>
<!-- Contenido -->
<div class="cambio_categoria">
<form action="modificar_producto.php" method="post" name="formModificarProducto"
enctype="multipart/form-data">
<label for="nom">Nombre Del Producto:</label>
<input type="text" name="nomprod" id="nom" value="<?php echo $producto['nombre']; ?>"/>
<label for="selectCategoria">Seleccione Una nueva Categoria</label>
<select name="selcat" id="selcatNewProducto" id="selectCategoria">
<?php
$connect = conectar();
$consultaCategorias = "SELECT * FROM categorias_productos";
$categorias = mysqli_query($connect, $consultaCategorias);
while ($row = mysqli_fetch_assoc($categorias)) {
/* Si el id del producto a modificar es el mismo que el id leido de la BD lo setea como selected
Si no, lo agrega a la lista del select */
if ($row['idCategoriaProducto'] === $producto['idCategoriaProducto']) {
echo "<option selected value=" . $row['idCategoriaProducto'] . ">" . ucwords($row['nombre']) . "</option>";
} else {
echo "<option value=" . $row['idCategoriaProducto'] . ">" . ucwords($row['nombre']) . "</option>";
}
}
mysqli_free_result($categorias);
mysqli_close($connect);
?>
<label for="fechacad">Fecha de Caducidad:</label>
<input type="date" name="fecha_caducidad" id="fechacad"
value="<?php echo $producto['caducidad']; ?>"
onblur="validarModificarProducto(this.value)"/>
<label for="pre">Precio:</label>
<input type="number" name="precio" id="pre" value="<?php echo $producto['precio']; ?>"/>
<label for="img">Imagen del Producto</label>
<input type="file" name="imagenprod" id="img"/>
<img src="mostrarImagen.php?idProducto=<?php echo $idProducto; ?>"
style="width: 5%;height: 5%;padding-left: 30%"/>
<label for="iddescripcion">Descripción</label>
<textarea name="descripcion" rows="2" cols="30"
id="iddescripcion"><?php echo $producto['descripcion']; ?></textarea>
<input type="submit" value="Enviar"/>
</form>
</div>
<?php
}else{
$newName = $_POST['nomprod'];
$newCategory = $_POST['selcat'];
$newCaducidad = $_POST['fecha_caducidad'];
$newPrice = $_POST['precio'];
$newDescription = $_POST['descripcion'];
$idProducto = $_SESSION['idProducto'];
//SI en el campo de la imagen no se selecciona una nueva imagen hace un update de los datos de la BD sin enviar la imagen
if ((empty($_FILES)) {
updateSinImagen($newCategory, $newName, $newDescription, $newPrice, $newCaducidad, $idProducto);
unset($_SESSION['idProducto']);
$_SESSION['exito'] = "El producto se actualizo correctamente";
header('location:SeleccionProdModificar.php');
}else{
$newImage = $_FILES['imagenprod'];
$tipoImagen = validoTipoImagen($newImage);
if ($tipoImagen != false) {
$binario_imagen = obtengoBinarioIMG($newImage);
updateConImagen($newCategory, $newName, $newDescription, $newPrice, $newCaducidad, $binario_imagen, $tipoImagen, $idProducto);
unset($_SESSION['idProducto']);
$_SESSION['exito'] = "El producto se actualizo correctamente";
}else{
$SESSION['error'] = "La imagen no es una imagen valida";
}
}
}
?>
</div>
</div>
</body>
</html>
Osea el inconveniente es que no me esta entrando a la parte verdadera del empty($_FILES)
al no agregarle la imagen en el input tipo file, si agrego una imagen se actualiza sin problemas y sin errores.
Mill gracias.
Valora esta pregunta


0