Foros del Web » Programando para Internet » PHP »

Actualizar datos pero que no altere campo imagen

Estas en el tema de Actualizar datos pero que no altere campo imagen en el foro de PHP en Foros del Web. hola amigos un saludos a todos, les paso a plantear mi problema, cuando modifico datos, donde hay un campo para subir imagenes y no se ...
  #1 (permalink)  
Antiguo 16/04/2009, 11:05
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Actualizar datos pero que no altere campo imagen

hola amigos un saludos a todos, les paso a plantear mi problema, cuando modifico datos, donde hay un campo para subir imagenes y no se me antoja modificar la imagen(subir) ya subida, pasa que en el campo donde guardo el nombre del archivo se pone en blanco eso porque no subi ninguna imagen al parecer, yo estaba haciendo esto:

Código PHP:
$archivo_tmp=$_FILES['imagen']['tmp_name'];
$archivo_imagen=$_FILES['imagen']['name'];
$ruta="C:/Archivos de programa/Apache Group/Apache2/htdocs/erpfirme/erp/imagenes/".$archivo_imagen;
if (
is_uploaded_file($archivo_tmp)){
    
move_uploaded_file($archivo_tmp,$ruta);
}

$archivo_grande_tmp=$_FILES['imagen-grande']['tmp_name'];
$archivo_imagen_grande=$_FILES['imagen-grande']['name'];
$ruta_imagen_grande="C:/Archivos de programa/Apache Group/Apache2/htdocs/erpfirme/erp/imagenes/".$archivo_imagen_grande;
if (
is_uploaded_file($archivo_grande_tmp)){
    
move_uploaded_file($archivo_tmp,$ruta_imagen_grande);
}


if (isset(
$_FILES['imagen']) and isset($_FILES['imagen-grande'])){
$SQLUPDATE="UPDATE productos SET nombre='$nombre', sumilla='$sumilla', descripcion='$contenido', imagen='$archivo_imagen', imagengrande='$archivo_imagen_grande', caracteristicas='$carac', beneficios='$benefi', modulos='$modulos' WHERE idprod=$idprod";
}else{
$SQLUPDATE="UPDATE productos SET nombre='$nombre', sumilla='$sumilla', descripcion='$contenido', caracteristicas='$carac', beneficios='$benefi', modulos='$modulos' WHERE idprod=$idprod";

Le puse una condicion que si recibo los archivos por FILES es decir si se esta subiendo imagenes o deseo cambiar la imagen actual por otra que lo actualize, pero si no recibo nada de FILE es decir si no van a subir o modificar imagenes entonces que me actualize todos los campos menos de las imagenes.

Pero no me sale, el problema no esta en subir la imagen eso esta muy bien el problema esta en que si el usuario quiere modificar datos y no desea subir o modificar la imagen en el campo donde guardo el archivo se pone en blanco.

Tambien utilize POST pero casi igual

Gracias de antemano, espero se entienda la idea
  #2 (permalink)  
Antiguo 16/04/2009, 11:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

es que isset() siempre te va a dar true si existe el <input/> para subir el archivo...

lo que debes hacer es comprobar que no haya error, eso quiere decir... que algo se subió

Código PHP:
if ( ! empty($_FILES['archivo']['error']))
{
  
// OK!

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/04/2009, 11:17
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Actualizar datos pero que no altere campo imagen

Tal vez esto funcione:

en vez de usar isset usa empty
  #4 (permalink)  
Antiguo 16/04/2009, 11:28
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Actualizar datos pero que no altere campo imagen

Gracias pero sigue igual osea si tengo llenado un registro en la data pero si el usuario quiere modificar dicho registro pero solo algun texto y no la imagen por lo tanto implica q el usuario no subira la imagen me el nombre del archivo q tengo almacenado en el campo lo pone en blanco

Ayudenme por favor a darle solucion
Gracias
  #5 (permalink)  
Antiguo 16/04/2009, 11:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

es que debes separar el problema en dos partes...

intenta hacer pruebas, envía un formulario con upload... y has un var_dump($_FILES);

para que veas el resultado, si $_FILES['upload']['error'] es igual a cero... entonces, algo se subió.... si no, entonces, es otro numero de error....

u otra, declara una variable $imagen = false; antes de los procesos... una ves el move_uploaded_file() se haya efectuado correctamente cambia el valor a true

ahora, con esta bandera... ya puedes actualizar la imagen, o no....


muchas formas hay de atacar el mismo problema...

es muy simple, de veras... suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 16/04/2009, 11:44
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Actualizar datos pero que no altere campo imagen

pero si el problema no esta en que si sube la imagen(eso esta ok), el problema esta en que si no subo ninguna imagen y tengo ya almacenada el nombre del archivo en el campo "IMAGEN" lo pone en blanco!!!
  #7 (permalink)  
Antiguo 16/04/2009, 11:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

yo no me refiero a que subas o no la imagen....

si entiendo perfectamente tu problema, tal ves ... tu no me entiendes a mi!


es simple, si se sube un archivo... hacer el UPDATE con el nombre del archivo... cierto??
y si no, pues simplemente haces el UPDATE normal... sin reemplazar el nombre del archivo

(eso quedo claro desde un principio)

Código PHP:
if ( ! empty($_FILES['archivo']['error']))
{
  
move_uploaded_file(/* ... */);
  
$sql "UPDATE tabla SET img=$foo, candy='$bar'";
}
else
{
  
$sql "UPDATE tabla SET candy=$bar";


¿que es lo que tu no entiendes??

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 16/04/2009, 12:10
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Actualizar datos pero que no altere campo imagen

Gracias por responderme amigo, es que el asunto esta en que si no subo ninguna imagen, y tengo ya almacenada dicha imagen me lo pone en blanco, ahora el upload trabaja bien, como te digo lo unico q no entiendo es porque si el usuario solo queire modificar por ejemplo texto y no imagen simplemente, repito el campo de la imagen donde esta almacenada el nombre del archivo se pone en blanco
  #9 (permalink)  
Antiguo 16/04/2009, 12:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

con este código te vas a dar cuenta...

Código PHP:
<?php
if ( ! empty($_POST))
{
    
var_dump($_FILES);

    if ( ! empty(
$_FILES['archivo']['error']))
    {
            
// error > 0 (simplemente un error)
            
$sql 'UPDATE tabla SET ...';
    }
    else
    {
        
// sin errores??
        //move_uploaded_file(/* ... */);
        
$sql 'UPDATE tabla SET imagen ...';
    }
    echo 
"<p>$sql</p>";
}
?>

<form enctype="multipart/form-data" method="post" action="">
<input name="archivo" type="file"/>
<input type="submit" name="ok" value="Subir!"/>
</form>
ejecutalo (presiona el submit) y no subas ningún archivo, veras que el error es 4 ....

ahora, si subes un archivo... el error se torna a 0 (cero) .... quiere decir que esta bien!

(también puedes usar el índice $_FILES['archivo']['size'], si es mayor a cero.... etc, etc...)

y ahí esta la clave y la solución a tu problema, revisa los posts anteriores.... y analiza el porque, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 16/04/2009 a las 12:24 Razón: mas codigo
  #10 (permalink)  
Antiguo 16/04/2009, 13:19
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Actualizar datos pero que no altere campo imagen

array(2) { ["imagen"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["imagen-grande"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }

Esto me salio cuando no subi ninguna imagen, y me puso el campo en blanco donde ya estaba guardad el nombre de una imagen, lo que noto es que no se me cumple la segunda condicion



if (!empty($_FILES['imagen']) and !empty($_FILES['imagen-grande'])){
echo "se cumple la primera opcion";

$SQLUPDATE="UPDATE productos SET nombre='$nombre', sumilla='$sumilla', descripcion='$contenido', imagen='$archivo_imagen', imagengrande='$archivo_imagen_grande', caracteristicas='$carac', beneficios='$benefi', modulos='$modulos' WHERE idprod=$idprod";
}else{
echo "se cumple la segunda opcion";
$SQLUPDATE="UPDATE productos SET nombre='$nombre', sumilla='$sumilla', descripcion='$contenido', caracteristicas='$carac', beneficios='$benefi', modulos='$modulos' WHERE idprod=$idprod";
}


No se cumple la segunda condicion, sabes porque? quizas no em doy cuenta

Gracias amigo
  #11 (permalink)  
Antiguo 16/04/2009, 13:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

es obvio que no se cumpla... ya que $_FILES['nombre'] no deja de ser una array ... y también por que no esta vacío...

eligas o no un archivo para subir, el índice del array $_FILES que necesites nunca estará vacío!!

es por eso que empty() no te sirve como piensas...

¿¿de veras no quieres revisar lo que te aportamos en el mismo post verdad???

¿¿acaso es tan difícil de analizar para que lo apliques???





Cita:
Iniciado por pateketrueke Ver Mensaje
[...] si subes un archivo... el error se torna a 0 (cero) .... quiere decir que esta bien [...]
Código PHP:
if (empty($_FILES['foo']['error']) && empty($_FILES['bar']['error']))
{
  
// quiere decir que NO hay errores... por lo tanto, se subio el archivo
}
else
{
  
// hay errores, entonces... NO sobre-escribas la imagen!!!

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 16/04/2009, 14:29
 
Fecha de Ingreso: septiembre-2003
Ubicación: lima
Mensajes: 378
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Actualizar datos pero que no altere campo imagen

Gracias amigo ya me salio, gracias verdad por la paciencia, solo puedes aclararme algunas dudas.
array(2) { ["imagen"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } ["imagen-grande"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }

De donde sale ["error"]=> int(4), y con que criterio se pone esto:

if (empty($_FILES['imagen']['error']) and empty($_FILES['imagen-grande']['error'])){


Gracias en verdad Doc.
  #13 (permalink)  
Antiguo 16/04/2009, 16:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Actualizar datos pero que no altere campo imagen

según la tabla de verdad de PHP:

http://www.blueshoes.org/en/developer/php_cheat_sheet/

Código:
empty(array()) = empty("") = empty("0") = empty(0) = true 
el error numero 4 se refiere cuando no se elige algún archivo para subir...

entonces:

Código:
SI (NO_HAY(ERROR) Y NO_HAY(ERROR))
{
  UPLOAD, etc...
}
lo que se traduce en (empty es "vacío" o simplemente, "no hay", "no tiene")...

Código PHP:
if (empty($foo['bar']) && empty($baz['buzz']))
{
  
// ...

espero se comprenda, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 16/04/2009, 17:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 211
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Actualizar datos pero que no altere campo imagen

Hace un par de minutos tenia el mismo problema que tu xDDD

lo solucioné por casualidad...

Prueba esto y me dices algo!

if (isset($_FILES['imagen']['name']) and isset($_FILES['imagen-grande']['name']))


Yo hacia lo mismo, si hay una imagen que haga A si no la hay que haga B, pero siempre detectava lo mismo...xDD
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 12:52.