Avatar billede subit Nybegynder
26. maj 2005 - 21:36 Der er 6 kommentarer og
1 løsning

Delete fra DB hvis ikke aktiv?

Hejsa, kig lidt på denne kode jeg har lavet:

// Vælger de brugere der er i online_nu
$foresp = mysql_query("SELECT * FROM online_nu");
while($data = mysql_fetch_array($foresp)){

// definere $tid_nu som tiden lige nu
$tid_nu = time();

// $data[sidst_aktiv] er en time() om hvornår brugeren loggede ind, indsættes når brugeren logger ind
$kickout = $time_now-$data[sidst_aktiv];

// Hvis der går mere end 60 sekunder siden brugeren sidst var aktiv så bliver han slettet fra online_nu
if($kickout >= 60) {
mysql_query("DELETE FROM online_nu") or die(mysql_error());
}
}

Problemet ligger i at hvis der er 1 bruger som ikk har været aktiv i 60 sekunder så bliver alle slettet, hvordan definere jeg sådan at det kun er den enkelte bruger som ryger ud?
Avatar billede angam Nybegynder
26. maj 2005 - 21:41 #1
$kickout = $time_now-$data[sidst_aktiv];

skal vel være

$kickout = $time_nu-$data[sidst_aktiv];

men til spørgsmålet:
Du mangler at angive et id på den bruger der skal slettes i din delete-clause:

mysql_query("DELETE FROM online_nu") or die(mysql_error());

bør være noget i stil med

$id = $data['id'];
mysql_query("DELETE FROM online_nu where id = $id") or die(mysql_error());

(forudsat brugerens id er id naturligvis)
Avatar billede sungdk Nybegynder
26. maj 2005 - 21:41 #2
$kickout = $time_now-$data[sidst_aktiv];

Skal rettes til $kickout = $time_nu-$data[sidst_aktiv];
Avatar billede subit Nybegynder
26. maj 2005 - 21:43 #3
ja undskyld min fejl, time_now var rettet til time_nu.
men angom, ved godt der skal defineres hvilken bruger der skal smides ud men det er der mit problem er, ved ikk hvordan jeg finder det :'(
Avatar billede angam Nybegynder
26. maj 2005 - 21:47 #4
subit, det trækker du jo ud i din select oven over.


Men du kan faktisk gøre det hele endnu nemmere:

$kicktime = time() - 60;
"DELETE FROM online_nu WHERE sidst_aktiv < $kicktime"

.. her sletter vi alle brugere der ikke har været online inden for de sidste 60 sekunder. Ingen select-request og ingen løkke.
Avatar billede sungdk Nybegynder
26. maj 2005 - 21:48 #5
while($data = mysql_fetch_array($foresp)) {

Du har selv udtrukker "foo'et" som $data. Dvs. $data indeholder brugernes data som er online_nu.

Så angam's eksempel kan sagtens bruges..
Avatar billede subit Nybegynder
26. maj 2005 - 22:04 #6
okay tak for hjælpen, det virker.
Nogle svare ville være fremragende.
Avatar billede angam Nybegynder
26. maj 2005 - 22:08 #7
Svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester