Foros del Web » Programando para Internet » PHP »

cómo mantener la imagen en una página de modificacion de datos?

Estas en el tema de cómo mantener la imagen en una página de modificacion de datos? en el foro de PHP en Foros del Web. Estimados amigos: Tengo una página de modificación de datos, funcina bien pero tengo problemas con las imágenes. En dicha página se muestra los datos de ...
  #1 (permalink)  
Antiguo 23/11/2006, 23:48
 
Fecha de Ingreso: julio-2005
Mensajes: 172
Antigüedad: 18 años, 9 meses
Puntos: 0
cómo mantener la imagen en una página de modificacion de datos?

Estimados amigos:

Tengo una página de modificación de datos, funcina bien pero tengo problemas con las imágenes. En dicha página se muestra los datos de la bd en sus respectivos campos listos para ser modificados si el usuario lo desea.
Pero la casilla de imagen siempre aparece vacía. Si el usuario no quiere modificar la imagen, está obligado a volver a seleccionarla porque en la casilla aparece vacía. mi consulta es, cómo hacer para que se vea la ruta de la imagen que actualmente se encuenta en la bd y si el usuario no quiere modificar la imagen que se mantenga sin necesidad de volverla a elegir. A continuación pongo el código que tengo.
<form action="alpacayarn_formulario_actualizar.php" method="POST" enctype="multipart/form-data" name="form1" id="form1">

<input type="hidden" name="id" value="<?php echo $id; ?>">
<input name="codrugs" type="text" id="codrugs" size="12" maxlength="12" value="<?php echo $row['codrugs']; ?>" >
<input name="name" type="text" id="name" size="50" maxlength="150" value='<?php echo $row["name"]; ?>'>
<input name="image_1" type="file" id="image_1" size="25" maxlength="100" />
</form>


El código para ingresar datos y almacenar una imagen a una base de datos lo saqué de esta dirección: http://www.forosdelweb.com/f18/tutorial-ejemplo-subir-archivos-bd-guardando-bd-binario-127775/ (Insertar.php)

Espero que me puedan ayudar...

Gracias por su tiempo.

Saludos.

Nano
  #2 (permalink)  
Antiguo 24/11/2006, 03:16
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Yo en estos casos lo que suelo hacer es lo siguiente, a la derecha del input de la imagen, coloco la imagen en pequeño(a veces es mejor que la vean que el nombre), y despues, al recoger las variables en la pagina de actualizar los datos, si el campo de la imagen esta vacio, ese campo no lo modifica, y si por el contrario tiene datos los cojo para modificar la imagen correspondiente.

Espero que te sirva.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #3 (permalink)  
Antiguo 24/11/2006, 20:54
 
Fecha de Ingreso: julio-2005
Mensajes: 172
Antigüedad: 18 años, 9 meses
Puntos: 0
Hola Bytevamp:
Creo que es una buena alternativa tu propuesta. Pero sería mejor si estuviese acompañado de la ruta o almenos del nombre del archivo.....Cómo se podría hacer?

Saludos y Gracias....
  #4 (permalink)  
Antiguo 25/11/2006, 03:15
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Pues añades un campo de tipo input con la opcion readonly(para evitar que te lo toquen), donde pones el nombre del archivo que coges de la BBDD, asi de simple.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #5 (permalink)  
Antiguo 01/12/2006, 00:31
 
Fecha de Ingreso: julio-2005
Mensajes: 172
Antigüedad: 18 años, 9 meses
Puntos: 0
No me sale. Me sale error.
He colocado una imagen al costado y si funciona pero cuamdo hago clic en el botón actualizar me sale un código de error. Me parece que es porque no estoy ingresando ninguna imagen.....Alguna otra alternativa...

Ayuda porfa...

Saludos.
  #6 (permalink)  
Antiguo 01/12/2006, 06:13
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
¿podias poner el error? asi podria ayudarsete con mas conocimiento de causa.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #7 (permalink)  
Antiguo 01/12/2006, 15:22
 
Fecha de Ingreso: julio-2005
Mensajes: 172
Antigüedad: 18 años, 9 meses
Puntos: 0
Hola Bytevamp:

El código que uso en la página actualizar es el siguiente:

<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['archivo']['name'])){
header("location: formulario.php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("tu_bd",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
$consulta_insertar = "INSERT INTO archivos (id, archivo_binario, archivo_nombre, archivo_peso, archivo_tipo) VALUES ('', '$binario_contenido', '$binario_nombre', '$binario_peso', '$binario_tipo')";
mysql_query($consulta_insertar,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: mostrar.php"); // si ha ido todo bien
exit;
?>

El código que está de rojo lo eliminé. y ahora no funciona. Y si lo dejo estoy obligado avolver a elegir la imagen en el caso de que no quiera modificarlo. Por eso lo eliminé pero me sale error.


SAludos
  #8 (permalink)  
Antiguo 02/12/2006, 04:54
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
A ver, en primer lugar, ese codigo es para insertar no para actuializar, en segundo, intenta lo siguiente para actualizar:

Código PHP:
<?php
//establece una conexión con la base de datos.
$conexion mysql_connect("localhost","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("tu_bd",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
$id=$_POST['id'];
$codrugs=$_POST['codrugs'];
$name=$_POST['name'];


$Sql="UPDATE archivos SET name='$name', codrugs='$codrugs";
if (!empty(
$_FILES['archivo']['name'])){
// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['archivo']['tmp_name'] ;

// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido addslashes(fread(fopen($binario_nombre_temporal"rb"), filesize($binario_nombre_temporal)));

// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['archivo']['name'];
$binario_peso=$_FILES['archivo']['size'];
$binario_tipo=$_FILES['archivo']['type'];

//insertamos los datos en la BD.
$Sql .= " archivo_binario='$binario_contenido', archivo_nombre=' $binario_nombre', archivo_peso='$binario_peso', archivo_tipo='$binario_tipo') ";
};
$Sql .=" WHERE id='$id'";
mysql_query($Sql,$conexion) or die("No se pudo insertar los datos en la base de datos.");
header("location: mostrar.php"); // si ha ido todo bien
exit;
?>
Mas o menos con esto deberia funcionar.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #9 (permalink)  
Antiguo 02/12/2006, 21:42
 
Fecha de Ingreso: julio-2005
Mensajes: 172
Antigüedad: 18 años, 9 meses
Puntos: 0
Hola Bytevamp:

Tienes razón, me equivoqué de código aquí te pongo el código que uso en la página actualizar:

<?php
//Primero, arranca el bloque PHP y checkea si el archivo tiene nombre. Si no fue asi, te remite de nuevo al formulario de inserción:
// No se comprueba aqui si se ha subido correctamente.
if (empty($_FILES['image_1']['name'])){
header("location:sterling925_formulario_modificar. php?proceso=falta_indicar_fichero"); //o como se llame el formulario ..
exit;
}

//establece una conexión con la base de datos.
$conexion = mysql_connect("localhost","","") or die("No se pudo realizar la conexion con el servidor.");
mysql_select_db("tu_bd",$conexion) or die("No se puede seleccionar BD"); // tu_bd es el nombre de la Base de datos .. por siaca.
$sql="SELECT * FROM rugs_carpets WHERE id='".$_GET['id']."'";
$resultado=mysql_query($sql,$conexion) or die(mysql_error());

// archivo temporal (ruta y nombre).
$binario_nombre_temporal=$_FILES['image_1']['tmp_name'] ;
// leer del archvio temporal .. el binario subido.
// "rb" para Windows .. Linux parece q con "r" sobra ...
$binario_contenido = addslashes(fread(fopen($binario_nombre_temporal, "rb"), filesize($binario_nombre_temporal)));
// Obtener del array FILES (superglobal) los datos del binario .. nombre, tabamo y tipo.
$binario_nombre=$_FILES['image_1']['name'];
$binario_peso=$_FILES['image_1']['size'];
$binario_tipo=$_FILES['image_1']['type'];

$sql="UPDATE rugs_carpets SET category='$category',subcategory='$subcategory',pr oducts='$products',codrugs='$codrugs',name='$name' , image_1_binario='$binario_contenido',image_1_name= '$binario_nombre', image_1_peso='$binario_peso',image_1_tipo='$binari o_tipo',description='$description' WHERE id=$id";
$resultado=mysql_query($sql,$conexion);
header("location:alpacayarn_formulario_mostrar_02. php?id=$id"); // si ha ido todo bien
exit;
?>

El código que está de rojo lo eliminé. y ahora no funciona. Y si lo dejo estoy obligado avolver a elegir la imagen en el caso de que no quiera modificarlo. Por eso lo eliminé pero me sale error.


SAludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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