De bedoeling
Een speler moet eenheden kunnen aanmaken door een aantal in te vullen. Dit gaat een tabel in met de volgende query:

INSERT INTO $config[DB_Prefix]_Kazerne (Username,Stad_ID,Eenheid,Eind_Tijd,Totaal_Eenheden) VALUES
('$user','$Stad_ID','Ruiter',NOW() + INTERVAL %d MINUTE,'$E_1_A')

Waarbij $config[DB_Prefix] de tabel prefix is, $user de gebruikersnaam, $Stad_ID de stad, Ruiter de eenheid en $E_1_A de eenheden * de tijd per eenheid.

Dit werkt prima. Stel, een speler voert 10 in bij Ruiter (5 minuten), komen er netjes 50 minuten bij.
Maar, nu is het de bedoeling, dat als er 5 minuten om zijn, dat er 1 Ruiter bijkomt. Hiervoor had ik het volgende plan:

Plan
Gegevens in de tabel:
- Het aantal eenheden
- De eindtijd
(En dan stad id, eenheden naam etc.)

De eindtijd - de huidige tijd, geeft bijvoorbeeld 45. Het aantal eenheden is 10. Dan zou het systeem moeten zien dat dat één eenheid is. (Tijden staan in een array, dat is geen probleem). Dan update de tabel met een eenheid erbij bij de stad, en een eenheid eraf bij de eenheden in de maak. Stel, we zijn bij 40 minuten, staat er 9 eenheden, wordt 8, tabel met eenheden gaat 1 omhoog, etc.

Mijn bedoeling voor de de minuten uit rekenen hoeveel er nog moeten was dit:


<?php
// Tijd van de eenheid opvragen
$EH = $rows['Eenheid'].'_Tijd_Config';
// Aantal eenheden keer de tijd
$End = $rows['Totaal_Eenheden'] * $WDE[$EH];
// De tijd in minuten zetten zodat deze in een interval kan
$E = $End.' minutes';
// Huidige datum creëren
$date = date_create('NOW');
// Formaat aanpassen
$news = $date->format('Y-m-d H:i:s');
// Interval maken met het aantal minuten
$none = date_add($date, date_interval_create_from_date_string($E));
// Uur, minuten, secondes scheiden om een mktime toe te passen
$t1  = $none->format('H');
$t2  = $none->format('i');
$t3  = $none->format('s');
$t4  = $date->format('H');
$t5  = $date->format('i');
$t6  = $date->format('s');
// Tijden maken
$tweedetijd = mktime($t1,$t2,$t3,date("m"),date("d"),date("Y")); 
$eerstetijd = mktime($t4,$t5,$t6,date("m"),date("d"),date("Y"));
// Eindtijd 
$verschil = $eerstetijd - $tweedetijd; 
?>


$verschil geeft 0 aan, dat werkt dus niet. Wat doe ik verkeerd? Tevens: Hoe kan ik controleren of er een eenheid is aangemaakt?

Alvast bedankt.
Ik bump dit topic, ben ondertussen 1,5 week aan het zoeken naar het deel wat wel werkt, verschillende functies geprobeerd, maar kom er niet uit. Bedankt voor ieders hulp!
De functie date_add past $date aan en geeft die dan terug. Dat ken je dan toe aan $none dus het verschil is nul.
Je bedoeld dus dat ik $date niet kan gebruiken omdat deze bewerkt is door de date_add(); ? Dus ik moet een nieuwe variabele aanmaken (v.b) $Datum = date_create('NOW');, en deze dan in de $t4, 5 en 6 meegeven?

Edit: Top Ger, gelukt!


<?php
// Tijd van de eenheid opvragen
$EH = $rows['Eenheid'].'_Tijd_Config';
// Aantal eenheden keer de tijd
$End = $rows['Totaal_Eenheden'] * $WDE[$EH];
// De tijd in minuten zetten zodat deze in een interval kan
$E = $End.' minutes';
// Huidige datum creëren
$date = date_create('NOW');
$datum = date_create('NOW');
// Formaat aanpassen
$news = $date->format('Y-m-d H:i:s');
// Interval maken met het aantal minuten
$none = date_add($date, date_interval_create_from_date_string($E));
// Uur, minuten, secondes scheiden om een mktime toe te passen
$t1  = $none->format('H');
$t2  = $none->format('i');
$t3  = $none->format('s');
$t4  = $datum->format('H');
$t5  = $datum->format('i');
$t6  = $datum->format('s');
// Tijden maken
$eerstetijd = mktime($t1,$t2,$t3,date("m"),date("d"),date("Y")); 
$tweedetijd = mktime($t4,$t5,$t6,date("m"),date("d"),date("Y"));
// Eindtijd 
$verschil = $eerstetijd - $tweedetijd; 
?>
Alleen ben je wel omslachtig bezig

<?php
$eerstetijd = time();
$tweedetijd = $eerstetijd + $End * 60;
$verschil = $eerstetijd - $tweedetijd;
?>

En als je dat allemaal weer invult zou het gewoon

<?php
$verschil = -$End * 60;
?>
zijn.

Dat is nog eens een vereenvoudiging....
Lol, inderdaad.

[size=xsmall]Toevoeging op 09/06/2014 22:27:10:[/size]

Nog korter
[code]<?php
$verschil = $rows['Totaal_Eenheden'] * $WDE[$EH] * -60;

Reageren