Avatar billede web-geek Nybegynder
20. september 2004 - 20:53 Der er 29 kommentarer og
1 løsning

Vise timer, minutter, sekunder

Når en bruger logger på min chat sætter jeg time(); igang og opdater den i databasen hele tiden.

Hvordan gør jeg sådan når man logger ud så stopper time(); + den indsættes i databasen?

Og bagefter skal den kører videre der fra, hvor den stoppede sidst.

Og hvordan viser man så Timer - Minutter - Sekunder?
Avatar billede detox Nybegynder
20. september 2004 - 21:16 #1
Antallet af sekunder får du ved at gemme time() når man logger ind:

$log_ind_tid = time();

Når man så logger ud:

$sekunder = time() - $log_ind_tid;

Timer, min og sek kan så fås med:

$tim = floor($sekunder/3600);
$min = ($sekunder/60)%60;
$sek = $sekunder%60;
Avatar billede web-geek Nybegynder
20. september 2004 - 21:25 #2
Altså i min logout det det sådan her ud:

<?
if(isset($_POST[brugernavn])) {
  mysql_query("UPDATE brugere SET felt='0', timeout = time()-$time() WHERE felt='$_GET[felt]'") or die(mysql_error());
  echo "$_GET[brugernavn]";
}
?>



Hvordan laver jeg det?
Avatar billede web-geek Nybegynder
20. september 2004 - 21:50 #3
den udskriver:

Onlinetid:
304364 - 1 - 10
Avatar billede web-geek Nybegynder
20. september 2004 - 21:50 #4
$sekunder = $row[timeout];
$tim = floor($sekunder/3600);
$min = ($sekunder/60)%60;
$sek = $sekunder%60;

sådan ser det ud.
Avatar billede web-geek Nybegynder
20. september 2004 - 21:56 #5
hallo?
Avatar billede detox Nybegynder
20. september 2004 - 22:07 #6
Du skal ikke bruge parenteser efter en variabel:

timeout = time()-$time()

skal være:

timeout = time()-$time

og $time skal her være login tidspunktet.
Avatar billede web-geek Nybegynder
20. september 2004 - 22:10 #7
mysql_query("UPDATE brugere SET felt='0',timeout = time()-$time WHERE felt='$_GET[felt]'") or die(mysql_error());


?
Avatar billede detox Nybegynder
20. september 2004 - 22:14 #8
Hvorfor laver du ikke 2 felter, login_tid og logud_tid? Så kan du jo bare trække de to fra hinanden.
Avatar billede web-geek Nybegynder
20. september 2004 - 22:17 #9
Den udskiver bare de største tal, med 20302302 osv. :(

Kan jeg ikke hitte ud af tror jeg!
Avatar billede web-geek Nybegynder
20. september 2004 - 22:19 #10
(1. Ok hør, når den skal tælle time(); ved en php fil hvad skriver jeg så?

(2. Og hvad skal jeg skrive når man skal logge ud?

(3. Og hvad skal jeg skrive når den skal udskrives?
Avatar billede detox Nybegynder
20. september 2004 - 22:26 #11
Du gemmer tidspunktet ved login:

login_tid = time()

ved logout (eller undervejs) henter du login_tid og finder antal sekunder med:

$sekunder = time() - $row['login_tid'];

Ved logout opdaterer du et felt i tabellen med total_tid:

set total_tid = total_tid + $sekunder

Så kan du vise tim, min og sek som jeg viste dig tidligere.
Avatar billede web-geek Nybegynder
20. september 2004 - 22:32 #12
Akltså når man er på chatten laver jeg:
$tid = time();

også når man er på vej til at loggeud:

$sekunder = time() - $row['tid'];

og ved mysql_query = set timer = tid + $sekunder
Avatar billede web-geek Nybegynder
20. september 2004 - 22:34 #13
mysql_query = set timer = tid + $sekunder

til:

mysql_query(UPDATE chatbrugere set timer = '$tid+$sekunder'");
Avatar billede web-geek Nybegynder
20. september 2004 - 22:35 #14
foran UPDATE '  "  ' :)
Avatar billede detox Nybegynder
20. september 2004 - 22:37 #15
Nok nærmere:

mysql_query("UPDATE chatbrugere set timer = timer+$sekunder");

og felterne skal være af typen: INT
Avatar billede detox Nybegynder
20. september 2004 - 22:38 #16
Se dette eksempel:

<?
$login = 1095705680; // 20-09-2004 20:41:20

$s = time() - $login;

$tim = floor($s/3600);
$min = ($s/60)%60;
$sek = $s%60;
echo 'Log ind: ' . date('d-m-Y H:i:s', $login) . "<br />";
echo 'Log out: ' . date('d-m-Y H:i:s') . "<br /><br />";
echo "$tim time(r), $min minut(ter), $sek sekund(er)";
?>
Avatar billede web-geek Nybegynder
20. september 2004 - 22:46 #17
Forstår ikke en meter, er virkelig ked af det.

kan du ikke skrive fra <? til ?> og i hvilken fil den skal være i feks,

index filen (her skal den tæller fra)
<?php echo "bla, bla bla"; ?>

se_profil.php (her vises timerne osv)
<?php echo "bla bla bla"; ?>

logud.php(Her logger man ud)
<?php echo "bla bla bla"; ?>
Avatar billede detox Nybegynder
20. september 2004 - 22:58 #18
Det er nu meget enkelt. Du skal bruge 3 felter af typen INT i din tabel:
login_tid, logout_tid og total_tid.

Ved login sætter du: login_tid = time()
Ved logout sætter du: logout_tid = time()
og: total_tid = total_tid + time() - login_tid

Så kan du til hver en tid finde antal sekunder med:

$sekunder = time() - $row['login_tid'];

og det totale antal sekunder ligger i:

$alle_sekunder = $row['total_tid'];

Når du har et antal sekunder, kan du bruge mit eksempel til at udregne tim, min og sek.
Jeg har desværre ikke mere tid nu, så du må selv lave detaljerne ;O)
Avatar billede web-geek Nybegynder
20. september 2004 - 23:30 #19
Kan ikke finde ud af sorry, venter tilimorgen hvor måske nogle andre kan, så får du nogel point også.
Avatar billede detox Nybegynder
20. september 2004 - 23:42 #20
Ok, jeg lavede lige et færdigt eksempel på falderebet.
Tabellen 'chatbrugere' skal bruge 3 felter af typen INT: 'login', 'logout' og 'total'.

<?
session_start();
require 'db.php'; // Forbindelse til databasen
$bruger = 'detox'; // Brugernavn

function sek2tid($s) {
    $tim = floor($s/3600);
    $min = ($s/60)%60;
    $sek = $s%60;
    return "$tim time(r), $min minut(ter), $sek sekund(er)";
}

if (isset($_SESSION['login'])) {
    unset($_SESSION['login']);
    mysql_query("update chatbrugere set logout=".time().", total=total+".time()."-login where bruger='$bruger'");
    $res = mysql_query("select * from chatbrugere where bruger='$bruger'");
    $row = mysql_fetch_assoc($res);
    echo "Logged out<br /><br />";
    echo 'Log ind: ' . date('d-m-Y H:i:s', $row['login']) . "<br />";
    echo 'Log out: ' . date('d-m-Y H:i:s') . "<br /><br />";
    echo "Tid på: ".sek2tid($row['logout']-$row['login'])."<br />";
    echo "Total: ".sek2tid($row['total']);
} else {
    $_SESSION['login'] = 1;
    mysql_query("update chatbrugere set login=".time()." where bruger='$bruger'");
    echo "Logged in<br /><br />";
    echo 'Log ind: ' . date('d-m-Y H:i:s') . "<br />";
}
?>
Avatar billede detox Nybegynder
20. september 2004 - 23:43 #21
Så håber jeg du kan rette din egen kode til ud fra det :O)
Avatar billede detox Nybegynder
20. september 2004 - 23:45 #22
PS: Den 'logger på' ved load og 'logger af' ved reload.
Avatar billede web-geek Nybegynder
21. september 2004 - 00:38 #23
Her er min LOGIN.php:


<?
session_start();
include "db.php";
?>
<html>
<head>
<title>Hotel-net.dk</title>
<meta name="generator" content="Namo WebEditor v6.0(Trial)">
</head>
<body background="bg_sider.bmp">
<font size="2" face="Verdana">
<?
if(isset($_POST[brugernavn])) {
  $sql = mysql_query("SELECT * FROM chatbrugere WHERE brugernavn='$_POST[brugernavn]' AND kode='$_POST[kode]'") or die(mysql_error());
  $num = mysql_num_rows($sql);

  if($num == 0) {
    echo "<font color=red>*</font> Forkerte dataer.";
    } else {
?>
Hej <?php echo "$_POST[brugernavn]"; ?> velkommen til Hotel-net. Du har du disse funktioner:<br><a href="java script:void(window.open('chat/index_chat.php','_blank','width=675,height=348,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no'))">Log på chatten</a>
<?
$random = rand(0,36);

    mysql_query("UPDATE chatbrugere SET online='1', felt='$random' WHERE brugernavn='$_POST[brugernavn]'") or die(mysql_error());
    $_SESSION[brugernavn] = $_POST[brugernavn];
    exit;
  }
}
?>
<form action="login.php" method="POST">
<font size="1" face="Verdana">
Brugernavn:<br>
<input type="text" name="brugernavn" style="border: 1px #000000 solid; font-size: 9px; font-family: Verdana;">
<br><br>
Adgangskode:<br>
<input type="password" name="kode" style="border: 1px #000000 solid; font-size: 9px; font-family: Verdana;"><br>

<input type="submit" value="Login!" style="width: 114px; border: 1px #000000 solid; font-size: 9px; font-family: Verdana; background-color: #FFFFFF;">
</form>
Avatar billede web-geek Nybegynder
21. september 2004 - 00:39 #24
Den skal ikke skrive hvor mange timer man har dér! Kun i se_profil.php som er her:

<?php
session_start();
include("db.php");
if(isset($_SESSION[brugernavn])) {
?>
<html>
<head>
<title>Hotel-net.dk</title>
</head>
<font face=Verdana size=1 color=black>

<body bgcolor="D4E6FA">
<?php
include("db.php");
$query = mysql_query("SELECT * FROM chatbrugere WHERE brugernavn='$_GET[brugernavn]'") or die(mysql_error());
$row = mysql_fetch_array($query);
$sekunder = $row[timeout];
$tim = floor($sekunder/3600);
$min = ($sekunder/60)%60;
$sek = $sekunder%60;

echo "<h2><b>$row[brugernavn]</b></h2>";
?>

<table width="163" cellpadding="0" cellspacing="0">
    <tr>
        <td width="163" bgcolor="EEEEEE"><b><font size="1" face="Verdana">IRL Navn:</font></b></td>
    </tr>
    <tr>
        <td width="163" height="23"><font size="1" face="Verdana"><?php echo htmlentities($row['irlnavn']); ?></font></td>
    </tr>
    <tr>
        <td width="163"  bgcolor="EEEEEE"><b><font size="1" face="Verdana">Alder:</font></b></td>
    </tr>
    <tr>
        <td width="163" height="23"><font size="1" face="Verdana"><?php echo htmlentities($row['alder']); ?></font></td>
    </tr>
    <tr>
        <td width="163"  bgcolor="EEEEEE"><b><font size="1" face="Verdana">MSN:</font></b></td>
    </tr>
    <tr>
        <td width="163" height="23"><font size="1" face="Verdana"><?php echo htmlentities($row['msn']); ?></font></td>
    </tr>
    <tr>
        <td width="163"  bgcolor="EEEEEE"><b><font size="1" face="Verdana">Onlinetid:</font></b></td>
    </tr>
    <tr>
        <td width="163" height="23"><font size="1" face="Verdana"><i><?php echo "$tim timer,  $min min.  $sek sekunder."; ?></i></font></td>
    </tr>
</table>

<table width="163" cellpadding="0" cellspacing="0">
    <tr>
        <td width="163" bgcolor="EEEEEE"><b><font size="1" face="Verdana">Fritekst:</font></b></td>
    </tr>
    <tr>
        <td width="163"><font size="1" face="Verdana"><i><?php echo htmlentities($row['fritekst']); ?> </i></font></td>
    </tr>
</table>
<p><?php
} else {
echo "Du er ikke logget ind.";
}
?></p>
Avatar billede web-geek Nybegynder
21. september 2004 - 00:40 #25
Og logout.php:

<?
session_start();
include "db.php";
?>


<?
if(isset($_POST[brugernavn])) {

  mysql_query("UPDATE brugere SET felt='0',timeout = time()-$time WHERE felt='$_GET[felt]'") or die(mysql_error());
  echo "$_GET[brugernavn]";
}
?>
Du er nu logget ud.
Avatar billede web-geek Nybegynder
21. september 2004 - 00:40 #26
Håber du vil sætte det ind i alle de koder, så kan du få 150 point.
Avatar billede web-geek Nybegynder
21. september 2004 - 15:56 #27
Please ;)
Avatar billede web-geek Nybegynder
22. september 2004 - 07:43 #28
Øv bøv, en der kan?
Avatar billede web-geek Nybegynder
22. september 2004 - 18:04 #29
Ikke nogle?? :(
Avatar billede web-geek Nybegynder
26. september 2004 - 23:26 #30
lukker
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