Foros del Web » Programando para Internet » PHP »

Evaluar campo Bit de MySQL

Estas en el tema de Evaluar campo Bit de MySQL en el foro de PHP en Foros del Web. No sé qué está pasando, pero al hacer ésto... Código: <? echo $datos['REELECTO'] == 1 ? "Si" : "No"; ?> ... siempre entra al else ...
  #1 (permalink)  
Antiguo 22/09/2009, 16:03
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Evaluar campo Bit de MySQL

No sé qué está pasando, pero al hacer ésto...
Código:
<? echo $datos['REELECTO'] == 1 ? "Si" : "No"; ?>
... siempre entra al else (valor no)!!!

¿Por qué me está ocurriendo esto? Vamos, que lo he hecho muchas veces ya en otras oportunidades y funcionaba :weird:

Tampoco doy con una buena búsqueda en google... fuck.
__________________
...___...
  #2 (permalink)  
Antiguo 22/09/2009, 16:24
 
Fecha de Ingreso: octubre-2007
Ubicación: Capital Federal
Mensajes: 215
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Evaluar campo Bit de MySQL

No sería...

<? echo $row['REELECTO'] == 1 ? "Si" : "No"; ?> ???
  #3 (permalink)  
Antiguo 22/09/2009, 16:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Evaluar campo Bit de MySQL

Cita:
Iniciado por JavierCS2007- Ver Mensaje
No sería...

<? echo $row['REELECTO'] == 1 ? "Si" : "No"; ?> ???


Hola Javier... ¿Cuál es la diferencia de lo que pusiste vos y lo que puse yo?
¿¿El nombre de la variable??
¿Y eso en qué lo podría afectar?

Permitime desconfiar de tu solución... no la pienso probar
__________________
...___...
  #4 (permalink)  
Antiguo 22/09/2009, 16:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Evaluar campo Bit de MySQL

Prueba con var_dump($datos); para ver lo que estas recibiendo, puede que el fallo este en la consulta; aparte, si aceptas sugerencias, no uses short tags <? y, por legibilidad, encierra la condicion entre parentesis.

Código php:
Ver original
  1. <?php echo ($datos['REELECTO'] == 1) ? "Si" : "No"; ?>
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 22/09/2009, 16:53
 
Fecha de Ingreso: octubre-2007
Ubicación: Capital Federal
Mensajes: 215
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Evaluar campo Bit de MySQL

Cita:
Iniciado por AlZuwaga Ver Mensaje
Hola Javier... ¿Cuál es la diferencia de lo que pusiste vos y lo que puse yo?
¿¿El nombre de la variable??
¿Y eso en qué lo podría afectar?

Permitime desconfiar de tu solución... no la pienso probar
No estás sacando esa data que comparás de una bd ?

Por eso te había puesto de lo $row

A veces uno esta tan acustumbrado a usar $row que comete esos errores tontos.
  #6 (permalink)  
Antiguo 22/09/2009, 18:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Evaluar campo Bit de MySQL

Bien, encontré el problema (y la solución) aquí: Using Mysql 5.0 “BIT” fields with PHP

Código:
<?php echo ($datos['REELECTO'] == chr(0x01)) ? "Si" : "No"; ?>
Triby, las sugerencias son siempre bienvenidas (sobre todo cuando son recibidas de alguien con mucha experiencia). Te agradezco ambas, aunque debo decir que no entiendo por qué no usar short tags (sobre los paréntesis quedó claro: la legibilidad )

Javier, no me queda claro si el error tonto lo cometí yo al no usar $row como nombre del array o vos al sugerir que lo use


Nota mental: hacer uso de var_dump() en futuras ocasiones ;)
__________________
...___...
  #7 (permalink)  
Antiguo 22/09/2009, 18:14
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Evaluar campo Bit de MySQL

Hummm... una duda extra... según la página Numeric Types de la documentación de MySQL 5, donde dice:
Cita:
As of MySQL 5.0.3, a BIT data type is available for storing bit-field values. (Before 5.0.3, MySQL interprets BIT as TINYINT(1).) In MySQL 5.0.3, BIT is supported only for MyISAM. MySQL 5.0.5 extends BIT support to MEMORY, InnoDB, BDB, and NDBCLUSTER.
... ¿Qué ocurre si la base de datos del servidor de producción es de una versión inferior a la que tengo instalada en el PC que estoy usando de pruebas? ¿Va a tratar el campo Bit como TINYINT(1) y, por lo tanto, va a esperar el valor numérico 1 como true en vez del valor chr(0x01), haciendo que la programación falle?...
__________________
...___...
  #8 (permalink)  
Antiguo 22/09/2009, 19:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Evaluar campo Bit de MySQL

El uso de short tags no esta recomendado por posibles conflictos con <?xml, para poder enviarlo necesitarias hacerlo siempre con echo '<?xml'; y, tal vez la parte mas importante: no en todos los servidores esta activa esta opcion.

Si vas a usar tus scripts solo en servidores donde puedes controlar la configuracion (VPS || dedicados) entonces no habra problemas.

Respecto a los campos tipo BIT y versiones anteriores de MySQL definitivamente el valor almacenado sera un entero, pero veo dificil que en algun hosting aun tengan esas versiones, por lo que no creo que debas preocuparte mucho de eso.

Mis versiones de MySQL:
- WAMP: 5.1.31
- Servidor compartido: 5.0.81
- Servidor dedicado:5.0.51
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 23/09/2009, 11:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Evaluar campo Bit de MySQL

Gracias Triby, todo muy claro
Sobre la posibilidad que esté instalada alguna versión inferior de MySQL, yo no tendría tantas dudas. La aplicación no correrá en un hosting comercial sino en un servidor propio y no sé cómo "lo manejan". Veré de preguntarle al administrador qué versión usan.
Gracias nuevamente.
__________________
...___...
  #10 (permalink)  
Antiguo 23/09/2009, 11:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Evaluar campo Bit de MySQL

¿Y si usas ambas comparaciones?:
Código PHP:
Ver original
  1. echo ($datos['REELECTO'] == chr(1) || $datos['REELECTO'] == 1) ? 'true' : 'false';
Creo que en ese caso no tendrías problemas con las versiones.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Última edición por David; 23/09/2009 a las 11:55
  #11 (permalink)  
Antiguo 23/09/2009, 12:30
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Evaluar campo Bit de MySQL

Pero si seré nabo... claro, claro.. con un or lo soluciono
Cuando termine de deglutir el sandwich que estoy comiendo molesto con otra duda
__________________
...___...
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 05:30.