Foros del Web » Programando para Internet » PHP »

Este empty me arruina todo el php, alguien sabe algun sinonimo

Estas en el tema de Este empty me arruina todo el php, alguien sabe algun sinonimo en el foro de PHP en Foros del Web. Hola foro, que tal, haber si me sacan de esta, pasa que estoy tratando imagenes en un frame, que saque de un ejemplo de aqui, ...
  #1 (permalink)  
Antiguo 26/12/2010, 13:22
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Este empty me arruina todo el php, alguien sabe algun sinonimo

Hola foro, que tal, haber si me sacan de esta,

pasa que estoy tratando imagenes en un frame, que saque de un ejemplo de aqui, resulta que cuando selecciono ver imagen, si tiene una imagen asociada la muestra y si no muestra una por defecto(todo contenido en el frame), y eso lo hace en un 90 %, hasta ahi bien, pero cuando quiero cambiar la imagen, y la busco con el imput file, en examinar la carga en otra ventana fuera del frame(habre una nueva ventana,cuando debiera estar adentro del frame), y lo gracioso es que si saco el ** empty ** al querer cargar la foto lo hace dentro del frame y ahi se soluciona el problema, pero al sacar el ** empty **, se genera otro problema que queda siempre mostrando la foto por defecto y no me trae la que ya se asocio.
Como pueden ver todo por un maldito ** empty ** ..
¿ Habra alguna forma de preguntar lo mismo pero de otra forma ?..

Les dejo el codigo:

//aca pregunto si NO tiene una imagen asociada, que muestre la imagen por defecto.-

<? if (empty ($IdFoto['IMAGEN'])){ ?>
<iframe src="previsor.php" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
</iframe></td>

//si no muestra la foto que corresponde
<? } else { ?>
<img name="imagen" src="images/<?=$IdFoto['IMAGEN'];?>" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
<? } ?>

Cualquier orientacion se agradece.-
  #2 (permalink)  
Antiguo 26/12/2010, 15:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

A ver, no se entiende bien el problema, pero lo que podría decirte es que el elemento <iframe> sólo se genera si la condición que colocas con el empty() devuelve true.. Por lo tanto, si hay una imagen asociada sólo se está insertando la imagen, mas no se está generando ningún frame. Supongo que para cambiar la imagen has puesto la opción de previsualizarla en el frame que debería haberse creado, una vez que la seleccionas mediante el input=file. Pero si no hay un frame, entonces el navegador te abre otra ventana con el nombre "ver", que es el que debería tener el frame.

No sé si me expliqué. Igual no creo que se me entienda mucho

Si no logras solucionarlo, te pediría que seas un poco más claro al explicar tu problema, por favor.

saludos,
  #3 (permalink)  
Antiguo 26/12/2010, 16:42
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

Agradesco tu respuesta y fijate que no andas lejos con lo que trate de explicar: tratare de ser mas claro, ok:

1)estoy tratando imagenes que se asocian a un producto, en un listado principal.

2)tengo un visualizador de imagen, para que se vea la imagen, antes de que se asocie definitivamente al producto.

El usuario, una vez vista la imagen en el visualizador, si la acepta, presiona guardar cambios, y se almacena el nombre de la imagen en la bd, y la imagen se traslada a una carpeta destinada a este fin.

** eso en general **

Entonces cuando estoy en el listado principal, presiono ver imagen del producto, si tiene una imagen asociada la muestra en el visualizador y si no tiene imagen, muestra una imagen por defecto(evidentemente todo esto dentro del visualizador).
entonces una vez en el listado principal, cuando haga click para ver la imagen de un producto, en envio el id, a file.php, hago una consulta sql, para ver si tiene o no imagen, y que muestre.
El que discrimina que mostrar son el if y el else que les postie:

//aca pregunto si NO tiene una imagen asociada, que muestre la imagen por defecto.-

<? if (empty ($IdFoto['IMAGEN'])){ ?>
<iframe src="previsor.php" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
</iframe></td>

//si no muestra la foto que corresponde
<? } else { ?>
<img name="imagen" src="images/<?=$IdFoto['IMAGEN'];?>" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
<? } ?>

************************************************** **************
Ahora que sucede con esto:

En el listado principal, cuando selecciono ver una imagen asociada a un producto, efectivamente atravez de la query que hago, me trae el nombre y muestra la imagen en el visualizador, hasta ahi perfecto.
pero cuando voy a cambiar esa imagen ya mostrada, y busco otra atraves del input=file, al momento que la selecciono, debiera pasar la imagen al visualizador, y no abrir otra ventana.
Ahora si le saco el ** empty ** cuando selecciono una nueva imagen, no habre otra ventana mostrando la foto, si no que se la lleva al visualizador y genial.

pero quitando el ** empty ** pierde la capacidad de mostrar la foto ya agregada al producto, y se queda solo con la foto de defecto que le deje(y esa es la unica, foto que muestra, cuando queremos ver cualquier imagen asociada a un producto).

De todas formas seguire investigando hasta solucionarlo y cuando lo haga lo posteo, ahora si me pueden dar una mano, mucho mejor.

Probare colocando un frame a la imagen encontrada.. a ver que resulta..
  #4 (permalink)  
Antiguo 26/12/2010, 18:47
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

Pues como dije, el error está en que si el producto ya tiene una imagen asociada, el frame al que haces referencia simplemente no existe.

Una solución podría ser incluir siempre un frame, en ambos casos. Si no hay imagen asociada, tal y como está ahora, carga la página previsor.php. Pero si tiene ya una imagen asignada, cargas otra página ver.php, o el mismo previsor.php, y le envias por la url el nombre de la imagen que debe mostrar, que será la del producto. Así, este archivo PHP genera el código HTML para colocar la imagen, dentro del frame.

Es decir:

Código PHP:
//si no muestra la foto que corresponde
<? } else { ?>
<iframe src="previsor.php?imagen=<?=$IdFoto['IMAGEN'];?>" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
<? ?>
Y en previsor.php, recibes el nombre de la imagen a mostrar mediante $_GET['imagen'] (revisas si es que se ha definido este parámetro, claro)

Saludos,
  #5 (permalink)  
Antiguo 27/12/2010, 15:55
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

Gracias, por tu orientacion, lo probare, y luego te comento como me fue...

Con tu ejemplo: me queda mucho mas claro.-

Gracias de nuevo.-
  #6 (permalink)  
Antiguo 28/12/2010, 19:29
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación respuesta:CASI-CASI FUNCIONA Este empty me arruina todo el php.

Ok, de nuevo yo, todavia quebrandome la cabeza. te cuento que probe de dos formas distintas, y las dos estan apunto de salir, pero todavia no lo logro al 100%.

//CON RESPECTO A TU EJEMPLO HICE ESTO EN FILE.PHP :

<?php
$imagen = "../../../images_inventario/";

if (file_exists($imagen)) { ?> //saque el empty

<iframe id="ver" name="ver" src="../../../images_inventario/<?=$IdProducto['DE_IMAGEN'];?>" style="display: block; margin: auto; border-width: 2px; width: 284px;
height: 330px;"></iframe>

<? } else { ?>

<iframe id="ver" name="ver" src="../../../images_inventario/foto_por_defecto.png" style="display: block; margin: auto; border-width: 2px; width: 284px;
height: 330px;"></iframe>
<? } ?>

//ESTO ES LO QUE CASI CASI RESULTA, YA QUE EN EL LISTADO PRINCIPAL:
//CUANDO HAGO CLICK EN VER LA IMAGEN, TRAE LA IMAGEN ASOCIADA AL PRODUCTO, LA MUESTRA COMO POR 2 SEGUNDOS Y LA CAMBIA POR LA FOTO DE DEFECTO.
//ANALISANDO, ME DOY CUENTA QUE TENGO UNAS FUNCIONES(las cuales controlo el peso, el ancho,etc..) , QUE LLAMAN A PREVISOR.PHP, te las posteo:

*************** TODO ESTE CONTROL ESTA EL FILE.PHP ****************
function prever() {
var campos = new Array("maxpeso", "maxalto", "maxancho");
for (i = 0, total = campos.length; i < total; i ++)
f.form[campos[i]].disabled = false;
actionActual = f.form.action;
targetActual = f.form.target;
f.form.action = "previsor.php";
f.form.target = "ver";
f.form.submit();
for (i = 0, total = campos.length; i < total; i ++)
f.form[campos[i]].disabled = true;
f.form.action = actionActual;
f.form.target = targetActual;
}

************************************************** **************
function ini() {

document.forms.formu.actualizar = actuar;
window.frames.ver.location.href = "previsor.php";
document.forms.formu.actualizar(0, 0, 0);
}

************************************************** ***************
// Y EN PREVISOR.PHP :

$defecto = "foto_por_defecto.png";
$Ok = isset($_FILES["archivo"]);
$url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto;
list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url);
$error = (isset($atributos)) ? 0 : 1;
$los_tipos = array("gif", "jpg", "png");
$tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/png";
$fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto;
$tam = filesize($url);
$OkTam = isset($_POST["maxpeso"]);
$OkAncho = isset($_POST["maxancho"]);
$OkAlto = isset($_POST["maxalto"]);
$maxTam = ($OkTam) ? (int) $_POST["maxpeso"]: 100000;
$maxAncho = ($OkAncho) ? (int) $_POST["maxancho"]: 640;
$maxAlto = ($OkAlto) ? (int) $_POST["maxalto"]: 480;
$error += ($tam <= $maxTam) ? 0 : 2;
$ancho = ($error == 1) ? 0 : $anchura;
$alto = ($error == 1) ? 0 : $altura;
$error += ($ancho <= $maxAncho) ? 0 : 4;
$error += ($alto <= $maxAlto) ? 0 : 8;
$datos = ($error == 0) ? $url : $defecto;
$onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto, $error)'": '';
$datos_imagen = fread(fopen($datos, "rb"), filesize($datos));
$_SESSION["cont"] = $datos_imagen;
$_SESSION["tipo"] = ($error == 0) ? $tipo : "image/png";

?>


//CON RESPECTO A UN INTENTO PROPIO HICE ESTO EN FILE.PHP :

<iframe src="previsor.php?<?=$IdProducto['ID_PRODUCTO'];?>" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
</iframe>

// Y EN PREVISOR.PHP :

$id_producto=$_REQUEST['id_producto'];
$Result=mysql_query("select DE_IMAGEN from lk_inv_producto where ID_PRODUCTO='$id_producto'",$cn);
$SqlQuery=mysql_fetch_array($Result);

$imagen = "../../../images_inventario/";

if (file_exists($imagen)) { //LE VOLVI A SACAR EL EMPTY
$defecto= $SqlQuery['DE_IMAGEN'];
} else {
$defecto = "foto_por_defecto.png";
}

$defecto = "$defecto";
$Ok = isset($_FILES["archivo"]);
$url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto;
list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url);
$error = (isset($atributos)) ? 0 : 1;
$los_tipos = array("gif", "jpg", "png");
$tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/png";
$fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto;
$tam = filesize($url);
$OkTam = isset($_POST["maxpeso"]);
$OkAncho = isset($_POST["maxancho"]);
$OkAlto = isset($_POST["maxalto"]);
$maxTam = ($OkTam) ? (int) $_POST["maxpeso"]: 100000;
$maxAncho = ($OkAncho) ? (int) $_POST["maxancho"]: 640;
$maxAlto = ($OkAlto) ? (int) $_POST["maxalto"]: 480;
$error += ($tam <= $maxTam) ? 0 : 2;
$ancho = ($error == 1) ? 0 : $anchura;
$alto = ($error == 1) ? 0 : $altura;
$error += ($ancho <= $maxAncho) ? 0 : 4;
$error += ($alto <= $maxAlto) ? 0 : 8;
$datos = ($error == 0) ? $url : $defecto;
$onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto,$error)'": '';
$datos_imagen = fread(fopen($datos, "rb"), filesize($datos)); //POR ESTA LINEA ME RECLAMA , CUANDO QUIERO VISUALIZAR LA IMAGEN
$_SESSION["cont"] = $datos_imagen;
$_SESSION["tipo"] = ($error == 0) ? $tipo : "image/png";

?>

************************************************** **************

La pregunta del año, con cual es mas recomendable, y como puedo sacar el detallito..

el archivo del previsor.php, son casi iguales(para que no piensen que me mande todo un codigaso en el posteo), solo le cambie la primera parte al primer ejemplo.

Espero nuevamente tu orientacion, ANTE-MANO GRACIAS.-

Última edición por Prais; 29/12/2010 a las 16:16
  #7 (permalink)  
Antiguo 29/12/2010, 16:25
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

Ok, de nuevo yo, todavia quebrandome la cabeza. te cuento que probe de dos formas distintas, y las dos estan apunto de salir, pero todavia no lo logro al 100%.

//CON RESPECTO A TU EJEMPLO HICE ESTO EN FILE.PHP :
Código PHP:
Ver original
  1. <?php    
  2. $imagen = "../../../images_inventario/";
  3.  
  4. if (file_exists($imagen)) { ?>    //saque el empty:-)
  5.  
  6. <iframe id="ver" name="ver" src="../../../images_inventario/<?=$IdProducto['DE_IMAGEN'];?>" style="display: block; margin: auto; border-width: 2px; width: 284px;
  7. height: 330px;"></iframe>
  8.  
  9. <? } else { ?>
  10.  
  11. <iframe id="ver" name="ver" src="../../../images_inventario/foto_por_defecto.png" style="display: block; margin: auto; border-width: 2px; width: 284px;
  12. height: 330px;"></iframe>
  13. <? } ?>

//ESTO ES LO QUE CASI CASI RESULTA, YA QUE EN EL LISTADO PRINCIPAL:
//CUANDO HAGO CLICK EN VER LA IMAGEN, TRAE LA IMAGEN ASOCIADA AL PRODUCTO, LA MUESTRA COMO POR 2 SEGUNDOS Y LA CAMBIA POR LA FOTO DE DEFECTO.
//ANALISANDO, ME DOY CUENTA QUE TENGO UNAS FUNCIONES(las cuales controlo el peso, el ancho,etc..) , QUE LLAMAN A PREVISOR.PHP, te las posteo:

*************** TODO ESTE CONTROL ESTA EL FILE.PHP ****************
Código Javascript:
Ver original
  1. function prever() {
  2. var campos = new Array("maxpeso", "maxalto", "maxancho");
  3. for (i = 0, total = campos.length; i < total; i ++)
  4. f.form[campos[i]].disabled = false;
  5. actionActual = f.form.action;
  6. targetActual = f.form.target;
  7. f.form.action = "previsor.php";
  8. f.form.target = "ver";
  9. f.form.submit();
  10. for (i = 0, total = campos.length; i < total; i ++)
  11. f.form[campos[i]].disabled = true;
  12. f.form.action = actionActual;
  13. f.form.target = targetActual;
  14. }
************************************************** **************
Código Javascript:
Ver original
  1. function ini() {
  2.  
  3. document.forms.formu.actualizar = actuar;
  4. window.frames.ver.location.href = "previsor.php";
  5. document.forms.formu.actualizar(0, 0, 0);
  6. }
************************************************** ***************
// Y EN PREVISOR.PHP :
Código PHP:
Ver original
  1. $defecto = "foto_por_defecto.png";
  2. $Ok = isset($_FILES["archivo"]);
  3. $url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto;
  4. list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url);
  5. $error = (isset($atributos)) ? 0 : 1;
  6. $los_tipos = array("gif", "jpg", "png");
  7. $tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/png";
  8. $fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto;
  9. $tam = filesize($url);
  10. $OkTam = isset($_POST["maxpeso"]);
  11. $OkAncho = isset($_POST["maxancho"]);
  12. $OkAlto = isset($_POST["maxalto"]);
  13. $maxTam = ($OkTam) ? (int) $_POST["maxpeso"]: 100000;
  14. $maxAncho = ($OkAncho) ? (int) $_POST["maxancho"]: 640;
  15. $maxAlto = ($OkAlto) ? (int) $_POST["maxalto"]: 480;
  16. $error += ($tam <= $maxTam) ? 0 : 2;
  17. $ancho = ($error == 1) ? 0 : $anchura;
  18. $alto = ($error == 1) ? 0 : $altura;
  19. $error += ($ancho <= $maxAncho) ? 0 : 4;
  20. $error += ($alto <= $maxAlto) ? 0 : 8;
  21. $datos = ($error == 0) ? $url : $defecto;
  22. $onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto, $error)'": '';
  23. $datos_imagen = fread(fopen($datos, "rb"), filesize($datos));
  24. $_SESSION["cont"] = $datos_imagen;
  25. $_SESSION["tipo"] = ($error == 0) ? $tipo : "image/png";
  26.  
  27. ?>

//CON RESPECTO A UN INTENTO PROPIO HICE ESTO EN FILE.PHP :

Código PHP:
Ver original
  1. <iframe src="previsor.php?<?=$IdProducto['ID_PRODUCTO'];?>" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 284px; height: 330px;">
  2. </iframe>
// Y EN PREVISOR.PHP :
Código PHP:
Ver original
  1. $id_producto=$_REQUEST['id_producto'];
  2. $Result=mysql_query("select DE_IMAGEN from lk_inv_producto where ID_PRODUCTO='$id_producto'",$cn);
  3. $SqlQuery=mysql_fetch_array($Result);
  4.  
  5. $imagen = "../../../images_inventario/";
  6.  
  7. if (file_exists($imagen)) { //LE VOLVI A SACAR EL EMPTY:-)
  8. $defecto= $SqlQuery['DE_IMAGEN'];
  9. } else {
  10. $defecto = "foto_por_defecto.png";
  11. }
  12.  
  13. $defecto = "$defecto";
  14. $Ok = isset($_FILES["archivo"]);
  15. $url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto;
  16. list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url);
  17. $error = (isset($atributos)) ? 0 : 1;
  18. $los_tipos = array("gif", "jpg", "png");
  19. $tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/png";
  20. $fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto;
  21. $tam = filesize($url);
  22. $OkTam = isset($_POST["maxpeso"]);
  23. $OkAncho = isset($_POST["maxancho"]);
  24. $OkAlto = isset($_POST["maxalto"]);
  25. $maxTam = ($OkTam) ? (int) $_POST["maxpeso"]: 100000;
  26. $maxAncho = ($OkAncho) ? (int) $_POST["maxancho"]: 640;
  27. $maxAlto = ($OkAlto) ? (int) $_POST["maxalto"]: 480;
  28. $error += ($tam <= $maxTam) ? 0 : 2;
  29. $ancho = ($error == 1) ? 0 : $anchura;
  30. $alto = ($error == 1) ? 0 : $altura;
  31. $error += ($ancho <= $maxAncho) ? 0 : 4;
  32. $error += ($alto <= $maxAlto) ? 0 : 8;
  33. $datos = ($error == 0) ? $url : $defecto;
  34. $onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto,$error)'": '';
  35. $datos_imagen = fread(fopen($datos, "rb"), filesize($datos)); //POR ESTA LINEA ME RECLAMA , CUANDO QUIERO VISUALIZAR LA IMAGEN
  36. $_SESSION["cont"] = $datos_imagen;
  37. $_SESSION["tipo"] = ($error == 0) ? $tipo : "image/png";
  38.  
  39. ?>
************************************************** **************

La pregunta del año, con cual es mas recomendable, y como puedo sacar el detallito..

el archivo del previsor.php, son casi iguales(para que no piensen que me mande todo un codigaso en el posteo), solo le cambie la primera parte al primer ejemplo.

Espero nuevamente tu orientacion, ANTE-MANO GRACIAS.-
  #8 (permalink)  
Antiguo 29/12/2010, 19:17
Avatar de Prais  
Fecha de Ingreso: octubre-2010
Mensajes: 114
Antigüedad: 14 años, 2 meses
Puntos: 6
Exclamación Respuesta: Este empty me arruina todo el php, alguien sabe algun sinonimo

Bueno, ya se que esta un poco complejo, pero comente al principio este ejemplo lo saque directamente de aqui, hace tiempo, y buscando buscando,

El codigo es integramente de CARICATOS, y funciona bien, es que yo necesito hacer algunos pequeños cambios..

Asi que mejor tratare de hacerle llegar mi inquietud al creador del codigo..

de todas formas, agradesco a los lectores que ayudaron y trataron de ayudar.

Etiquetas: empty, todo
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 09:55.