Sql Time

Deadfish

Mitglied
Hallo bin recht neu ihr und hab auch schon ne Frage ^^

Ich wolte Frage wie man das macht das wenn das db Feld "arbeitzeit" die zeit in dem Feld (z.b 30 min ) abgelaufen ist
das man + 2,85gold bekommt



meine db

benutzerdaten

das Feld mit der zeit heist Arbeitzeit type des feldes ist Time und standart null
 
Willst du das per Cronjob lösen? in PHP oder in der Datenbank?

Wie gut sind den deine PHP und MySQL-Kenntnisse?
 
meine kentnisse sind recht gut nur das will ich weis nciht wie ich das mit der Zeit einbauhensoll das wenn die zeit um ist das er halt +2.8 gold bekommt
 
die db hab ich shcon erstellt jetzt brauch ich nur noch den time php code ne session hab ich auch schon zu db abfragen auf der php seite zeigt er die time an aber sie läuft nicht ab
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    250,7 KB · Aufrufe: 26
Wenn die Zeite auf der Seite ablaufen soll, dann musst du das ablaufen mit Javascript machen. PHP läuft auf dem Server, nicht auf dem Browser.

Mit Ajax kannst du mit dem Javascript steuern, dass er ein PHP-Script ansteuert, welches die Ressourcen einträgt
 
Kannste mir hir bei noch helfen bin recht weit aber sobal ich die seite neu lade ist alles wider auf 00 und wenn es ablauft das der das inner db einträgt schaf ich nicht ganz
Ihr mal der code

arbeit.php
PHP:
<?php  
include ("/checkuser.php");  
?>  
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<?
session_start();
?>
html>
<head>
<script language="JavaScript">
var ison = false;
function nill(timevar) {
	if (timevar < 10) timevar = "0" + timevar;
	return timevar;
}
function start_ticker() {
	var regzeit = /^\d{0,2}$/;
	var mint = false;
	var sect = false;
	(regzeit.exec(document.theticker.esec.value)) ? mint = true : void(0);
	(regzeit.exec(document.theticker.emin.value)) ? sect = true : void(0);
	(mint && sect) ? go_ticker() : document.theticker.reset();
}
function go_ticker() {
	var min = document.theticker.emin.value;
	var sec = document.theticker.esec.value;
	if (parseInt(min) > 0 || parseInt(sec) > 0) {
		if (parseInt(min) < 61 || parseInt(sec) < 100) {
			(parseInt(min) > 0) ? tmin = parseInt(min) : tmin = 0;					
			(parseInt(sec) > 0) ? tsec = parseInt(sec) : tsec = 0;
			timeticker = tmin * 60 + tsec;
			ison = true;
			printit_ticker();			
		} else {
		}
	}
	
}
function printit_ticker() {
	document.theticker.mins.value = nill(Math.floor(timeticker / 60));
	document.theticker.secs.value = nill(timeticker % 60);
	if (timeticker > 0) { 
		zeitgeber = setTimeout("printit_ticker()", 1000);
	} else {
		ison = false;
	}
	timeticker --;
}
</script>
<bodey>
<?php include ("/temple/header_user.html") ?>
<?php include ("/temple/arbeit.html") ?>
<?php include ("/temple/header3.html") ?>

</body>  
</html>

und ihr die dazugehöriges Tample
HTML:
</head>
<body>
<div id="leftbar"></div><div id="box4"></div>
<div id="box2"><br><div id="box">
  <p><br>
    Du betrits den Torbereich und machst die f&uuml;r deine Mission Fertig </p>
  <p> In einer Mission kannst du Geld und Items finden.</p>
  <div id="sgraum"></div>
  <form name="theticker">
<input type="hidden" name="emin" value="1"> <!-- Minuten=1 -->
<input type="hidden" name="esec" value="15"> <!-- Sekunden=15 -->
<input type="text" name="mins" size="2" value="00" class="disabled" disabled> Minutes
<input type="text" name="secs" size="2" value="00" class="disabled" disabled> Seconds
<input type="button" value="Mission Starten" onclick="(ison == false) ? start_ticker() : void(0)">
</form>
</div></div><div id="leftbar"></div><div id="box5"></div>

und die db

--
-- Datenbank: `game`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `benutzerdaten`
--

CREATE TABLE IF NOT EXISTS `benutzerdaten` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Nickname` varchar(50) NOT NULL DEFAULT '',
`Kennwort` varchar(50) NOT NULL DEFAULT '',
`Nachname` varchar(50) NOT NULL DEFAULT '',
`Vorname` varchar(50) NOT NULL DEFAULT '',
`level` varchar(20) NOT NULL DEFAULT '1',
`leben` varchar(20) NOT NULL DEFAULT '100',
`arbeitzeit` time DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
 
Halso das Problem in Diesem Thema vom mir hab ich zum teil gelöst und zwar geht jetzt alles wenn die Zeit down ist dann gibt er mit Geld +10 das Problem ist nur es ist sehr unsicher und schnell zu bemerken wie man den Bug ausnutzt

arbeit.php
PHP:
<?php  
include ("checkuser.php");  
?>  
<link rel="stylesheet" type="text/css" href="css/style.css">
<title><?php echo $_SESSION["titel"]; ?></title>
</head>
<?
session_start();
?>

<html>
<head>
<script language="JavaScript">
var ison = false;
function nill(timevar) {
	if (timevar < 10) timevar = "0" + timevar;
	return timevar;
}
function start_ticker() {
	var regzeit = /^\d{0,2}$/;
	var mint = false;
	var sect = false;
	(regzeit.exec(document.theticker.esec.value)) ? mint = true : void(0);
	(regzeit.exec(document.theticker.emin.value)) ? sect = true : void(0);
	(mint && sect) ? go_ticker() : document.theticker.reset();
}
function go_ticker() {
	var min = document.theticker.emin.value;
	var sec = document.theticker.esec.value;
	if (parseInt(min) > 0 || parseInt(sec) > 0) {
		if (parseInt(min) < 61 || parseInt(sec) < 100) {
			(parseInt(min) > 0) ? tmin = parseInt(min) : tmin = 0;					
			(parseInt(sec) > 0) ? tsec = parseInt(sec) : tsec = 0;
			timeticker = tmin * 6 + tsec;
			ison = true;
			printit_ticker();			
		} else  

{
		}
	}
	
}
function printit_ticker() {
	document.theticker.mins.value = nill(Math.floor(timeticker / 60));
	document.theticker.secs.value = nill(timeticker % 60);
	if (timeticker > 0) { 
		zeitgeber = setTimeout("printit_ticker()", 1000);
	} else 
       location.href='arbeit.geld.funktion.php';
	  {
		ison = false;
	}
	timeticker --;
}

</script>
<bodey>
<?php include ("temple/header_user.html") ?>
<?php include ("temple/arbeit.html") ?>
<?php include ("temple/header3.html") ?>


</body>  
</html>

Die Arbeit.php leited wenn Zeit down ist mit dem Befehl
Code:
 location.href='arbeit.geld.funktion.php';
eine verlinkung zu 'arbeit.geld.funktion.php' die Seite fürd dann den Code hir aus

PHP:
<?php  
include ("checkuser.php");  
?>  

<?
session_start();

?>
 <?php $verbindung = mysql_connect ("localhost",  
"....", "....")  
or die ("keine Verbindung möglich.  
 Benutzername oder Passwort sind falsch");  

mysql_select_db("db614787-main")  
or die ("Die Datenbank existiert nicht.");  
?>  
<?php

$eintrag =  
"UPDATE benutzerdaten
SET geld = geld +10
WHERE id = '".$_SESSION["user_id"]."' limit 1 ";
 
$eintragen = mysql_query($eintrag); 

?> 
<html>
<head>
<link rel="stylesheet" type="text/css" href="css/style.css">
<meta http-equiv="refresh" content="0; url=arbeit.php">
</head>
<body>
</head>

der dem User dann +10Geld dazugibt

Das Problem : man kann einfach die Seite 'arbeit.geld.funktion.php' aufrufen und immer F5 drücken dann gibt er ohne Zeit das +10 Geld dazu und dann ncoh wenn man die Seite arbeit.php neu lädt ist der timer wider auf 0 kann ´mir bitte da einer Helfen
 
Zurück