Foros del Web » Programando para Internet » PHP »

Que salga el valor de la BD

Estas en el tema de Que salga el valor de la BD en el foro de PHP en Foros del Web. Buenas tardes de nuevo por aquí.. Estoy haciendo un formulario de edición de usuario, funciona bastante bien pero resulta que no me sale el VALUE ...
  #1 (permalink)  
Antiguo 20/03/2017, 12:37
 
Fecha de Ingreso: marzo-2015
Ubicación: Valencia
Mensajes: 129
Antigüedad: 2 años, 1 mes
Puntos: 0
Que salga el valor de la BD

Buenas tardes de nuevo por aquí..

Estoy haciendo un formulario de edición de usuario, funciona bastante bien pero resulta que no me sale el VALUE de la foto y tampoco la sube al servidor.

CULSULTA en perfil_edit.php

Código PHP:
Ver original
  1. <?php
  2.     mysql_query("SET NAMES 'utf8'");
  3.     $prueba = mysql_query("SELECT * FROM Usuario WHERE IdUsuario=" . $_GET['ID']);
  4.  
  5.     if ($res = mysql_fetch_array($prueba)){
  6.         $id= $res['IdUsuario'];
  7.         $nombre= $res['Nombre'];
  8.         $apellidos= $res['Apellidos'];
  9.         $password= $res['Password'];
  10.         $username= $res['Username'];
  11.         $direccion= $res['Direccion'];
  12.         $postal= $res['Postal'];
  13.         $poblacion= $res['Poblacion'];
  14.         $ciudad= $res['Ciudad'];
  15.         $telefono= $res['Telefono'];
  16.         $dni= $res['Dni'];
  17.         $foto=$_FILES['foto']['name'];
  18.  
  19.         }
  20. ?>

FORMULARIO DE EDICIÓN:

Código PHP:
Ver original
  1. <form data-toggle="validator" role="form1" action="actualiza-perfil.php" method="post" name="form1" id="form1"  enctype="multipart/form-data">
  2.  
  3.  
  4.                     <div class="cabe_registro">Formulario de registro LABTOLIFE</div>
  5.                     <div class="p_registro">Rellena los campos para completar tu registro y poder realizar pedidos.</div>
  6.  
  7.                     <div class="row">
  8.                         <div class="col-xs-6 col-md-6 ">
  9.                           <input type="text" name="Nombre" id="Nombre" value="<?php echo $nombre; ?>" class="form-control input-lg" placeholder="Nombre"  />
  10.  
  11.                         </div>
  12.                         <div class="col-xs-6 col-md-6">
  13.                             <input type="text" name="Apellidos" id="Apellidos" value="<?php echo $apellidos; ?>" class="form-control input-lg" placeholder="Apellidos"  />
  14.  
  15.                         </div></div>
  16.  
  17.  
  18.  
  19.                     <input type="text" name="Username" id="Username" value="<?php echo $username; ?>" class="form-control input-lg" placeholder="E-mail"  />
  20.  
  21.  
  22.                     <input type="password" name="Password" id="Password" value="<?php echo $password; ?>" class="form-control input-lg" placeholder="Contraseña"  />
  23.  
  24.  
  25.  
  26.                     <div class="row">
  27.                         <div class="col-xs-8 col-md-8">
  28.                             <input type="text" name="Dni" id="Dni" value="<?php echo $dni; ?>" class="form-control input-lg" placeholder="Documento de Identidad"  />
  29.                         </div>
  30.  
  31.                     </div>
  32.  
  33.  
  34.  
  35.                     <input type="text" name="Direccion" id="Direccion" value="<?php echo $direccion; ?>" class="form-control input-lg" placeholder="Dirección Facturación"  />
  36.                     <input type="text" name="Ciudad" id="Ciudad" value="<?php echo $ciudad; ?>" class="form-control input-lg" placeholder="Provincia"  />
  37.                     <div class="row">
  38.                         <div class="col-xs-8 col-md-8">
  39.                             <input type="text" name="Poblacion" id="Poblacion" value="<?php echo $poblacion; ?>" class="form-control input-lg" placeholder="Poblacion"  />
  40.                         </div>
  41.                         <div class="col-xs-8 col-md-4">
  42.                             <input type="text" name="Postal" id="Postal" value="<?php echo $postal; ?>" class="form-control input-lg" placeholder="Codigo Postal"  />
  43.                         </div>
  44.                     </div>
  45.  
  46.                     <input type="text" name="Telefono" id="Telefono" value="<?php echo $telefono; ?>" class="form-control input-lg" placeholder="Telefono"  />
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.                      <div class="row col-md-12 sbrim">
  55.                      <div class="col-xs-12 col-md-12 sbrim2">Seleccione foto de perfil:</div>
  56.                      <div class="col-xs-12 col-md-12 sbrim3">
  57.  
  58.                      <input name="foto" type="file" id="foto" name="foto" value="<?php echo $foto; ?>" /></div>
  59.                     </div>
  60.  
  61.  
  62.  
  63.  
  64.                     <input type="submit" name="enviar" class="bt-reg"  value="Aplicar Cambios">
  65.  
  66.                     </div>
  67.  
  68.                     <input type="hidden" name="MM_update" value="form1">
  69.                                     <input type="hidden" name="IdUsuario" value="<?php echo $id; ?>"">
  70.             </form>


SUBIR EL FICHERO:

Código PHP:
Ver original
  1. <?php
  2. // En versiones de PHP anteriores a la 4.1.0, debería utilizarse $HTTP_POST_FILES en lugar
  3. // de $_FILES.
  4.  
  5. $target_path = "images/clientes/";
  6. $target_path = $target_path . basename( $_FILES['foto']['name']); if(move_uploaded_file($_FILES['foto']['tmp_name'], $target_path)) { echo "El archivo ". basename( $_FILES['foto']['name']). " ha sido subido";
  7. }
  8.  
  9. ?>

ACTUALIZAR BD:

Código PHP:
Ver original
  1. <?php
  2. // Actualizamos en funcion del id que recibimos
  3.  
  4.     $id=$_POST["IdUsuario"];
  5.     $nombre=$_POST["Nombre"];
  6.     $apellidos=$_POST["Apellidos"];
  7.     $pass=$_POST["Password"];
  8.     $mail=$_POST["Username"];
  9.     $direccion=$_POST["Direccion"];
  10.     $postal=$_POST["Postal"];
  11.     $poblacion=$_POST["Poblacion"];
  12.     $ciudad=$_POST["Ciudad"];
  13.     $tel=$_POST["Telefono"];
  14.     $dni=$_POST["Dni"];
  15.     $foto=$_FILES['foto']['name'];
  16.     $informa=$_POST["Informacion"];
  17.     $fecha=$_POST["Fecha"];
  18.     $estado=$_POST["intestado"];
  19.  
  20.  
  21. $sSQL="Update Usuario Set Nombre='$nombre', Apellidos='$apellidos', Password='$pass', Username='$mail', Direccion='$direccion', Postal='$postal', Poblacion='$poblacion', Ciudad='$ciudad', Telefono='$tel', Dni='$dni', foto='$foto', Informacion='$informa', intestado='$estado' where IdUsuario='$id'";
  22. mysql_query($sSQL);
  23.  
  24.  
  25. echo "<div class=\"col-md-12 envs\">
  26.         <p style=\"font-size: 18px;margin-bottom: 2%;\">Los datos han sido actualizados con exito.</p>
  27.  
  28.  
  29.         <p><a href='javascript:history.go(-2)' class=\"btn_envs\">Volver Clientes</a></p>
  30.  
  31.       </div>
  32.  
  33. ";
  34. ?>
  35.  
  36.  
  37.  
  38.  
  39. <?php

Espero no sea demasiada parrafada...
  #2 (permalink)  
Antiguo 20/03/2017, 17:07
 
Fecha de Ingreso: julio-2014
Mensajes: 309
Antigüedad: 2 años, 9 meses
Puntos: 29
Respuesta: Que salga el valor de la BD

No le veo nada malo pero lo que te ha faltado en el formulario es el input hidden que especifica el tamaño maximo del archivo.

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

Y en php, antes de enviar los datos a la base de datos tienes que validar el input file. Y tienes que dar todos los permisos a la carpeta de donde almacenaras el archivo
  #3 (permalink)  
Antiguo 21/03/2017, 03:52
 
Fecha de Ingreso: marzo-2015
Ubicación: Valencia
Mensajes: 129
Antigüedad: 2 años, 1 mes
Puntos: 0
Respuesta: Que salga el valor de la BD

Cita:
Iniciado por Triby2 Ver Mensaje
No le veo nada malo pero lo que te ha faltado en el formulario es el input hidden que especifica el tamaño maximo del archivo.

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

Y en php, antes de enviar los datos a la base de datos tienes que validar el input file. Y tienes que dar todos los permisos a la carpeta de donde almacenaras el archivo
Pero cuando edito el cliente, en lugar de salirme el archivo que tiene puesto como foto me sale seleccionar archivo y se queda vacio. Y además no sube el archivo al servidor.
  #4 (permalink)  
Antiguo 21/03/2017, 07:32
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 692
Antigüedad: 6 años, 1 mes
Puntos: 102
Respuesta: Que salga el valor de la BD

para extraer el valor de la base de datos, no debes ocupar $_FILES[]
:

Código PHP:
Ver original
  1. $foto = $res['foto'];
  2.  
  3. echo "<img src=\"images/clientes/".$foto."\">";

Asi imprimes la ruta y nombre para que se muestre esta.
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #5 (permalink)  
Antiguo 21/03/2017, 07:53
 
Fecha de Ingreso: marzo-2015
Ubicación: Valencia
Mensajes: 129
Antigüedad: 2 años, 1 mes
Puntos: 0
Respuesta: Que salga el valor de la BD

Cita:
Iniciado por petit89 Ver Mensaje
para extraer el valor de la base de datos, no debes ocupar $_FILES[]
:

Código PHP:
Ver original
  1. $foto = $res['foto'];
  2.  
  3. echo "<img src=\"images/clientes/".$foto."\">";

Asi imprimes la ruta y nombre para que se muestre esta.
Gracias, la primera parte la entiendo a falta de que, lo pongo en los dos sitios, tanto en perfil_edit.php como en el que actualiza la BD.

Y por otro lado, no se muy bien donde poner ese echo.
  #6 (permalink)  
Antiguo 21/03/2017, 11:10
Avatar de german_1441  
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 277
Antigüedad: 1 año, 4 meses
Puntos: 20
Respuesta: Que salga el valor de la BD

Hola amigo,
a lo que se refiere petit89, es que, una vez que hayas obtenido de forma correcta la foto (el nombre de ésta) , lo único que tendrías que hacer es mostrarla, de la manera que el menciona:

Código PHP:
Ver original
  1. echo "<img src=\"images/clientes/".$foto."\">";
ó
Código PHP:
Ver original
  1. <img src="images/clientes/<?php echo $foto;?>">

Eso lo deberías mostrar en tu FORMULARIO DE EDICIÓN

Y aparte tendrías que mostrar el input por si desean actualizar la imagen, ya será también tarea tuya validar si se elige una nueva imagen o sólo se editan otros datos.

Saludos!
__________________
Aprende a enseñar ... enseñando aprenderás
  #7 (permalink)  
Antiguo 22/03/2017, 05:23
 
Fecha de Ingreso: marzo-2015
Ubicación: Valencia
Mensajes: 129
Antigüedad: 2 años, 1 mes
Puntos: 0
Respuesta: Que salga el valor de la BD

Buenasss, ya esta hecho Tal como me comentabais.

Pero resulta, que cuando edito si no selecciono foto me borra la que ya tenia puesta. Y eso no deberia pasar ya que puede ser que quieran modificar los datos de perfil pero no la foto.

Alguna sugerencia???
  #8 (permalink)  
Antiguo 22/03/2017, 05:59
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 103
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Que salga el valor de la BD

En tal caso, en el momento de validar la información después de haber sido guardada, simplemente evalua si la variable de la foto es = ''. En tal caso no actualices en la BD el campo de la foto. Si la variable de la foto es distinta de '', ahí sí subes el archivo al servidor y actualizas la BD
  #9 (permalink)  
Antiguo 22/03/2017, 06:12
 
Fecha de Ingreso: marzo-2015
Ubicación: Valencia
Mensajes: 129
Antigüedad: 2 años, 1 mes
Puntos: 0
Respuesta: Que salga el valor de la BD

Cita:
Iniciado por SirZoX Ver Mensaje
En tal caso, en el momento de validar la información después de haber sido guardada, simplemente evalua si la variable de la foto es = ''. En tal caso no actualices en la BD el campo de la foto. Si la variable de la foto es distinta de '', ahí sí subes el archivo al servidor y actualizas la BD
Gracias por la aclaración, eso lo tendria que poner en el archivoa actuliza-perfil.php???

Entiendo lo que me dices, pero como seria el código para hacer eso, soy bastante novato y entiendo lo que me escribes sin saber plasmarlo. No pido que me lo realices pero si puedes dime donde puedo ver un ejemplo.

Y supongo que tendre que ponerlo antes de que haga el UPDATE en la BD, sera despues de sacar las variables del POST no?

Saludos
  #10 (permalink)  
Antiguo 22/03/2017, 06:20
Avatar de SirZoX  
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 103
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Que salga el valor de la BD

Código PHP:
<?php
// En versiones de PHP anteriores a la 4.1.0, debería utilizarse $HTTP_POST_FILES en lugar
// de $_FILES.
 
$target_path "images/clientes/";


/***************************
en esta línea, el move_uploaded_files debes ejecutarlo sólo en el caso que $_FILES['foto']['name'] != '' para que en caso de que no se haya subido foto nueva, no intente subir una nueva y machaque la anterior
*****************************/
$target_path $target_path basename$_FILES['foto']['name']); if(move_uploaded_file($_FILES['foto']['tmp_name'], $target_path)) { echo "El archivo "basename$_FILES['foto']['name']). " ha sido subido";
}
 
?>

Por otro lado
Código PHP:
<?php
// Actualizamos en funcion del id que recibimos
 
    
$id=$_POST["IdUsuario"];
    
$nombre=$_POST["Nombre"];
    
$apellidos=$_POST["Apellidos"];
    
$pass=$_POST["Password"];
    
$mail=$_POST["Username"];
    
$direccion=$_POST["Direccion"];
    
$postal=$_POST["Postal"];
    
$poblacion=$_POST["Poblacion"];
    
$ciudad=$_POST["Ciudad"];
    
$tel=$_POST["Telefono"];
    
$dni=$_POST["Dni"];
    
//esta línea sobra puesto que la evaluamos a continuación -----> $foto=$_FILES['foto']['name'];
    
$informa=$_POST["Informacion"];
    
$fecha=$_POST["Fecha"];
    
$estado=$_POST["intestado"];

/********************************
aqui antes de hacer el update, deberías hacer lo mismo.
**********************************/
if ($_FILES['foto']['name'] != ''$uploadFoto " foto = '".$_FILES['foto']['name']."'";
 
//tu consulta es esta
$sSQL="Update Usuario Set Nombre='$nombre', Apellidos='$apellidos', Password='$pass', Username='$mail', Direccion='$direccion', Postal='$postal', Poblacion='$poblacion', Ciudad='$ciudad', Telefono='$tel', Dni='$dni', foto='$foto', Informacion='$informa', intestado='$estado' where IdUsuario='$id'";
mysql_query($sSQL);


//modificada quedaría así
$sSQL="Update Usuario Set Nombre='$nombre', Apellidos='$apellidos', Password='$pass', Username='$mail', Direccion='$direccion', Postal='$postal', Poblacion='$poblacion', Ciudad='$ciudad', Telefono='$tel', Dni='$dni', $uploadFoto, Informacion='$informa', intestado='$estado' where IdUsuario='$id'";
mysql_query($sSQL);
Creo que está todo bien, no lo he probado que estoy ahora fuera del trabajo, pero a botepronto debería darte la idea.



La zona horaria es GMT -6. Ahora son las 09:42.