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: 6 let
|
0