Avatar billede sputii Nybegynder
08. maj 2009 - 19:05 Der er 40 kommentarer og
1 løsning

PHP Date. efter 1 time gør et eller andet.

Er der nogen der ved hvordan jeg laver fx.

Efter en time skal det gøre et eller andet.

Her er noget med date:
http://www.w3schools.com/php/php_ref_date.asp
Avatar billede jakobdo Ekspert
08. maj 2009 - 19:28 #1
Snakker vi hvis f.eks. vi siger tidspunktet nu er:

1930, så skal der ske noget klokken 2030 ?
Eller hvad mener du ?
Avatar billede webweaver Praktikant
08. maj 2009 - 19:35 #2
Brug Unix Epoch.
Avatar billede sputii Nybegynder
08. maj 2009 - 20:47 #3
jakobdo => Ja.
Avatar billede sputii Nybegynder
08. maj 2009 - 20:48 #4
Eller nej Ups
Avatar billede sputii Nybegynder
08. maj 2009 - 20:48 #5
Vis du klikker på en knap og så går der en time og så sker der et eller andet
Avatar billede jakobdo Ekspert
08. maj 2009 - 20:51 #6
Det kan du lave på 2 måder.

Du kan lave det med javascript og det vil kun virke hvis brugeren ikke lukker sit browser vindue.

Eller du kan lave det med et cronjob, så den opretter et crojob på din server, som så afvikles om x antal timer/minutter/dage etc...
Avatar billede sputii Nybegynder
08. maj 2009 - 21:32 #7
Okey.. Kan du give mig et eksempel?
Avatar billede jakobdo Ekspert
08. maj 2009 - 21:37 #8
På hvad ?
Avatar billede sputii Nybegynder
08. maj 2009 - 21:40 #9
På:

Eller du kan lave det med et cronjob, så den opretter et crojob på din server, som så afvikles om x antal timer/minutter/dage etc...
Avatar billede jakobdo Ekspert
08. maj 2009 - 21:48 #10
Har du cronjob på din server ?
Avatar billede sputii Nybegynder
08. maj 2009 - 21:58 #11
Nej det tror jeg ikke..
Men kan du give mig et på javescript..

Så må jeg bare igang med at lære det.
Avatar billede jakobdo Ekspert
08. maj 2009 - 22:01 #12
Avatar billede sputii Nybegynder
08. maj 2009 - 22:04 #13
Ja.

Godt nemt eksempel.

Point så lav et svar.
Avatar billede jakobdo Ekspert
08. maj 2009 - 22:21 #14
Svar!
Avatar billede sputii Nybegynder
09. maj 2009 - 09:29 #15
Så værsgo da.
Avatar billede jakobdo Ekspert
09. maj 2009 - 12:20 #16
Takker for point.
Avatar billede sputii Nybegynder
09. maj 2009 - 14:49 #17
Okey.. Hved du om jeg kan det her?

<html>
<head>
<script type="text/javascript">
function timedMsg()
{
var t=setTimeout("alert('<?php ?>')",5000);
}
</script>
</head>

<body>
<form>
<input type="button" value="Display timed alertbox!" onClick = "timedMsg()">
</form>
<p>Click on the button above. An alert box will be displayed after 5 seconds.</p>
</body>

</html>
Avatar billede jakobdo Ekspert
09. maj 2009 - 20:29 #18
Altså hvad ønsker du der skal ske her:

<?php ?>

Du kan godt indsætte noget output fra php, men du kan ikke kalde en php funktion.
Så skal du anvende noget ajax eller lign, som så kalder en side, der udfører et eller andet.
javascript løsningen er dog noget SKIDT, da det jo kræver browseren står med vinduet åbent i så og så lang tid.
Avatar billede sputii Nybegynder
09. maj 2009 - 21:38 #19
Nåår.

Tak.. :D

Kan du så give mig et exsempel på det andet?
Avatar billede sputii Nybegynder
09. maj 2009 - 21:41 #20
Altsår cronjob.
Avatar billede jakobdo Ekspert
09. maj 2009 - 22:17 #21
Det kræver som sagt du har egen server.
Og i bund og grund er det bare en tekst fil, som indeholder nogle data.

Du kan få lidt hjælp her:

http://www.thepcmanwebsite.com/crontab_generator.shtml
Avatar billede sputii Nybegynder
09. maj 2009 - 23:16 #22
Okey. Jeg fortæller lige hvad det er jeg er igang med at lave.

Jeg har købt et webhotel.

Og det jeg har lavet er at der er en knap og når man klikker på den skal der gå 1 time og man for en speciel gave. Og man skal kunne lukke sin browser ned imens.

Så det ville være godt vis du kunne give mig et exsempel på det i
http://www.thepcmanwebsite.com/crontab_generator.shtml
Avatar billede jakobdo Ekspert
10. maj 2009 - 12:03 #23
Så kan du jo lave det på en anden måde.

Når man trykker på knappen, indsætter den følgende i en database.

BRUGER_ID, TID_FOR_TRYK
Brugerens_id, NOW()

Når så brugeren kommer online igen, så tjekker du bare:

if(tid_for_tryk > 1 time)
//Du skal da have en gave...
else
//Du får først din gave, når der er gået en time.

Og hvis ikke du har evnerne til denne opgave, så tror jeg du skal starte med at sætte dig lidt ind i php.
Avatar billede sputii Nybegynder
10. maj 2009 - 13:34 #24
Nej nej..

Det kan jeg.

Mange Tak :D
Avatar billede sputii Nybegynder
10. maj 2009 - 13:38 #25
Avatar billede jakobdo Ekspert
10. maj 2009 - 13:44 #26
Jo, du gemmer dato som datetime.
Avatar billede sputii Nybegynder
10. maj 2009 - 13:59 #27
Hvad hedder den?

For jeg kan ikke finde nogen datetime()
Avatar billede sputii Nybegynder
10. maj 2009 - 14:12 #28
Det er fint der her tror jeg.

$time = date("H:i:s");
Avatar billede jakobdo Ekspert
10. maj 2009 - 16:57 #29
Nej, datetime er en mysql datatype.
I mysql kan du få tiden nu, ved NOW().
I php kan du få tiden nu, ved time();
Avatar billede sputii Nybegynder
11. maj 2009 - 11:52 #30
Hvordan?? Har et lille eksempel på det jeg har lavet.
Men det virker ikke?

if(isset($_POST[Gave_x]))
{
$datetime = date("H");
$datatime = mysql_query("SELECT * FROM TimeMytesion");
$row = mysql_fetch_array($datatime);
$onetime = mktime(date("H")-1,0,0,0,0,0);
$donetime = date("H", $onetime);
$brugernavntodata = $_SESSION['brugernavn'];

if($row['TimeOnClick'] <= $donetime)
{
mysql_query("UPDATE TimeMytesion SET TimeOnClick = $datetime
WHERE TimeBrugernavn = $brugernavntodata");
echo "Du er begyndt at bygge en gave.";
}
else
{
echo "Du er allerede i gang med at lave en gave.";
}
}
Avatar billede andreas13_fam Nybegynder
11. maj 2009 - 15:07 #31
Har lidt svært ved at forstå din kode, da det er længe siden jeg har lavet noget med time og date, så jeg har prøvet selv, forhåbentlig det kan give lidt ideer.
PS: jeg tror at der mangler nogle '' i din mysql. Men prøv at sig hvor den står af, opdatere den databasen, eller kommer der en fejlmeddelelse.

Som sagt er den utestet.

<?php
if(isset($_POST['gave']))
{
$timestamp = strtotime("+1 hour",time()); //finder nu + 1 time

mysql_query("UPDATE TimeTest SET `timestamp` = '".$timestamp."' WHERE Brugernavn = '".$_SESSION['brugernavn']."'"); //opdaterer timestamp

echo 'Databasen opdateret vent en time og modtag din gave.'; //vent en time
}
else
{
$tjektime = mysql_query("SELECT `timestamp` FROM TimeTest WHERE Brugernavn = '".$_SESSION['brugernavn']."'"); //henter data
$row = mysql_fetch_array($datatime); //henter
    if ($row['timestamp'] <) time()) //tjekker om forige timestamp er mindre en "nu timestamp"
    {
    echo 'Tilykke du har modtaget din gave'; //udskriver
    }
    else //hvis der ikke er gået en time
    {
    $mangler = ($row['timestamp'] - time()); //finder timestamp forskeld
    $convert = date("H:i:s",$mangler); //conventer til time:minut:sekund
    echo 'Du skal stadig vente"'.$convert.''; //udskriver
    }
}
?>
Avatar billede sputii Nybegynder
11. maj 2009 - 15:46 #32
if ($row['timestamp'] <) time()) //tjekker om forige timestamp er mindre en "nu timestamp"

Skulle vis være:

if ($row['timestamp'] < time()) //tjekker om forige timestamp er mindre en "nu timestamp"

Og en ting til.. Vis du nu klikker på gaven igen så gør du det 2 gange og det skal man ikke kunne før den er færdig. Det vil sige man kan gøre det uendeligt.
Avatar billede sputii Nybegynder
11. maj 2009 - 16:39 #33
Så må det være noget alla:

<?php
if(isset($_POST['gave']))
{
$timestamp = strtotime("+1 hour",time()); //finder nu + 1 time
$tjektime = mysql_query("SELECT `timestamp` FROM TimeTest WHERE Brugernavn = '".$_SESSION['brugernavn']."'"); //henter data
$row = mysql_fetch_array($tjektime); //henter

if ($row['timestamp'] < time())
{
mysql_query("UPDATE TimeTest SET `timestamp` = '".$timestamp."' WHERE Brugernavn = '".$_SESSION['brugernavn']."'"); //opdaterer timestamp

echo 'Databasen opdateret vent en time og modtag din gave.'; //vent en time
}
}
else
{
$tjektime = mysql_query("SELECT `timestamp` FROM TimeTest WHERE Brugernavn = '".$_SESSION['brugernavn']."'"); //henter data
$row = mysql_fetch_array($tjektime); //henter
    if ($row['timestamp'] < time()) //tjekker om forige timestamp er mindre en "nu timestamp"
    {
    echo 'Tilykke du har modtaget din gave'; //udskriver
    }
    else //hvis der ikke er gået en time
    {
    $mangler = ($row['timestamp'] - time()); //finder timestamp forskeld
    $convert = date("H:i:s",$mangler); //conventer til time:minut:sekund
    echo 'Du skal stadig vente"'.$convert.''; //udskriver
    }
}
?>
Avatar billede sputii Nybegynder
11. maj 2009 - 16:58 #34
Okey Har lige testet.
Det virker ikke.
Koden ser sådan her ud:

<?php
if($_GET['view'] == jobs)
{
if(isset($_POST['JobIngeneor_x']))
{
$timestamp = strtotime("+1 hour",time()); //finder nu + 1 time
$tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$_SESSION['brugernavn']."'"); //henter data
$row = mysql_fetch_array($tjektime); //henter

if ($row['timestamp'] < time())
{
mysql_query("UPDATE TimeMytesion SET `TimeOnClick` = '".$timestamp."' WHERE TimeBrugernavn = '".$_SESSION['brugernavn']."'"); //opdaterer timestamp

echo 'Du er ingeniør i en time'; //vent en time
}
}
else
{
$tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$_SESSION['brugernavn']."'"); //henter data
$row = mysql_fetch_array($tjektime); //henter
    if ($row['timestamp'] < time()) //tjekker om forige timestamp er mindre en "nu timestamp"
    {
    }
    else //hvis der ikke er gået en time
    {
    $mangler = ($row['timestamp'] - time()); //finder timestamp forskeld
    $convert = date("H:i:s",$mangler); //conventer til time:minut:sekund
    echo 'Du er allerede i gang med at arbejde. Vent "'.$convert.''; //udskriver
    }
}
?>
Jobs<br>
<form action="play.php?view=jobs" method="post">
<input type="image" src="ingeneor.jpg" name="JobIngeneor" title="Bliv Ingeniør">
</form>
<?php
}
?>
Avatar billede sputii Nybegynder
11. maj 2009 - 17:04 #35
Ohh..

Den udskriver det i Unix timestamp..
Avatar billede andreas13_fam Nybegynder
11. maj 2009 - 18:22 #36
<?php
header('Content-type: text/html; charset=utf-8');
header('Content-Language: da');
$username = "test";
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("eksperten") or die(mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>TEST</title>
</head>
<body>
<?php
if($_GET['view'] == "jobs")
{
    if(isset($_POST['JobIngeneor']))
    {
        $timestamp = strtotime("+1 hour",time()); //finder nu + 1 time
        echo 'NU: '.time().'<br>';
        echo 'NU + 1 time: '.$timestamp.'<br>';
        echo 'Brugernavn: '.$username.'<br>';
        $tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //henter data
        $row = mysql_fetch_array($tjektime); //henter
       
        echo 'DATABASE TID: '.$row['TimeOnClick'].'<br>';
       
        if ($row['TimeOnClick'] < time())
        {
        echo 'VIDRE: update <br>';
        mysql_query("UPDATE TimeMytesion SET `TimeOnClick` = '".$timestamp."' WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //opdaterer timestamp
        echo 'Du er ingeniør i en time'; //vent en time
        }
    }
    else
    {
    $tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //henter data
    $row = mysql_fetch_array($tjektime); //henter
        if ($row['TimeOnClick'] < time()) //tjekker om forige timestamp er mindre en "nu timestamp"
        {
        echo 'Du er stadig i gang med at arbejde <br>';
        }
        else //hvis der ikke er gået en time
        {
        $mangler = ($row['TimeOnClick'] - time()); //finder timestamp forskeld
        $convert = date("H:i:s",$mangler); //conventer til time:minut:sekund
        echo 'Du er allerede i gang med at arbejde. Vent: "'.$convert.''; //udskriver
        }
    }
echo '
Jobs<br>
<form action="play.php?view=jobs" method="post">
<input type="submit" value=" submit " name="JobIngeneor" title="Bliv Ingeniør">
</form>
    ';
}
?>
</body>
</html>

Ser ud til at virke, dog virker det som om den ligger 2 timer til når jeg tester.
Skal lige tænke lidt over den.
Avatar billede sputii Nybegynder
11. maj 2009 - 18:27 #37
Ok. Håber du kan finde ud af det.
Avatar billede sputii Nybegynder
11. maj 2009 - 18:39 #38
Har testet og det virker.

Men der er en fejl den ligger 2 timer til.
Avatar billede andreas13_fam Nybegynder
11. maj 2009 - 18:46 #39
Ja det er det jeg siger :)
På en og anden måder giver:
date("H:i:s",(time() - time())) = 01:00:00
mens
time() - time() = 0

altså må det være
date("H:i:s",(...)) der ligger en time til, det kan jeg selvfølgelig modvirke med
date("H:i:s",strtotime("-1 hour",(time()-time()))) = 00:00:00
men det kan ikke passe det skal være sådan ;)

anyway så ser dette ud til at virke (med "hacket")

<?php
header('Content-type: text/html; charset=utf-8');
header('Content-Language: da');
$username = "test";
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("eksperten") or die(mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>TEST</title>
</head>
<body>
<?php
echo '
    <h2>Jobs</h2>
    <hr>

    <div style="padding:10px;border:2px dashed #444;float:left;margin-right:10px;">
    ';
if($_GET['view'] == "jobs")
{
    if(isset($_POST['JobIngeneor']))
    {
        $timestamp = strtotime("+1 hour",time()); //finder nu + 1 time
        echo 'NU: '.time().'<br>';
        echo 'NU + 1 time: '.$timestamp.'<br>';
        echo 'TJEK: '.date("H:i:s",($timestamp - time())).'<br>';
        echo 'TIME_TIME'.(time() - time()).'<br>';
        echo 'ULTRA TJEK: '.date("H:i:s",(time() - time())).'<br>';
        echo 'Brugernavn: '.$username.'<br>';
        $tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //henter data
        $row = mysql_fetch_array($tjektime); //henter
       
        echo 'DATABASE TID: '.$row['TimeOnClick'].'<br>';
       
        if ($row['TimeOnClick'] < time())
        {
        echo 'VIDRE: update <br>';
        mysql_query("UPDATE TimeMytesion SET `TimeOnClick` = '".$timestamp."' WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //opdaterer timestamp
        echo 'Du er ingeniør i en time'; //vent en time
        }
    }
    else
    {
    $tjektime = mysql_query("SELECT `TimeOnClick` FROM TimeMytesion WHERE TimeBrugernavn = '".$username."'") or die(mysql_error()); //henter data
    $row = mysql_fetch_array($tjektime); //henter
        if ($row['TimeOnClick'] < time()) //tjekker om forige timestamp er mindre en "nu timestamp"
        {
        echo 'Du er stadig i gang med at arbejde <br>';
        }
        else //hvis der ikke er gået en time
        {
        $mangler = ($row['TimeOnClick'] - time()); //finder timestamp forskeld
        $convert = date("H:i:s",strtotime("-1 hour",$mangler)); //conventer til time:minut:sekund
        echo 'Du er allerede i gang med at arbejde. Vent: "'.$convert.''; //udskriver
        }
    }
echo '
    </div>
    <div style="padding:10px;border:2px dashed #444;float:left;">
<form action="play.php?view=jobs" method="post">
<input type="submit" value=" submit " name="JobIngeneor" title="Bliv Ingeniør">
</form>
    </div>
    <div style="clear:both;"></div>
    ';
}
?>
</body>
</html>
Avatar billede sputii Nybegynder
11. maj 2009 - 20:19 #40
Nu har jeg fået det til at virke.

Tak :D
Avatar billede andreas13_fam Nybegynder
12. maj 2009 - 07:52 #41
Jeg ligger et svar i den anden tråd
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