Autor | Zpráva | ||
---|---|---|---|
hondziiikh Profil |
#1 · Zasláno: 29. 1. 2012, 08:40:22
Ahoj, řeším nový problém. Jak jsem již psal, zaměstnavatel není schopen žádné aplikace, která by vystavila směny na webu, tak jsem se do toho pustil sám.. No a k věci co mě trápí:
Mám v SQL tabulku zaměstnanci - třeba takhle: ID date smena poznamka zamestnanec 00455 1328310000 NULL NULL 1 00456 1328310000 NULL NULL 3 00457 1328310000 R(8-16) pozn. 2 00458 1328569200 R(8-16) NULL 1 00459 1328569200 NULL NULL 2 00460 1328569200 NULL NULL 3 00461 1328655600 R(8-16) náhrada 2 00462 1328655600 R(8-16) NULL 1 00463 1328655600 R(8-16) NULL 3 a já z toho potřebuji, aby mi to vypisovalo cca takovéto výsledky: date |smena(1) |pozn(1)|zam(1)| smena(2)|pozn2 |zam(2)|smena(3)|pozn(3)|zam(3) 1328310000 |NULL |NULL | 1 | R(8-16) | pozn. | 2 | NULL | NULL | 3 1328569200 |R(8-16) |NULL | 1 | NULL | NULL | 2 | NULL | NULL | 3 1328655600 |R(8-16) |NULL | 1 | R(8-16) | náhrada | 2 | R(8-16)| NULL | 3 <table> kde pod sebou pujdou jednotlie dny (tedy date) a ke každému datu zaměstnanci. Jenže nevím, kolik těch zam. bude.. Tak snad jsem to vysvětlil.
Má někdo nápad, jak to vytáhnout a srovnat tímto způsobem? Já to prozatím vyřešil načtením každého řádku zvlášť, ale to je přecijen 31 dotazů :) Díky za nápady |
||
Str4wberry Profil |
Šel bych na to tak, že si při výpisu všech dat z SQL nejprve nastrkáš záznamy do pomocného pole, kde jako klíč použiješ datum, a dalším cyklem sestavíš tu tabulku.
|
||
hondziiikh Profil |
#3 · Zasláno: 29. 1. 2012, 09:20:16
Takže výcuc z DB bude podle tohoto :
SELECT * FROM `smeny`WHERE date BETWEEN $tentomesic AND $minulymesic ORDER BY `smeny`.`date` ASC
(ten between je pro výpis jen jednoho měsíce, což bude default náhled.. Dál to řeším kalendářem). Jen nevím, když do směn nebude přidáváno postupně zam 1, 2, 3, ... ale třeba 2, 1, 3,... tak aby to nepsalo cizí směny do jiného zam.. Čím ošetřit toto? |
||
candiess Profil |
#4 · Zasláno: 29. 1. 2012, 10:32:17
hondziiikh:
„tak aby to nepsalo cizí směny do jiného zam.. Čím ošetřit toto?“ To si seřaď v PHPčku, pomocí cyklu si udělej pole a jako klíč bude den, to pole b8ude mít další pole s klíčem směna aneb Vícerozměrná pole |
||
panther Profil |
#5 · Zasláno: 29. 1. 2012, 12:08:21
hondziiikh:
„Jen nevím, když do směn nebude přidáváno postupně zam 1, 2, 3, ... ale třeba 2, 1, 3“ můžeš řadit dle více kritérií, takže: ... ORDER BY `smeny`.`date` ASC, zamestnanec |
||
hondziiikh Profil |
#6 · Zasláno: 29. 1. 2012, 12:21:04
panther:
jj, dotaz už jsem vyřešil, teď bojuju s polema.. zatím prohrávám :-D pořád to ve výsledku je úplně jinak :) |
||
hondziiikh Profil |
#7 · Zasláno: 29. 1. 2012, 14:57:04
Tak jo, mám z toho hlavu jak škopek... z DB mi pomocí
print_r() přichází ne jedno, ale několik polí... Asi takhle
Array ( [0] => 00000000094 [id] => 00000000094 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 001 [pracovnik] => 001 ) Array ( [0] => 00000000125 [id] => 00000000125 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 002 [pracovnik] => 002 ) Array ( [0] => 00000000156 [id] => 00000000156 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 003 [pracovnik] => 003 ) Array ( [0] => 00000000001 [id] => 00000000001 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 004 [pracovnik] => 004 ) Array ( [0] => 00000000187 [id] => 00000000187 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 005 [pracovnik] => 005 ) Array ( [0] => 00000000063 [id] => 00000000063 [1] => 1325372400 [date] => 1325372400 [2] => D(7-19) [smena] => D(7-19) [3] => Fronta [poznamka] => Fronta [4] => 006 [pracovnik] => 006 ) Array ( [0] => 00000000032 [id] => 00000000032 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 007 [pracovnik] => 007 ) Array ( [0] => 00000000218 [id] => 00000000218 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 008 [pracovnik] => 008 ) Array ( [0] => 00000000095 [id] => 00000000095 [1] => 1325458800 [date] => 1325458800 [2] => R(12-20) [smena] => R(12-20) [3] => Fronta [poznamka] => Fronta [4] => 001 [pracovnik] => 001 ) Array ( [0] => 00000000126 [id] => 00000000126 [1] => 1325458800 [date] => 1325458800 [2] => R(8-16) [smena] => R(8-16) [3] => [poznamka] => [4] => 002 [pracovnik] => 002 ) A já nevím, co s nima dál :( A netuším, jak udělat aby mi nepřicházela hodnota dvakrát, jednou jako klíč 0 a jednou jako id např.. Pak vůbec nevím jak místo klíče nastavit hodnotu (ten datum).. Tohle je pro velkej mozek, na to nemám kapacitu :( :-D Prosím pomoc |
||
Str4wberry Profil |
#8 · Zasláno: 29. 1. 2012, 15:38:11
„na to nemám kapacitu“
Spíš neznáš základy v používání PHP a databáze. Dej sem kód, ke kterému jsi došel. |
||
hondziiikh Profil |
nn, zaklady jsou, jen prostě pole nejsou má silná stránka. Já si to vždycky musím malovat na papír :)
jinka úspěch, polí mi vrací DB sice stále milion, ale klíč > hodnota už jen jednou :) Array ( [0] => 00000000094 [id] => 00000000094 [1] => 1325372400 [date] => 1325372400 [2] => [smena] => [3] => [poznamka] => [4] => 001 [pracovnik] => 001 ) Array ( [id] => 00000000094 [date] => 1325372400 [smena] => [poznamka] => [pracovnik] => 001 ) Array ( [id] => 00000000125 [date] => 1325372400 [smena] => [poznamka] => [pracovnik] => 002 ) Nikdy jsem nezkoumal, co vlastně z db přichází, já si vždy jen deklaroval proměnné a používal. A dnes jsem poprvé použil print_r() a díky tomu zjišťuji, že díky fetch_array dostávám od DB 2x tolik dat jen kvůli odlišnému key napč [0] a [id].. ještě vyzkouším, než se znovu zeptám na radu :) Zatím díky Tak stejne mi to nejde :) tady mám výcuc, který mi to vyčte už správně, a teď mám $pocZam= mySql_Query("SELECT DISTINCT pracovnik FROM smeny"); //sem ještě budu omezovat měsícem, kdyby někoho vyhodili nebo nabrali $pocZam=mySql_Num_Rows($pocZam); echo 'pro jistotu vypis poctu: '.$pocZam.' zamestnancu...'; //pocet lidi echo '<table border="1" rule="1"><tr>'; $vycuc= mySql_Query("SELECT * FROM smeny WHERE date BETWEEN $zacatek_mesice AND $konec_mesice ORDER BY date ASC, pracovnik"); while($data = mySql_Fetch_Assoc($vycuc)) { $date = $data ['date']; $smena = $data ['smena']; $poznamka = $data ['poznamka']; $pracovnik = $data ['pracovnik']; echo '<td>'.$date[1].'</td><td>'.$smena.'</td><td>'.$poznamka.'</td><td>'.$pracovnik.'</td>'; } echo '</tr></table>'; for ($zam=1; $zam<=$pocZam; $zam++) ještě mám nápad.. |
||
hondziiikh Profil |
#10 · Zasláno: 29. 1. 2012, 17:58:54
a MÁM TO :)
$pocZam= mySql_Query("SELECT DISTINCT pracovnik FROM smeny"); //sem ještě budu omezovat měsícem, kdyby někoho vyhodili nebo nabrali $pocZam=mySql_Num_Rows($pocZam); echo 'pro jistotu vypis poctu: '.$pocZam.' zamestnancu...'; //pocet lidi echo '<table border="1" rule="1"><tr>'; $vyber = MySQL_Query("SELECT * FROM smeny WHERE date BETWEEN $zacatek_mesice AND $konec_mesice ORDER BY date ASC, pracovnik"); while($row = mysql_fetch_assoc($vyber)) { $date = $row['date']; $smena = $row['smena']; $poznamka = $row['poznamka']; $pracovnik = $row['pracovnik']; echo '<td>'.$date.'</td><td>'.$smena.'</td><td>'.$poznamka.'</td><td>'.$pracovnik.'</td>'; if ($pracovnik == $pocZam) echo '</td></tr><tr>'; } echo '</tr></table>'; |
||
candiess Profil |
#11 · Zasláno: 29. 1. 2012, 21:03:18
hondziiikh:
kolik tam máš těch zaměstnanců? zápis jako > if ($pracovnik == $pocZam) echo '</td></tr><tr>'; > > } se mi vubec nelíbí... |
||
hondziiikh Profil |
#12 · Zasláno: 30. 1. 2012, 06:52:28
Zamestnancu je kazdou chvili jinak prave proto resim takhle :) vzdyt je to jednoduchy, kdyz jich bude 10 a vypis dojde k 10temu, tak zalomi a jede zase od nuly.. (psano z mob)
|
||
Časová prodleva: 12 let
|
0