PHP - CONSULTA INPUT FILE PHP

 
Vista:
sin imagen de perfil
Val: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastianvalpo sebastian.navarro.veas@gmail.com (8 intervenciones) el 17/03/2019 05:31:30
Hola buenas mi consulta es la siguiente, quisiera realizar un crud pero tengo problemas con el editar, puedo cargar rutas a la bd para posteriormente mostrar las imagenes, sin embargo, si un usuario edita, es como si perdiera la ruta. que podría hacer?

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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
if (isset($_GET['editar'])) {
 
    //codigo que viene de la lista
    $x1=$_GET['codigo'];
    if (isset($_POST['editar'])) {
 
 
 
        $tipo=strtoupper($_POST["tipo"]);
        $descripcion=strtoupper($_POST["descripcion"]);
        $marca=$_POST["marca"];
        $sector=strtoupper($_POST["sector"]);
        $estado=strtoupper($_POST["estado"]);
 
        $foto=$_FILES["foto"] ["name"];
        $ruta1=$_FILES["foto"] ["tmp_name"];
        $destino1="fotos/".$foto;
 
        copy($ruta1, $destino1);
 
 
 
        if( $tipo=="" )
        {
 
            echo "
            <script> alert('campos vacios')</script>
            ";
            echo "<br>";
 
        }
        else
        {
 
 
            $sql22=" UPDATE productos SET
            tipo='$tipo' ,
            descripcion='$descripcion' ,
            marca='$marca' ,
            sector='$sector',
            estado='$estado',
            foto='$destino1'
            where id_productos='$x1'";
 
 
 
            $bd->consulta($sql22);
 
            //echo "Datos Guardados Correctamente";
            echo '<div class="alert alert-success alert-dismissable">
                <i class="fa fa-check"></i>
                <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
                <b>OK!</b> Datos Editados Correctamente... ';
 
            echo '   </div>';
 
        }
 
    }
 
 
 
    $consulta="SELECT tipo, descripcion, marca, sector, estado, foto FROM productos where id_productos='$x1'";
    $bd->consulta($consulta);
    while ($fila=$bd->mostrar_registros()) {
 
 
    ?>
    <div class="col-md-10">
        <!-- general form elements -->
        <div class="box box-primary">
            <div class="box-header">
                <h3 class="box-title">Editar Equipo o Accesorio </h3>
            </div>
 
 
            <?php  echo '  <form role="form"  name="fe" action="?mod=registroproductos&editar=editar&codigo='.$x1.'" method="post" enctype="multipart/form-data">';
            ?>
            <div class="box-body">
                <div class="form-group">
 
 
 
            <label for="exampleInputFile">Tipo</label>
 
 
    <select  for="exampleInputEmail" class="form-control" name='tipo' >
 
        <option style="color: #212121"value="<?php echo $fila['tipo'] ?>"><?php echo $fila['tipo'] ?> </option>
         <option value="">......</option>
        <option value="cable hdmi">Cable Hdmi</option>
        <option value="cable vga">Cable Vga</option>
        <option value="fuente de poder">Fuente de Poder</option>
        <option value="kvm">KVM</option>
        <option value="memoria ram">Memoria Ram</option>
        <option value="monitor">Monitor</option>
        <option value="mouse">Mouse</option>
        <option value="pad mouse">Pad Mouse</option>
        <option value="pila">Pila</option>
        <option value="procesador">Procesador</option>
        <option value="tarjeta de red">Tarjeta de Red</option>
        <option value="tarjeta de video">Tarjeta de Video</option>
        <option value="teclado">Teclado</option>
        <option value="ventilador">Ventilador</option>
 
    </select>
 
    <label for="exampleInputFile">Descripcion</label>
 
 
           <input   required type="tex" name="descripcion" class="form-control" value="<?php echo $fila['descripcion'] ?>" id="exampleInputEmail1" placeholder="descripcion">
 
           <label for="exampleInputFile">Marca</label>
           <input    required type="tex" name="marca" class="form-control" value="<?php echo $fila['marca'] ?>" id="exampleInputEmail1" placeholder="marca">
 
           <label for="exampleInputFile">Sector</label>
     <input    required type="tex" name="sector" class="form-control" value="<?php echo $fila['sector'] ?>" id="exampleInputEmail1" placeholder="sector">
 
                                                <label for="exampleInputFile">Estado del equipo</label>
 
 
                                                    <select  for="exampleInputEmail" class="form-control" name='estado'>
 
 
        <option style="color: #212121"value="<?php echo $fila['estado'] ?>"><?php echo $fila['estado'] ?> </option>
         <option value="">......</option>
        <option  value="nuevo">Nuevo</option>
         <option value="usado">Usado</option>
         <option value="reparado">Reparado</option>
 
       </select>
 
    <label for="exampleInputFile">Ingrese Imagen</label>
    <input  type="file"  name="foto" id="foto" class="form-control" id="exampleInputEmail1" placeholder="Ingrese Imagen">
 
 
 
 
    <?php echo '<img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='.$fila['foto'].'>'?>
 
                    </div>
 
 
 
                </div><!-- /.box-body -->
 
                <div class="box-footer">
                    <button type="submit" class="btn btn-primary btn-lg" name="editar" id="editar" value="Editar">Editar</button>
 
                </div>
            </form>
        </div><!-- /.box -->
    <?php
 
 
    }
}

el problema se encuentra al final:

1
2
3
4
5
6
7
<label for="exampleInputFile">Ingrese Imagen</label>
<input  type="file"  name="foto" id="foto" class="form-control" id="exampleInputEmail1" placeholder="Ingrese Imagen">
 
 
<?php echo '<img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='.$fila['foto'].'>'?>
 
</div>
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 italo_pm
Val: 997
Bronce
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por italo_pm (144 intervenciones) el 18/03/2019 20:02:15
hola, seria bueno que primero veas como llega la informacion de tu $fila['foto']

1
echo $fila['foto'];

por otra parte, los id y name deben ser unicos, tu tienes casi todos los id con el mismo nombre.

en todo caso, solo con codigo es un poco dificil entender si no nos muestras un error.

no es recomendable hacer el echo de los tag html, basta que cierres php y escribes html y sigues con php.

trata de mostrarnos el error que te da el codigo a pantalla.

salud2.
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: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastian (8 intervenciones) el 19/03/2019 17:20:35
CONSULTA


Muchas gracias por tu respuesta, pero este problema se me genera cuando edito algun dato y ya tengo cargada la imagen anteriormente a través de una ruta a la BD, se me borra al editar. ya que no se como darle el value anterior.

No se si me explico bien. gracias amigo
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
Imágen de perfil de italo_pm
Val: 997
Bronce
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por italo_pm (144 intervenciones) el 19/03/2019 22:48:20
hola, en la pagina editar (la de la imagen que has adjuntado) yo veo la imagen del database , es decir tu código funciona, hace lo que pides, te muestra la imagen que traes del database.

tienes algun error (a mi parecer no) o talvez es la logica lo que te falla, trata de explicar que es lo que deseas obtener y el error que tienes.

salud2
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: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastian (8 intervenciones) el 22/03/2019 20:22:30
Hola muchas gracias por tratar de ayudarme, si es correcto, la imagen se carga correctamente desde la base de datos, el problema es que por ejemplo si yo hago algún cambio por ejemplo en el "TIPO" y le pongo "EDITAR" es como que se cargara una imagen vacía y se borra.

No se si me explico.....

La ruta se pierde.

mil gracias
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
Imágen de perfil de italo_pm
Val: 997
Bronce
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por italo_pm (144 intervenciones) el 22/03/2019 23:36:37
hola, pues claro, la ruta no llega mas, es decir llega vacia.

tu en tu form/tabla visualizas la imagen

1
<?php echo '<img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='.$fila['foto'].'>'?>

pero solo eso, hasta ahi es algo estático.

aqui, defines la opcion de agregar (por qué para el server estas enviando un file)

1
<input  type="file"  name="foto" id="foto" class="form-control" id="exampleInputEmail1" placeholder="Ingrese Imagen">

obviamente tendra un valor sólo si agregas un file, de otra manera llegara vacío.

entonces es tu file php de editar (donde haces el update mysql) tendras que controlar si $_FILES ["foto"] este vacia, si ese fuera el caso, la variable $foto tendrá que tener el valor de la imagen $fila ['foto'] obviamente tendras que enviar ese valor de alguna manera (type="hidden") con el resto de datos.

De esa manera, si has agregado un file tendra el nuevo valor, si no has agregado un file, seguira teniendo su mismo nombre, puedes tambien decidir en cambiar la query de update excluyendo la variable $foto si es que no agrego ningun file.

prueba.

salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastian (8 intervenciones) el 23/03/2019 11:31:28
hola muchas gracias, me podrias ayudar con ese codigo porfavor.
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

CONSULTA INPUT FILE PHP

Publicado por lolysugu (1 intervención) el 24/03/2019 17:43:34
Buenas tardes,

Yo tengo ese mismo problema, y de paso tengo muy pocos conocimientos en este tema, en mi desarrollo coloqué varios select dependientes que se refrescan para enviar la variable a la misma página y poder concatenar con select dependiente, esto hace que se borre la información cargada en el input file, ya coloqué otro input que recoja también la variable pero, al igual que con el input file, se borra, aquí parte de mi código:

1
2
3
4
5
6
7
8
9
10
11
if ($_SERVER['REQUEST_METHOD']=='POST'){
$foto=FILTER_VAR($_FILES['foto'],FILTER_SANITIZE_STRING);
	if($foto!="") {$foto1=$foto;};
	echo $foto1;
	echo $foto;  //aquí coloqué estas salidas para verificar si llega la variable y no arroja nada, que si lo hace si en vez de colocar ($_FILES['foto'] coloco ($_POST['foto'], pero igual al refrescar se borra la información del input.
 
<form name="form1" id="form1" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
 
<tr><td>Foto</td><td colspan="2" nowrap="nowrap">
<input type="file" name="foto" size="5" id="foto" value="<?PHP echo $foto1;?>"  />
<input type="text" name="foto2" size="30" id="foto2" value="<?PHP echo $foto1;?>"  /></td></tr>

Muchas gracias por el apoyo..
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
Imágen de perfil de italo_pm
Val: 997
Bronce
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por italo_pm (144 intervenciones) el 25/03/2019 02:21:38
hola

@lolysugu, sería mejor que abras tu propio tema, explicando tu problema de manera clara (hablas de select pero en tu codigo no hay de ellos) y escribiendo el codigo.

salud2
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
sin imagen de perfil
Val: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastian (8 intervenciones) el 25/03/2019 11:35:01
me podrías ayudar con el codigo o alguna sugerencia por favor
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
Imágen de perfil de italo_pm
Val: 997
Bronce
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por italo_pm (144 intervenciones) el 26/03/2019 06:30:36
Hola sebastian, un ejemplo seria este.

file temp_adjunto_vacio.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
<form role="form"  name="fe" action="index.php?pagina=temp_exec_adjunto_vacio" method="post" enctype="multipart/form-data">
 
  <div>
 
    <label for="exampleInputFile">Ingrese Imagen</label>
 
    <!-- <input  type="file"  name="foto" id="foto" class="form-control" id="exampleInputEmail1" placeholder="Ingrese Imagen"> -->
    <input  type="file"  name="foto" id="foto" class="form-control" placeholder="Ingrese Imagen">
 
 
<!-- declaro un input hidden para enviar por POST el name del hidden y utilizarlo en el update si no se agrego ningun file  -->
 
    <?php $fila_foto = './php/fotos_tmp/homero1.png';?>
 
    <!--  <input type="hidden" name="hidden_nombre_foto" value="<?php //echo $fila['foto'];?>"/> -->
    <input type="hidden" name="hidden_nombre_foto" value="<?php echo $fila_foto;?>"/>
 
    <img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='./php/fotos_tmp/homero1.png'>
 
  </div>
 
   <div class="box-footer">
 
     <button type="submit" class="btn btn-primary btn-lg" name="editar" id="editar" value="Editar">Editar</button>
 
  </div>
 
</form>

file temp_exec_adjunto_vacio.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
 
//debbug de toda la info de los files: $_FILES.
//echo '<pre>';
//print_r($_FILES);
//echo '</pre>';
 
if(is_uploaded_file($_FILES['foto']['tmp_name'])) {
 
  //este sera el file temp que ira a la carpeta del server.
  $uploadfile=$_FILES["foto"]["tmp_name"];
 
  //este es el nombre del file que llega del usuario.
  $nombre_file=$_FILES["foto"]["name"];
 
  //esta es la carpeta de destino de tu server.
  //$target_dir="fotos/";
  $target_dir="./php/fotos_tmp/";
 
  //aqui se prepara el file (ruta y nombre), ya que se debe incluir la ruta y el nombre para el move_uploaded_file.
  $target_file = $target_dir . $_FILES['foto']["name"];
 
  //aqui se personaliza el nombre del file (solo nombre) para el update mysql.
  $nombre_personalizado = $target_dir .$_FILES['foto']["name"];
 
  //ejecuto el upload del file.
  move_uploaded_file($uploadfile, $target_file);
 
} else {
 
  //* Si no se agreggo ningun file, recupero el valor del nombre del hidden que es la imagen corriente.
  $nombre_personalizado = $_POST['hidden_nombre_foto'];
 
}
 
$destino1 = $nombre_personalizado;
 
$sql22 = "UPDATE productos SET foto='$destino1'";
 
echo $sql22;
 
/*
  $sql22=" UPDATE productos SET
            tipo='$tipo' ,
            descripcion='$descripcion' ,
            marca='$marca' ,
            sector='$sector',
            estado='$estado',
            foto='$destino1'
            where id_productos='$x1'";
*/

ese es el ejemplo, si lo deseas utlizar debes de corregir las carpetas y rutas de los files.


en tu caso, podria hacerse asi:


de esto:

1
2
3
4
5
$foto=$_FILES["foto"] ["name"];
        $ruta1=$_FILES["foto"] ["tmp_name"];
        $destino1="fotos/".$foto;
 
        copy($ruta1, $destino1);

a esto:

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
if(is_uploaded_file($_FILES['foto']['tmp_name'])) {
 
  //este sera el file temp que ira a la carpeta del server.
  $uploadfile=$_FILES["foto"]["tmp_name"];
 
  //este es el nombre del file que llega del usuario.
  $nombre_file=$_FILES["foto"]["name"];
 
  //esta es la carpeta de destino de tu server.
  $target_dir="fotos/";
 
  //aqui se prepara el file (ruta y nombre), ya que se debe incluir la ruta y el nombre para el move_uploaded_file.
  $target_file = $target_dir . $_FILES['foto']["name"];
 
  //aqui se personaliza el nombre del file (solo nombre) para el update mysql.
  $nombre_personalizado = $target_dir .$_FILES['foto']["name"];
 
  //ejecuto el upload del file.
  move_uploaded_file($uploadfile, $target_file);
 
} else {
 
  //* Si no se agreggo ningun file, recupero el valor del nombre del hidden que es la imagen corriente.
  $nombre_personalizado = $_POST['hidden_nombre_foto'];
 
}

y de esto:

1
2
3
4
5
6
7
8
$sql22=" UPDATE productos SET
            tipo='$tipo' ,
            descripcion='$descripcion' ,
            marca='$marca' ,
            sector='$sector',
            estado='$estado',
            foto='$destino1'
            where id_productos='$x1'";

a esto:

1
2
3
4
5
6
7
8
9
10
11
$destino1 = $nombre_personalizado;
 
 
  $sql22=" UPDATE productos SET
            tipo='$tipo' ,
            descripcion='$descripcion' ,
            marca='$marca' ,
            sector='$sector',
            estado='$estado',
            foto='$destino1'
            where id_productos='$x1'";

y de esto:

1
2
3
4
5
6
<input  type="file"  name="foto" id="foto" class="form-control" id="exampleInputEmail1" placeholder="Ingrese Imagen">
 
 
 
 
    <?php echo '<img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='.$fila['foto'].'>'?>

a esto:

1
2
3
4
5
<input  type="file"  name="foto" id="foto" class="form-control" placeholder="Ingrese Imagen">
 
<!-- declaro un input hidden para enviar por POST el name del hidden y utilizarlo en el update si no se agrego ningun file  -->
<input type="hidden" name="hidden_nombre_foto" value="<?php echo $fila['foto'];?>"/>
<?php echo '<img class="center" style="width:460px; height:300px; margin:0 auto; text-align:center;" src='.$fila['foto'].'>'?>

prueba en test.

salud2.
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: 42
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

CONSULTA INPUT FILE PHP

Publicado por sebastian (8 intervenciones) el 29/03/2019 04:05:46
muchas gracias, era lo que quería hacer,
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