Jo jag vett att det har tagits upp liknande saker tidigare men jag har inte fattat så mycket av dem.Jag har försökt att göra en "Vilka är online" till min community i några dagar nu, men jag har inte fått det att funka :x
Alltså om man har varit inaktiv i 30 minuter(när kakan går ut) så ändras ett fält i databasen till offline. Sen så är det ju bara att hämta vilka som är online och så med det är inga problem.
Skulle vara snällt om någon med kunskap kunde hjälpa ;)
Nybörjare med cookies...
6 svar · 296 visningar · startad av Pike
Här förklarar jag och några till hur du bör göra en sådan finktion:
http://www.webforum.nu/showthread.php?s=&threadid=117033&forumid=23
Okej, men jag fattade inte mycket av den tråden. Men tack ändå.
Jag har försökt att göra med timestamp tidigare med det gick inge vidare. Den bara skrev in 0:er istället för tiden också tog den bort alla som var aktiv innan :l
// Sätter online
include "data.php";
$Ldelete = mysql_connect("$mysql_host", "$mysql_user", "$mysql_pass");
$databas = mysql_select_db("$mysql_db");
$sqlINSERT="INSERT INTO medlemmar_online(user,timestamp)
VALUES('$username','$currenttime2')";
mysql_query("$sql");
mysql_close($Ldelete);
// sätter offline
$currenttime = date("YmdHis"); //tiden
$deletefrom = $currenttime-2000; //tiden - 20min.
$Ldelete = mysql_connect("$mysql_host", "$mysql_user", "$mysql_pass");
$databas = mysql_select_db("$mysql_db");
$sql = "DELETE FROM medlemmar_online WHERE timestamp > '$deletefrom'";
mysql_query("$sql");
mysql_close($Ldelete);
Först och främst bör du byta namn på din kolumn, timestamp är ett reserverat ord. Din lösning skulle kunna fungera men den är onödigt omständlig. Förklaring i korthet.
1. Skapa en sessionvariabel med ett unikt medlemsvärde vid inloggning, exempelvis ett medlemsId.
2. Skapa en datetime-kolumn i din medlemstabell
3. Lägg till en sql-fråga på alla sidor som uppdaterar kolumnen med now() för aktuellt sessionId. Alltså du uppdaterar den post i databasen där medlemsid och sessionid överensstämmer.
4. Bestäm dig för hur länge en medlem ska kunna vara inaktiv för att räknas som online.
5. Hämta ut alla som varit aktiva senare än den tid du bestämt som onlinetid enligt punkt 4.
aha...
Den uppdaterar tabellen "aktiv" till tiden date("YmdHis"); Men sen för att lista alla som är online använder jag denna kod (som inte fungerar):
<?
$tiden_nu = date("YmdHis"); //tiden
$tiden_efter = $tiden_nu-50; //tiden minus
include "data.php";
$linkONnu = mysql_connect("$mysql_host", "$mysql_user", "$mysql_pass");
$sqlONnu="SELECT * FROM medlemmar WHERE aktiv > '$tidenefter'";
$result = mysql_db_query("$mysql_db","$sqlONnu");
while($radONnu=mysql_fetch_array($result)){
?>
vad är det som är fel? Den visar alla medlemmar som någon gång har varit online :S
include "data.php";
$linkONnu = mysql_connect("$mysql_host", "$mysql_user", "$mysql_pass");
$sqlONnu="SELECT * FROM medlemmar WHERE aktiv > SUBDATE(NOW(), INTERVAL 50 MINUTE)";
$result = mysql_db_query("$mysql_db","$sqlONnu");
while($radONnu=mysql_fetch_array($result)){
Jag satt värdet till 50 minuter. PHPs tid är en sak och MySQLs tid en annan, formaten var antagligen inte lika.
Tack så mysqlet! :e