Avatar billede dj-meisner Nybegynder
14. juli 2005 - 23:15 Der er 31 kommentarer

Indsætte et stykke kode når brugeren logget på.

Hej!!!
Jeg har et problem..
Er det ikke muligt at lave sådan når en bruger logger ind, så skal den indsætte en div?

Altså fx.
Vi siger jeg er online på mit community.
Så er der en bruger som logger ind på communitet, så skal den sige "Brugernavn er netop logget på!"

Det skal siges informationerne opdateres hvert 1 sekundt..

Please hjælp!!!
Avatar billede mysli Nybegynder
14. juli 2005 - 23:49 #1
Du kunne sættet tidspunktet de logger på ind i databasen - og i det script der opdaterer hvert minut hente de hændelser der er sket inden for det sidste minut. Meget simpelt
Avatar billede dj-meisner Nybegynder
14. juli 2005 - 23:52 #2
Ja, den indsætte "time();", men hvordan vil if-sætningne så se ud?
if ($udtrak[time] < 1)
jaaa

else

bah
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 00:11 #3
er det så ikke noget med..
<?php
include("db.php");
$hent = mysql_query("SELECT * FROM brugere WHERE online = 'ja'");
while ($row = mysql_fetch_array($hent))
{
$tid    =  date('U');
if ($tid+1 > $row[timeout)
{
echo "".$row[navn]." er logget på";
} else {
echo "";
}
}
?>
Avatar billede mysli Nybegynder
15. juli 2005 - 00:26 #4
$time = time() - 60;

SQL streng: SELECT * FROM brugere WHERE logintidspunkt > $time.

Ved ikke hvordan dit onlinebrugersystem virker.
Avatar billede mysli Nybegynder
15. juli 2005 - 00:29 #5
$time = time() - 1
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 00:35 #6
Ja, men den skal jo udskrive "Brugeren er logget ind!" når jeg er online også.. gerne som alert sådan jeg ved det virker
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 00:59 #7
<?php
$time = time() - 1;
$sdsd = mysql_query("SELECT * FROM online WHERE date > $time");
$zzz = mysql_fetch_array($sdsd);
echo "<script>alert('$zzz[navn] er logget på'); </script>";
  } else {
echo "";
}
?>

???
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 01:05 #8
Jeps, men nu siger den jo hele tiden "ding" med popupen, den skal kun vises én gang!!!
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 01:05 #9
<?php
$time = time() - 1;
$sdsd = mysql_query("SELECT * FROM online WHERE date > $time");
$zzz = mysql_fetch_array($sdsd);
echo "<script>alert('$zzz[navn] er logget på'); </script>";
}
?>
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 13:44 #10
Hallo?
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 14:59 #11
hallO?=!?"!"?!?"?"!??!?!?!?!?!?!?!?!?!?!?!
Avatar billede mysli Nybegynder
15. juli 2005 - 17:46 #12
Hvad er problemet med det du har prøvet indtil nu?
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 18:35 #13
Ligenu har jeg:
<?php
session_start();
include("db.php");
$tid = date("U");
$time = $tid-2;
$sdsd = mysql_query("SELECT * FROM online WHERE bruger <> '$_SESSION[brugernavn]' AND date > $tid - 2");
$zzz = mysql_fetch_array($sdsd);
echo "<script>alert('$zzz[navn] er logget på'); </script>";
?>
<script>setTimeout("location.reload(true)",2000);</script>

Virker ikke, sig mig hvorfor ?-)
Den udskriver bare i en alert = " er logget på" uden navn :S
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 22:14 #14
..?
Avatar billede mysli Nybegynder
15. juli 2005 - 23:19 #15
$tid = time() - 2;

$count = mysql_query("SELECT count(*) FROM  brugere WHERE date > $tid");

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE bruger <> '$_SESSION[brugernavn]' AND date > $tid - 2");
$zzz = mysql_fetch_array($sdsd);
echo "<script>alert('$zzz[navn] er logget på'); </script>";

}

Nu udskriver den kun alert hvis der er noget der er logget på inden for de sidste 2 sek.
Avatar billede dj-meisner Nybegynder
15. juli 2005 - 23:48 #16
Nu har jeg:

<?php
session_start();
include("db.php");
$dato = date("U");
$tid = $dato;

$count = mysql_query("SELECT count(*) FROM  brugere WHERE timeout > $tid");

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE bruger <> '$_SESSION[brugernavn]' AND date > $tid - 2");
$zzz = mysql_fetch_array($sdsd);
echo "<script>alert('$zzz[bruger] er logget på'); </script>";

}
?><script>setTimeout("location.reload(true)",2000);</script>


også når en bruger logget ind får de "date("U")" ind i "timeout", men den udskriver hele tiden en alert med det samme? hvorfor?
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 01:15 #17
Er du der?
Avatar billede mysli Nybegynder
16. juli 2005 - 12:29 #18
Det skyldes at du selv er logget ind.
if ($zzz['bruger'] != $_SESSION['brugernavn']){

echo "<script>alert('$zzz[bruger] er logget på'); </script>";

}
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 16:29 #19
Virker ikke?
Den udskriver det samme.

Se her:
Min tabel "online" ->

CREATE TABLE `online` (
  `id` int(4) NOT NULL auto_increment,
  `bruger` varchar(200) NOT NULL default '',
  `date` varchar(200) NOT NULL default '',
  `ip` varchar(200) NOT NULL default '',
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=19 ;


også tabellen brugere:
CREATE TABLE `brugere` (
  `id` int(4) NOT NULL auto_increment,
  `brugernavn` varchar(200) NOT NULL default '',
  `kodeord` varchar(200) NOT NULL default '',
  `online` varchar(200) NOT NULL default '',
  `clothes` varchar(200) NOT NULL default '1',
  `haar` varchar(200) NOT NULL default '1',
  `tilbehor` varchar(200) NOT NULL default '1',
  `oprettet` varchar(200) NOT NULL default '',
  `timer` int(11) NOT NULL default '0',
  `motrikker` int(11) NOT NULL default '0',
  `topid` varchar(200) NOT NULL default '0',
  `leftid` varchar(200) NOT NULL default '0',
  `rum` varchar(200) NOT NULL default '2.jpg',
  `feltid` varchar(200) NOT NULL default '0',
  `kon` varchar(200) NOT NULL default '',
  `zindex` varchar(200) NOT NULL default '',
  `email` varchar(200) NOT NULL default '',
  `navn` varchar(200) NOT NULL default '',
  `fritekst` text NOT NULL,
  `alder` varchar(200) NOT NULL default '',
  `timeout` varchar(200) NOT NULL default '',
  `timer2` varchar(200) NOT NULL default '',
  `point` varchar(200) NOT NULL default '',
  `bindex` varchar(200) NOT NULL default '',
  `status` varchar(200) NOT NULL default 'alm',
  `order` varchar(200) NOT NULL default '',
  `aktiv` varchar(200) NOT NULL default '',
  `humor` varchar(200) NOT NULL default 'glad',
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=34 ;



også selve koden:


<?php
session_start();
include("db.php");
$dato = date("U");
$tid = $dato;

$count = mysql_query("SELECT count(*) FROM  brugere WHERE timeout > $tid");

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE bruger <> '$_SESSION[brugernavn]' AND date > $tid - 2");
$zzz = mysql_fetch_array($sdsd);
if ($zzz['bruger'] != $_SESSION['brugernavn']){

echo "<script>alert('$zzz[bruger] er logget på'); </script>";

}

}
?><script>setTimeout("location.reload(true)",2000);</script>
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 16:29 #20
men den udskriver bare " er logget på" i en popup.. så det passer jo ikke?
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 16:32 #21
og den gør det hele tiden
Avatar billede mysli Nybegynder
16. juli 2005 - 17:49 #22
<?php
session_start();
include("db.php");
$dato = date("U");
$tid = $dato -2;

$count = mysql_query("SELECT count(*) FROM  brugere WHERE date > $tid");

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE date > $tid");
$zzz = mysql_fetch_array($sdsd);
if ($zzz['bruger'] != $_SESSION['brugernavn']){

echo "<script>alert('$zzz[bruger] er logget på'); </script>";

}

}
?><script>setTimeout("location.reload(true)",2000);</script>
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 18:12 #23
Virker stadig ikke? Og det er WHERE timeout > $tid ikke date i brugere..
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 18:15 #24
Den udskriver en popup hele tiden
Avatar billede mysli Nybegynder
16. juli 2005 - 21:06 #25
Jeg kan ikke rigtig finde ud af hvordan dit system virker.

Hvad bliver ændret når en person logger på?
Avatar billede dj-meisner Nybegynder
16. juli 2005 - 21:35 #26
Nu har jeg fundet frem til dette..

<?php
session_start();
include("db.php");
$dato = date("U");
$tid = $dato-2;
$count = mysql_result(mysql_query("SELECT count(*) FROM brugere WHERE timeout > $tid"), 0);

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE date > $tid");
while ($zzz = mysql_fetch_array($sdsd)) {
  if ($zzz['bruger'] != $_SESSION['brugernavn']){
    echo "<script>alert('$zzz[bruger] er logget på'); </script>";
  }
}
}
?><script>setTimeout("location.reload(true)",2000);</script>


Når en bruger logger ind på chatten får han sat DATE("U"); ind i "timeout" i "brugere"

Når han så kommer helt online så kommer han ind i tabellen "online" med kolonnen "date" som DATE("U"); igen.

Når de andre ser siden opdatere den hele tiden:

<?php
session_start();
include("db.php");
$dato = date("U");
$tid = $dato-2;
$count = mysql_result(mysql_query("SELECT count(*) FROM brugere WHERE timeout > $tid"), 0);

if ($count > 0){

$sdsd = mysql_query("SELECT * FROM online WHERE date > $tid");
while ($zzz = mysql_fetch_array($sdsd)) {
  if ($zzz['bruger'] != $_SESSION['brugernavn']){
    echo "<script>alert('$zzz[bruger] er logget på'); </script>";
  }
}
}
echo "$zzz[date] - $_SESSION[brugernavn]";
?><script>setTimeout("location.reload(true)",2000);</script>


- Men den udskriver intet, hvorfor?
Avatar billede mysli Nybegynder
17. juli 2005 - 02:55 #27
Udskriver den stadig bare en alert uden navn?

Ellers kan du starte med at lave en var_dump() på variablerne og se hvad de indeholder.
Avatar billede dj-meisner Nybegynder
17. juli 2005 - 03:03 #28
hey.. Nu udskriver den altså slet ikke noget
Avatar billede dj-meisner Nybegynder
17. juli 2005 - 03:04 #29
Kan det være fordi det tager 8 sekunder før man bliver sat ind i tabellen "online" efter at man har fået sat date("U"); ind i brugere med timeout??

Tager 8 sekunder at loade chattens dataer..
Avatar billede mysli Nybegynder
17. juli 2005 - 12:28 #30
Hvis den tid der bliver sat ind i online er 8 sekunder efter, så kan det godt have noget med det at gøre. Hvorfor tager det 8 sekunder, synes det er utrolig lang tid.
Avatar billede dj-meisner Nybegynder
17. juli 2005 - 15:08 #31
Ja, den skal jo loade alt. Men jeg fixer lige sådan at timeout og online bliver sat ind samtidigt!
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