| Autor | Zpráva | ||
|---|---|---|---|
| Jan Žák Profil |
#1 · Zasláno: 20. 6. 2017, 18:27:07
Dobrý den všem,
rád bych vás požádal o pomoc. Snažím se vytvořit menší aplikaci pro sledování času, kde mám dvě tlačítka pro Příchod a Odchod zaměstnance. Potřeboval bych docílit, aby když kliknu na tlačítko Příchod, zaznamenal se údaj do db (to mi funguje) a tlačítko se stalo neaktivním. To samé bych rád i u tlačítka Odchod. Potřeboval bych docílit toho, aby po stisku tlačítka a záznamu do db se tlačítko pro daný den stalo neaktivní. Tabulka: CREATE TABLE `attendance` ( `id` int(11) NOT NULL, `employye_id` int(11) UNSIGNED DEFAULT NULL, `date` date DEFAULT NULL, `clock_in` time DEFAULT NULL, `clock_out` time DEFAULT NULL, `note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Skript kterým zatím zobrazuji tlačítka: <div class="semi-widget row-fluid">
<?php
$result = mysqli_query($con, "SELECT e.id, a.clock_in, a.clock_out FROM employees AS e, attendance AS a WHERE e.id = '".$_SESSION['id']."'") or die ("Unable to select data because: ".mysqli_error());
$row = mysqli_fetch_array($result);
if ($row['clock_out'] == null && $row['clock_in'] !== null) {
?>
<div class="span6">
<form action="../attendance/attendance-widget-process.php" method="post">
<input type="hidden" name="action" value="clockIn">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" class="btn btn-large btn-danger btn-block" value="Příchod">
</form>
</div>
<?php
} else {
?>
<div class="span6">
<form action="../attendance/attendance-widget-process.php" method="post">
<input type="hidden" name="action" value="clockOut">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" class="btn btn-large btn-success btn-block" value="Odchod">
</form>
</div>
<?php
}
?>
</div>Děkuji za pomoc :) |
||
| Kajman Profil |
V dotaze přidejte podmínku pro spojení tabulek employees a attendance. Přidejte i
order by a.id desc limit 1 Popřemýšlejte, zda nebude lepší v clock_in a clock_out ukládat datetime, aby to fungovalo dobře i přes půlnoc. Když tam budete ukládat časy v gtm (nebo timestamp), tak to bude navíc fungovat dobře i přes chvíle, kdy se měnil čas na letní a zpět. Osobně bych tam dal podmínku, že navíc hledám jen řádky, kde není nastavený odchod a příchod je ten samý den (nebo mladší 12 či 24 hodin, pokud to upravíte). Ošetřete stav, kdy to nevrátí žádný řádek. |
||
| Jan Žák Profil |
#3 · Zasláno: 21. 6. 2017, 12:36:43
Kajman:
Děkuji moc za odpověď, pokusil jsem se udělat pár změn, ale stále se mi nedaří, asi jak do toho delší dobu koukám :) mohl by jste mi poradit, jak přesně vytvořit podmínku s řádkem kde není odchod? Děkuji moc za Váš čas. <div class="semi-widget row-fluid">
<?php
$result = mysqli_query($con, "SELECT e.id, a.clock_in, a.clock_out
FROM employees AS e, attendance AS a
WHERE e.id = '".$_SESSION['id']."' AND e.id = a.employye_id
ORDER BY a.id DESC LIMIT 1") or die ("Unable to select data because: ".mysqli_error($con));
$row = mysqli_fetch_array($result);
if ($row['clock_out'] == '00:00:00' && $row['clock_in'] !== '00:00:00') {
?>
<div class="span6">
<form action="../attendance/attendance-widget-process.php" method="post">
<input type="hidden" name="action" value="clockIn">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" class="btn btn-large btn-danger btn-block" value="Příchod">
</form>
</div>
<?php
} else {
?>
<div class="span6">
<form action="../attendance/attendance-widget-process.php" method="post">
<input type="hidden" name="action" value="clockOut">
<input type="hidden" name="id" value="<?php echo $row['id']; ?>">
<input type="submit" class="btn btn-large btn-success btn-block" value="Odchod">
</form>
</div>
<?php
}
?>
</div> |
||
| Keeehi Profil |
Myslím, že nějak takto by to mohlo vypadat.
<div class="semi-widget row-fluid">
<?php
$result = mysqli_query($con, "SELECT `clock_in`, `clock_out`
FROM `attendance`
WHERE `employye_id` = '".$_SESSION['id']."'
ORDER BY `id` DESC
LIMIT 1")
or die ("Unable to select data because: ".mysqli_error($con));
$row = mysqli_fetch_array($result);
?>
<div class="span6">
<form action="../attendance/attendance-widget-process.php" method="post">
<input type="hidden" name="action" value="<?php echo (!$row || $row['clock_out']) ? 'clockIn' : 'clockOut'; ?>">
<input type="hidden" name="id" value="<?php echo $_SESSION['id']; ?>">
<input type="submit" class="btn btn-large btn-danger btn-block" value="<?php echo (!$row || $row['clock_out']) ? 'Příchod' : 'Odchod'; ?>">
</form>
</div>
</div>Zaměstnanec se píše employee. |
||
| Jan Žák Profil |
#5 · Zasláno: 22. 6. 2017, 09:05:16
Zdravím, vyzkoušel jsem Váš kód, tlačítko zobrazuje Příchod, když tedy příchod provedu, data se uloží, ale tlačítko na odchod se nezmění. Jo a díky moc za upozornění na chybu, už jsem to opravil.
|
||
| Keeehi Profil |
#6 · Zasláno: 22. 6. 2017, 09:12:12
Jan Žák:
Jak vypadá řádek v databázi poté, co se uloží záznam o příchodu? |
||
| Jan Žák Profil |
#7 · Zasláno: 22. 6. 2017, 09:27:20
Zde je aktuální výpis z tabulky:
INSERT INTO `attendance` (`id`, `employee_id`, `date`, `clock_in`, `clock_out`, `note`) VALUES (1, 4, '2017-06-16', '05:40:00', '14:34:42', NULL), (2, 4, '2017-06-17', '05:33:12', '14:37:00', NULL), (3, 4, '2017-06-18', '05:43:00', '14:13:00', NULL), (4, 4, '2017-06-19', '06:00:00', '14:08:00', NULL), (5, 4, '2017-06-20', '05:16:40', '14:17:13', NULL), (6, 4, '2017-06-22', '08:55:21', '00:00:00', NULL); COMMIT; |
||
| Kajman Profil |
Na řádku 14 a 16 zkuste ošetřit ty nuly.
(!$row || ($row['clock_out'] && $row['clock_out']!='00:00:00')) Nebo při insertu vkládejte do clock_out null hodnotu a ne prázdný řetězec. |
||
| Jan Žák Profil |
#9 · Zasláno: 22. 6. 2017, 12:31:31
Kajman, Keeehi:
Děkuji Vám všem za pomoc, nakonec jsem zvolil pro sloupec clock_out null hodnotu. Vše nyní funguje jak má, ještě asi ošetřím tlačítko příchod, když je v aktuální den, již příchod zaznamenán. Hezký den. |
||
|
Časová prodleva: 8 let
|
|||
0