PHP - Problemas con imagen al editar el form

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas con imagen al editar el form

Publicado por Mauricio (4 intervenciones) el 01/12/2020 14:02:45
Hola a todos, antes que nada, gracias por el aporte y espero que me puedan ayudar.
Soy principiante en esto.

Tengo un formulario que envía datos y entre ellos la imagen. Y un segundo formulario que lo edita. Todo va bien. Tanto uno como otro. Pero, al editar, los campos que no han sido tocados, se actualizan entre ellos la imagen.
La imagen tiene un else que funciona bien en la linea 134, que guarda una imagen por defecto.
Lo que quiero lograr es que en lugar de guardar la imagen por defecto. (en caso que el usuario no actualice la imagen) guarde por defecto la imagen que tiene en la base de datos. He probado varias formas y no sé como resolverlo.

Gracias de nuevo, y aquí os dejo el código. Espero que me puedan ayudar.
Saludos!

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
require_once('../../functions/clean-function.php');
require_once('../../functions/token-function.php');
require_once('../../functions/server-validation-function.php');
require_once('../../functions/alert-function.php');
require_once('../../functions/field-function.php');
require_once('../../functions/messages-function.php');
require_once('../../functions/autorization-function.php');
require_once('../../../resources/connection.php');
 
//SELECCION DE DATOS DE LA PRIMERA TABLA//
$id_perfil_pacientes = $_GET['post'] ?? '';
$stmt = $con->prepare("SELECT id_perfil_pacientes, tratamiento, fecha_nacimiento, nombre_paciente, apellidos_paciente, grupo_sanguineo, email_paciente, telefono_paciente, domicilio_paciente, datos_domicilio_paciente, cp_paciente, ciudad_paciente, provincia_paciente, created_by, image FROM pacientes_perfil WHERE id_perfil_pacientes = ?");
$stmt->bind_param("i", $id_perfil_pacientes);
$stmt->execute();
$result = $stmt->get_result();
$count = mysqli_num_rows($result);
$column = $result->fetch_assoc();
$stmt->free_result();
$stmt->close();
 
if($count === 1){
    authorize($column['created_by']);
    $tratamiento = $column['tratamiento'];
    $fecha_nacimiento = $column['fecha_nacimiento'];
    $nombre_paciente = $column['nombre_paciente'];
    $apellidos_paciente = $column['apellidos_paciente'];
    $grupo_sanguineo = $column['grupo_sanguineo'];
    $email_paciente = $column['email_paciente'];
    $telefono_paciente = $column['telefono_paciente'];
    $domicilio_paciente = $column['domicilio_paciente'];
    $datos_domicilio_paciente = $column['datos_domicilio_paciente'];
    $cp_paciente = $column['cp_paciente'];
    $ciudad_paciente = $column['ciudad_paciente'];
    $provincia_paciente = $column['provincia_paciente'];
    $image = $column['image'];
 
}
 
if($_SERVER['REQUEST_METHOD'] === 'POST'){
    if(isset($_POST['token']) && compare_token($_POST['token']) && empty($_POST['company'])){
        $fields = [
            'tratamiento' => 'Tratamiento',
            'nombre_paciente' => 'Nombre',
            'apellidos_paciente' => 'Apellidos',
        ];
 
        $errors = validate($fields);
 
        if(empty($errors)){$errors = updateInformacion($con, $id_perfil_pacientes);}
 
    }
    else{
        createMessage('fail', 'Ooops... Los datos no han podido ser actualizados por irregularidades en el formulario.');
    }
}
 
function updateInformacion($con, $id_perfil_pacientes){
 
    $tratamiento = clean($_POST['tratamiento']);
    $fecha_nacimiento = clean($_POST['fecha_nacimiento']);
    $nombre_paciente = clean($_POST['nombre_paciente']);
    $apellidos_paciente = clean($_POST['apellidos_paciente']);
    $grupo_sanguineo = clean($_POST['grupo_sanguineo']);
    $email_paciente = clean($_POST['email_paciente']);
    $telefono_paciente = clean($_POST['telefono_paciente']);
    $domicilio_paciente = clean($_POST['domicilio_paciente']);
    $datos_domicilio_paciente = clean($_POST['datos_domicilio_paciente']);
    $cp_paciente = clean($_POST['cp_paciente']);
    $ciudad_paciente = clean($_POST['ciudad_paciente']);
    $provincia_paciente = clean($_POST['provincia_paciente']);
    $username = $_SESSION['user-pacientes'];
    $image = imageUpdate();
 
 
    $stmt = $con->prepare("UPDATE pacientes_perfil SET tratamiento = ?, fecha_nacimiento = ?, nombre_paciente = ?, apellidos_paciente = ?, email_paciente = ?, telefono_paciente = ?, domicilio_paciente = ?, datos_domicilio_paciente = ?, cp_paciente = ?, ciudad_paciente = ?, provincia_paciente = ?, image = ? WHERE id_perfil_pacientes = ?");
    $stmt->bind_param("ssssssssssssi", $tratamiento, $fecha_nacimiento, $nombre_paciente, $apellidos_paciente, $email_paciente, $telefono_paciente, $domicilio_paciente, $datos_domicilio_paciente, $cp_paciente, $ciudad_paciente, $provincia_paciente, $image['text'], $id_perfil_pacientes);
    $stmt->execute();
    $result = $stmt->affected_rows;
    $id_perfil_doctor = $con->insert_id;
    $stmt->free_result();
    $stmt->close();
 
 
    if($result === 1){
        $id_perfil_pacientes = $_GET['post'] ?? '';
        createMessageSweet('success', 'Felicidades, sus cambios han sido guardados con éxito');
        header('Location: pacientes-edit-perfil.php?post='.$id_perfil_pacientes.'');
        $con->close();
        exit;
 
    }
    else{
        createMessage('fail', 'Ooops... Estamos experimentando dificultades técnicas y sus datos no han podido ser guardados en este momento.');
    }
}
 
function imageUpdate(){
 
    if($_FILES['image']['tmp_name']){
        $file = $_FILES['image'];
 
        $imageName = $file['name'];
        $imageTmpName = $file['tmp_name'];
        $imageError = $file['error'];
        $imageSize = $file['size'];
 
        $imageExtSeparator = explode('.', $imageName);
        $imageNameNoExt = strtolower(current($imageExtSeparator));
        $imageExt = strtolower(end($imageExtSeparator));
 
        $allowed = array('jpg', 'jpeg', 'png');
 
        if(in_array($imageExt, $allowed)){
            if($imageError === 0){
                if($imageSize <= 200000){
                $imageNewName = $imageNameNoExt.'_'.uniqid('', true).'.'.$imageExt;
                $imageDestination = 'img/'.$imageNewName;
                move_uploaded_file($imageTmpName, $imageDestination);
                return array('success' => true, 'text' => $imageDestination);
                }
                else{
                    return array('success' => false, 'text' => 'La imagen es muy grande. Por favor, suba una imagen de menos de 2MB');
                }
            }
            else{
                return array('success' => false, 'text' => 'Se ha producido un error al subir tu imagen');
            }
        }
        else{
            return array('success' => false, 'text' => 'No se pueden subir imágenes de este tipo. Deben ser jpg, jpeg o png');
        }
    }
    else{
        return array('success' => true, 'text' => 'img/img_default.png');
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problemas con imagen al editar el form

Publicado por Mauro (1037 intervenciones) el 01/12/2020 14:24:00
Hola Mauricio:

El problema está en la función updateInformacion. Si te fijas, el update lo estás haciendo siempre sobre todos los campos de la tabla, si sólo quieres modificar algunos debes usar sólo esos, de otro modo deberás darle nuevos valores a todos y cada uno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 9
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas con imagen al editar el form

Publicado por Mauricio (4 intervenciones) el 01/12/2020 15:44:02
Hola Mauro! muchas gracias por contestar:

Si es cierto, el inconveniente que tengo es que quiero lograr que el usuario realice la edición del formulario y si quiere cambiar la imagen, la cambie con este update, y en caso que desee dejar lo que está, simplemente mantenga la información que existe ya en la base de datos.

Si quito la imagen de esta update, quitaría la posibilidad de editar esa imagen en este formulario. Y ese es el problema que tengo.

Ahora mismo, tiene en el else una imagen por defecto que utilizo en el create de ese formulario. Pero, claro, al actualizar aquí me aplica esa imagen y tendría que aplicar la de la base de datos.

Tengo que lograr de alguna forma una función que establezca en el else y como imagen por defecto la imagen que guardo en la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar