Foros del Web » Programando para Internet » PHP »

problema con query

Estas en el tema de problema con query en el foro de PHP en Foros del Web. Bueno tengo el siguiente codigo para saber si un usuario a estado online en los últimos 5 minutos, pero me da error. El código es ...
  #1 (permalink)  
Antiguo 26/08/2012, 20:36
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Pregunta problema con query

Bueno tengo el siguiente codigo para saber si un usuario a estado online en los últimos 5 minutos, pero me da error. El código es este:

Código PHP:
Ver original
  1. $past_tense = time()-300;
  2. $getu_online = $db->query("SELECT user_id   FROM " . TABLE_PREFIX . "sessions ON user_id = '" . $postsdata['poster_id'] . "' WHERE updated >= '$past_tense'");

& el error es este:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON user_id = '4' WHERE updated >= '1346034223'' at line 1
Que puede ser? De antemano gracias.
  #2 (permalink)  
Antiguo 26/08/2012, 20:44
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Te falta un espacio después de TABLE_PREFIX y antes de sessions

Código PHP:
Ver original
  1. $getu_online = $db->query("SELECT user_id   FROM " . TABLE_PREFIX . " sessions ON user_id = '" . $postsdata['poster_id'] . "' WHERE updated >= '$past_tense'");

Saludos!
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #3 (permalink)  
Antiguo 26/08/2012, 20:46
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con query

Cita:
Iniciado por montealegreluis Ver Mensaje
Te falta un espacio después de TABLE_PREFIX y antes de sessions

Código PHP:
Ver original
  1. $getu_online = $db->query("SELECT user_id   FROM " . TABLE_PREFIX . " sessions ON user_id = '" . $postsdata['poster_id'] . "' WHERE updated >= '$past_tense'");

Saludos!
No era eso.. Pille la solución sin querer.

La consulta era así:

Código PHP:
Ver original
  1. $getu_online = $db->query("SELECT user_id FROM " . TABLE_PREFIX . "sessions WHERE updated >= '$past_tense' AND user_id = '" . $postsdata['poster_id'] . "'");
  #4 (permalink)  
Antiguo 26/08/2012, 20:48
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Cierto... creo que debí leer dos veces
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #5 (permalink)  
Antiguo 26/08/2012, 20:50
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con query

Ah todo esto, como puedo solo comprobar que el usuario esta online, pero sin seleccionar el "user_id" & que si esta online me devuelva un valor "1" & si no esta online que devuelva "0"?
  #6 (permalink)  
Antiguo 26/08/2012, 21:01
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Si no entendí mal, puedes agregar un COUNT a tu consulta si no está en línea te devuelve un cero, te devuelve 1 si es que está en línea

Código PHP:
Ver original
  1. $getu_online = $db->query("SELECT COUNT(user_id) FROM " . TABLE_PREFIX . "sessions WHERE updated >= '$past_tense' AND user_id = '" . $postsdata['poster_id'] . "'");
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #7 (permalink)  
Antiguo 26/08/2012, 21:19
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con query

No me funciona, hice este condicional con el query que me dejaste.

Código PHP:
Ver original
  1. $poster_online = ($getu_online == 1) ? 'Online' : 'Offline';

Pero me marca siempre que esta Offline.
  #8 (permalink)  
Antiguo 26/08/2012, 21:26
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Me imagino que lo que devuelve $db->query es un array. Puedes checar haciendo un var_dump($getu_online) si es un array y lo comparas con 1 siempre te devolverá false Haz la prueba y me cuentas.
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #9 (permalink)  
Antiguo 26/08/2012, 21:31
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con query

Sigue lo mismo, aún devuelve que esta Offline.

$poster_online = (var_dump($getu_online) == 1) ? 'Online' : 'Offline';
  #10 (permalink)  
Antiguo 26/08/2012, 21:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema con query

<saludos>
Pregunta, la función query que retorna, un resource o un array de datos?
Tal vez sea el primero, en cuyo caso tal vez haya otra función en el objeto $db
que haga un fetch.
Sin embargo, haciendole la operación comentada por
montealegreluis se puede verificar, y ya con eso si revisar si es posible la comparación posible.
Nota: hacer el var_dump ANTES del iif
</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 26/08/2012, 21:39
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Creo que no me expliqué, yo decía que probarás con el var_dump para que confirmaras si lo que te devuleve el método query es un array.

Si te devuelve un array la salida que verías sería algo así

Código PHP:
Ver original
  1.   0 => 1  // Este es el valor del count el 1
  2. )
o algo parecido.

Y si lo incorporas a tu condicional quedaría así

Código PHP:
Ver original
  1. $poster_online = ($getu_online[0] == 1) ? 'Online' : 'Offline';

Te decía que pusieras un var_dump o print_r porque no se si usas PDO o es una clase tuya, o si la tomaste de algún libro o tutorial, y no pordría asegrarte que el resultado de $db->query es como el array que puse al principio.

Espero haberme explicado
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #12 (permalink)  
Antiguo 26/08/2012, 22:00
 
Fecha de Ingreso: junio-2009
Mensajes: 138
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: problema con query

Cita:
Iniciado por mortiprogramador Ver Mensaje
<saludos>
Pregunta, la función query que retorna, un resource o un array de datos?
Tal vez sea el primero, en cuyo caso tal vez haya otra función en el objeto $db
que haga un fetch.
Sin embargo, haciendole la operación comentada por
montealegreluis se puede verificar, y ya con eso si revisar si es posible la comparación posible.
Nota: hacer el var_dump ANTES del iif
</saludos>
Solo devuelve esto:
mysqli_result Object ( ) mysqli_result Object ( ) mysqli_result Object ( )

Cita:
Iniciado por montealegreluis Ver Mensaje
Creo que no me expliqué, yo decía que probarás con el var_dump para que confirmaras si lo que te devuleve el método query es un array.

Si te devuelve un array la salida que verías sería algo así

Código PHP:
Ver original
  1.   0 => 1  // Este es el valor del count el 1
  2. )
o algo parecido.

Y si lo incorporas a tu condicional quedaría así

Código PHP:
Ver original
  1. $poster_online = ($getu_online[0] == 1) ? 'Online' : 'Offline';

Te decía que pusieras un var_dump o print_r porque no se si usas PDO o es una clase tuya, o si la tomaste de algún libro o tutorial, y no pordría asegrarte que el resultado de $db->query es como el array que puse al principio.

Espero haberme explicado
No pasa nada aún :/
  #13 (permalink)  
Antiguo 26/08/2012, 22:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema con query

<saludos>
Teorizando que usas mysqli, intenta esto luego del $db->query

if ($resultado = $db->use_result()) {
while (
$fila = $resultado->fetch_row()) {
printf("%s\n", $fila[0]);
}
$resultado->close();

</saludos>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #14 (permalink)  
Antiguo 26/08/2012, 22:19
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 11 años, 10 meses
Puntos: 16
Respuesta: problema con query

Como el resultado es un objeto mysqli_result puedes llamar al método fetch_array después de ejecutar la query, por ejemplo

Código PHP:
Ver original
  1. $count = $getu_online->fetch_array();

a ese le puedes hacer otro var_dump($count) (para confirmar los valores), ese sí sera un array y ya podrás checar si trae cero o uno. Dependiendo del resultado que te mande el var_dump ya modificas está linea si es que hace falta

Código PHP:
Ver original
  1. $poster_online = ($count[0] == 1) ? 'Online' : 'Offline';
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla

Etiquetas: mysql, query, sql, usuarios
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 23:04.