Fallo al actualizar
Publicado por Sergio (112 intervenciones) el 23/03/2020 21:31:01
Buenas noches. Tengo un script CRUD que funciona bien hasta que quiero actualizar. Hay un campo input file. Sino selecciono una imagen, me da error. He intentado todo. Os pondo el código. Está hecho con php y ajax.
Primero el ajax. Pulso un boton de actualizar, se cagan todos los datos en el formulario, incluso he puesto un input type text, que al cargar los datos, sale reflejado el nombre de la imagen.
Os pongo el archivo actualizar.php
Y por último, la función que actualiza la tabla
Yo había pensado en preguntar si la variable $_FILES venía vacía. Si viene vacía, pasarle el contenido de la imagen que había anteriormente. Creo que lo estoy haciendo así pero no funciona.
Primero el ajax. Pulso un boton de actualizar, se cagan todos los datos en el formulario, incluso he puesto un input type text, que al cargar los datos, sale reflejado el nombre de la imagen.
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
$("#btnActualizar").on('click', function(e) {
e.preventDefault();
var form = $('#frmnuevoU')[0];
var data = new FormData(form);
$.ajax({
url: 'procesos/actualizar.php',
type: 'post',
data: data,
cache: false,
contentType: false,
processData: false,
success: function(r) {
if (r==1){
$('#tablaDatatable').load('procesos/tabla.php')
alertify.success("Actualizado con éxito");
}else{
alertify.error("Error al actualizar");
}
}
});
});
Os pongo el archivo actualizar.php
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
<?php
require_once "../clases/conexion.php";
require_once "../clases/crud.php";
$obj= new crud();
if (empty($_FILES["imagenUP"]["name"])) {
$im = $_POST['imagenU'];
}else{
$im = $_FILES['imagenUp']['name'];
if (($_FILES["imagenUp"]["type"] == "image/pjpeg")
|| ($_FILES["imagenUp"]["type"] == "image/jpeg")
|| ($_FILES["imagenUp"]["type"] == "image/png")
|| ($_FILES["imagenUp"]["type"] == "image/gif")) {
if (move_uploaded_file($_FILES["imagenUp"]["tmp_name"], "../images/noticias/".$_FILES['imagenUp']['name'])) {
$datos=array(
$_POST['tituloU'],
$_POST['noticiaU'],
$_POST['fechaU'],
$_POST['autorU'],
/*$_FILES['imagenUp']['name'],*/
$im,
$_POST['idnoticia'],
$_POST['imagenU']
);
}
}
echo $obj->actualizar($datos);
}
?>
1
2
3
4
5
6
7
8
9
10
public function actualizar($datos){
$obj=new conectar();
$conexion=$obj->conexion();
/*unlink('../images/noticias/'.$datos[6]);*/
$sql = "UPDATE noticias SET titulo='$datos[0]', noticia='$datos[1]', fecha=DATE_FORMAT('$datos[2]','%Y-%m-%d'),
autor='$datos[3]', imagen='$datos[4]' WHERE idnoticia = '$datos[5]'";
return mysqli_query($conexion, $sql);
}
Yo había pensado en preguntar si la variable $_FILES venía vacía. Si viene vacía, pasarle el contenido de la imagen que había anteriormente. Creo que lo estoy haciendo así pero no funciona.
Valora esta pregunta


0