Hallo zusammen
Ich habe momentan ein Problem an dem ich schon einige Stunden dran sitze und einfach nicht raus finde, warum es nicht so läuft wie es laufen sollte.
Wie der Betreff schon sagt, möchte ich ein Gebäudebau Ablauf schreiben.
Ich habe diesen in 2 Sektoren aufgeteilt, einmal soll geprüft werden ob es bereits eine Bauzeit gibt wenn nicht, dann soll der vom User eingegebene Auftrag ausgeführt werden und somit die jetzige Zeit + die Bauzeit in die Tabelle eingetragen werden (das funktioniert).
Im 2ten Sektor soll dann ermittelt werden wie lange die Bauzeit noch beträgt, dazu hole ich mir die Daten der Bauzeit aus der Datenbank und ziehe sie von der jetzigen Zeit ab.
Da kommt dann im jetzigen Fall 20 Sekunden raus, was mir auch angezeigt wird und die auch nach aktuallisieren runter laufen ( Funktioniert auch noch )
Jetzt der Teil an dem ich hänge und nicht zur Lösung komme:
Wenn die Bauzeit dann abgelaufen ist ( also unter 0 ) , dann soll mittels Update die vom User eingegebene Gebäudeanzahl in die Spalte "gebaeude_gesamt" geschrieben und die Zeit auf 0 gesetzt werden.
Nach dem die Bauzeit runter gelaufen ist , läuft die Zeit weiter in´s minus rein und ansonsten passiert einfach nix.
Ich kann nach den 20 Sekunden zwar wieder einen neuen Auftrag geben und die neue Bauzeit wird wieder in die Tabelle eingetragen aber der letzte Rest wird eben nicht erledigt.
Ich wäre sehr froh wenn ihr mir bei diesem Problem mal helfen könntet. Hier ist der Code dazu:
PHP-Code:
<?php
$id = 2;
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once ("../db_config.php");
$sub_button = isset($_POST['submit']);
$auftrag_saegewerk = isset($_POST['saegewerk']) ? trim($_POST['saegewerk']) : false ;
$aktuelle_zeit = time();
$bauzeit = time()+20;
$saegwerk_zeit = "SELECT `endbauzeit` FROM `rohstoff_gebaeude` WHERE id = $id";
$stmt = $db_connect->prepare($saegwerk_zeit);
$stmt->execute();
$stmt->bind_result($start);
$stmt->fetch();
$stmt->close();
if ($start < $aktuelle_zeit)
{
if ($sub_button || $auftrag_saegewerk)
{
$saegewerk_bau = "REPLACE INTO `rohstoff_gebaeude` (`id` , `endbauzeit`) VALUES (? ,?)";
$stmt = $db_connect->prepare($saegewerk_bau);
$stmt->bind_param('ii' , $id , $bauzeit);
$stmt->execute();
$stmt->close();
}
}
else
{
$error_msg_gebaeude = "Es befindet sich bereits ein Gebäude im Bau !";
}
$saegewerk_bauzeit = "SELECT `endbauzeit` FROM `rohstoff_gebaeude` WHERE id = $id";
$rest = $db_connect->prepare($saegewerk_bauzeit);
$rest->execute();
$rest->bind_result($rest_zeit);
$rest->fetch();
$rest->close();
$rest_bauzeit = $rest_zeit - $aktuelle_zeit;
echo $rest_bauzeit;
if ($rest_bauzeit < 0)
{
$saegewerk_fertig = "UPDATE `rohstoff_gebaeude` SET `saegewerk_gesamt` = ? AND `endbauzeit` = 0 WHERE id = $id";
$stmt = $db_connect->prepare($saegewerk_fertig);
$stmt->bind_param('i' , $auftrag_saegewerk);
$stmt->execute();
$stmt->close();
}
$db_connect->close();
?>
Das ist die Tabelle dazu:
PHP-Code:
Server Version: 5.5.33a-MariaDB
-- PHP-Version: 5.5.5
--
-- Tabellenstruktur für Tabelle `rohstoff_gebaeude`
--
CREATE TABLE IF NOT EXISTS `rohstoff_gebaeude` (
`id` int(11) NOT NULL,
`saegewerk_gesamt` int(15) NOT NULL,
`endbauzeit` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;