Foros del Web » Programando para Internet » PHP »

Condición "vacío" pudiéndose tomar valor 0

Estas en el tema de Condición "vacío" pudiéndose tomar valor 0 en el foro de PHP en Foros del Web. Hola a todos. A ver si me explico debidamente para que me podáis ayudar con éste asunto. Hace unos meses diseñé una aplicación que mostraba ...
  #1 (permalink)  
Antiguo 29/10/2012, 17:25
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 8 meses
Puntos: 0
Condición "vacío" pudiéndose tomar valor 0

Hola a todos.

A ver si me explico debidamente para que me podáis ayudar con éste asunto.

Hace unos meses diseñé una aplicación que mostraba las notas de los alumnos de un centro a través de un fichero xlsx. En él tenía una serie de asignaturas (todas las del centro) y todos los alumnos del centro. Puse una condición para que si un alumno no estaba matriculado en una asignatura (dejaban vacía ésa celda) no me lo mostrara.

Ahora bien, resulta que un alumno puede tener un 0 en una asignatura en la que está matriculado y con la condición que puse, tanto si está vacía (la celda) cómo si es un 0, no me la muestra.

He probado con null, con empty, y diciendole:

Código PHP:
$notas $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,$row)->getValue();
if (
$notas != '') {
                    
$materias $objPHPExcel->getActiveSheet()->getCellByColumnAndRow($col,1)->getValue();
                    
$table .= "<th width='75'>$materias</th>";    

Sin embargo ninguna funciona, tanto si es 0 cómo si está vacía no me la muestra, y si es 0, quiero que me muestre que es 0.

No sé si me he explicado bien y podéis echarme una mano, cosa que agradecería enormemente.

Un saludo.
  #2 (permalink)  
Antiguo 29/10/2012, 17:52
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 52
Antigüedad: 12 años, 5 meses
Puntos: 17
Respuesta: Condición "vacío" pudiéndose tomar valor 0

if(empty($var)) echo 0;
__________________
No respondo mensajes privados, pregunte por foro como todos los mortales.
  #3 (permalink)  
Antiguo 29/10/2012, 18:03
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Condición "vacío" pudiéndose tomar valor 0

Fijate si realmente la celda esta vacía o tiene espacios dentro.
Pues según tengo entendido retorna NULL.
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #4 (permalink)  
Antiguo 29/10/2012, 18:13
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Condición "vacío" pudiéndose tomar valor 0

Cita:
Iniciado por EduardoU24 Ver Mensaje
if(empty($var)) echo 0;
Pero si hago éso tanto si está vacía cómo si es 0 va a mostrar 0. Yo no quiero éso puesto que la forma que tienen en el centro de mostrarme que un usuario no está matriculado en una asignatura es dejándola vacía, y ésa materia no debe mostrarse.

Para ser algo más claro he hecho una captura de la distribución de celdas del fichero xlsx.



Si nos fijamos en el primer alumno (Julia Abarrategui) tiene un 2, un 3, un 0 y un 4 en cuatro asignaturas en las que está matriculada. Ahora bien, yo lo que pretendo es que me muestre ésas notas, y tal y como lo tengo ahora, y con todo lo que he probado no consigo que me muestre también el 0 (que es la nota final que tiene en ésa materia).

Gracias por vuestra ayuda, espero que así se pueda entender mejor.

Edito: Sí portalmana, fue una de las cosas que sospeché, pero lo he comprobado y no hay espacios en blanco.
  #5 (permalink)  
Antiguo 29/10/2012, 18:17
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Condición "vacío" pudiéndose tomar valor 0

Código PHP:
Ver original
  1. $hola = 0;
  2. if ($hola !== null) {
  3.     echo $hola . 'aqui';
  4. }
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #6 (permalink)  
Antiguo 29/10/2012, 18:34
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Condición "vacío" pudiéndose tomar valor 0

Genial portalmana. Mira que llevo horas rompiéndome la cabeza con ésto y no he dado con algo a simple vista tan sencillo.

Muchísimas gracias.

Un saludo.
  #7 (permalink)  
Antiguo 29/10/2012, 19:45
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Condición "vacío" pudiéndose tomar valor 0

Esa es una buena forma, pero para eso existe is_null...

Código PHP:
Ver original
  1. if (is_null($var)) {
  2.      echo 'Vacio!';
  3. }else {
  4.     echo $var;
  5. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 29/10/2012, 19:55
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Condición "vacío" pudiéndose tomar valor 0

En realidad en PHP recomiendan usar:
if (null === $var)

http://hakre.wordpress.com/2011/03/2..._null-vs-null/
http://www.php.net/manual/es/function.is-null.php

Using === NULL instead of is_null(), is actually useful in loaded server scenarios where you have hundreds or thousands of requests per second. Saving microseconds on a lot of "simple" operations in the entire PHP execution chain usually results in being able to serve more pages per second at the same speed, or lowering your cpu usage. People usually write very bad and slow code.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Etiquetas: condición, tomar
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 16:21.