Tabla que no se actualiza

Bueno, tengo un problemilla, llevo varios días pensando delante de este código, porque no quiere funcionar como es debido:
function updateusersonline() {
global $prefix, $dbi, $time_logout, $HTTP_COOKIE_VARS;
$user_data = explode("@",$HTTP_COOKIE_VARS["user_UserData"]);
$time = time();
if ($user_data[0] != "") {
$result = sql_query("UPDATE ".$prefix."_session SET session_time=".$time." WHERE session_user=".$user_data[0]."", $dbi);
if (!$result) {
$insert = sql_query("INSERT INTO ".$prefix."_session (session_id, session_user, session_time) VALUES (NULL, '$user_data[0]', '$time')", $dbi);
sql_freeresult($insert);
}
sql_freeresult($result);
}
else {
destroycookie();
}
$result = sql_query("DELETE FROM ".$prefix."_session WHERE (($time - session_time)>$time_logout)", $dbi);
sql_freeresult($result);
$result = sql_query("SELECT * FROM ".$prefix."_sessions", $dbi);
$num_users = sql_num_rows($result);
sql_freeresult($result);
}
Quiero comprobar cuantos y cuales de los usuarios registrados (por cookies) están activos en la página en este momento, no los activos en total, solo los usuarios registrados activos en este momento.
Las funciones como sql_freeresult() las he creado yo para poder exportarlo a diferentes bd.
Si me pudieras decir porque razón no me actualiza la tabla, solo me inserta una y otra vez a los usuarios ya registrados y comprobados, hasta las narices me tiene, ¡Una solución quiero! Y te puedo asegurar que llevo muchas horas delante del código modificándolo y nada
Muchas gracias

1 respuesta

Respuesta
1
He revisado el código y he encontrado un pequeño fallo. Entre comillas dobles puedes poner una variable y será sustituida por su contenido, pero cuando usas un array, no se puede poner tal cual porque php no sabe si la variable acaba antes de [0] o después. Imagina que quieres poner la variable $datos seguida de [0], se pondría: "$datos[0]", que parecería un array. Para solucionar esto se pone entre llaves los arrays. Un ejemplo:
$datos[0] = "MisDatos";
$datos = "dato";
echo "$datos[0]"; // "dato[0]"
echo "{$datos[0]}"; // "MisDatos"
Por tanto, en tu código deberías modificar la linea con INSERT de la siguiente forma:
$insert = sql_query("INSERT INTO ".$prefix."_session (session_id, session_user, session_time) VALUES (NULL, '{$user_data[0]}', '$time')", $dbi);
Otras pruebas que se me ocurren son:
- Cambiar $HTTP_COOKIE_VARS por $_COOKIE.
- Comprobar el valor de $user_data[0] que contenga datos válidos para insertar en la tabla de la base de datos.
- Usar strftime en vez de $time:
$result = sql_query("UPDATE ".$prefix."_session SET session_time=". strftime("%H:%M:%S") ." WHERE session_user=".$user_data[0]."", $dbi);
Supongo que con lo primero será suficiente, el resto son cosas que puedes probar en caso de que siga sin funcionar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas