04. december 2006 - 14:44
Der er
42 kommentarer og 1 løsning
Hjælp til checkboxe
Hej Eksperter. Jeg har brug for hjælp til at lave en form for kalender, det den skal kunne er: Den viser 5 uger på linje, en uge på hver linje med 7 dage på hver linje Uge - Mandag - Tirsdag - Onsdag - Torsdag - Fredag - Lørdag - Søndag Hver linje under hver dag der skal der være 3 boxe, 1. box er morgen 2. box er middag 3. box er aften. Og de personer som er logget ind skal have mulighed for at krydse af om de vil arbejde morgen, middag eller aften, eller morgen & middag eller morgen & aften osv osv osv.. Nå de har valgt hvilken dage de vil arbejde hvad på så skal den lægge det op i databasen. Jeg håber meget i har nogle idér til hvad jeg kan gøre ved det?
Annonceindlæg fra SuperOffice
04. december 2006 - 14:49
#1
<ole> Hvorlangt er du kommet? Hvad er det præcist, du ikke kan finde udaf? /mvh </bole>
04. december 2006 - 15:13
#2
jeg er ikke kommet igang, jeg mangler inspiration til hvordan det skal laves :/
04. december 2006 - 15:14
#3
det jeg ikke helt er med på det er hvordan jeg skal få samlet disse data i DB'en fra checkboxene og uge dagene + uge nummeret
04. december 2006 - 15:16
#4
Så kom med dine checkbokse. Hvordan ser din side ud med formen og checkboksene?
04. december 2006 - 15:30
#5
lang kode men her: <form name="form1" method="post" action=""> <table width="787" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="98"><div align="center">Uge nr </div></td> <td colspan="3"><div align="center">Mandag</div></td> <td width="98" colspan="3"><div align="center">Tirsdag</div></td> <td width="98" colspan="3"><div align="center">Onsdag</div></td> <td width="98" colspan="3"><div align="center">Torsdag</div></td> <td width="98" colspan="3"><div align="center">Fredag</div></td> <td width="98" colspan="3"><div align="center">Lørdag</div></td> <td width="102" colspan="3"><div align="center">Søndag</div></td> </tr> <tr> <td><div align="center"></div></td> <td width="30"><div align="center">M</div></td> <td width="30"><div align="center">MI</div></td> <td width="37"><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> <td><div align="center">M</div></td> <td><div align="center">MI</div></td> <td><div align="center">AF</div></td> </tr> <tr> <td><div align="center">49</div></td> <td><div align="center"> <input name="m1" type="checkbox" id="m1" value="checkbox"> </div></td> <td><div align="center"> <input name="m2" type="checkbox" id="m2" value="checkbox"> </div></td> <td><div align="center"> <input name="m3" type="checkbox" id="m3" value="checkbox"> </div></td> <td><div align="center"> <input name="t1" type="checkbox" id="t1" value="checkbox"> </div></td> <td><div align="center"> <input name="t2" type="checkbox" id="t2" value="checkbox"> </div></td> <td><div align="center"> <input name="t3" type="checkbox" id="t3" value="checkbox"> </div></td> <td><div align="center"> <input name="o1" type="checkbox" id="o1" value="checkbox"> </div></td> <td><div align="center"> <input name="o2" type="checkbox" id="o2" value="checkbox"> </div></td> <td><div align="center"> <input name="o3" type="checkbox" id="o3" value="checkbox"> </div></td> <td><div align="center"> <input name="to1" type="checkbox" id="to1" value="checkbox"> </div></td> <td><div align="center"> <input name="to2" type="checkbox" id="to2" value="checkbox"> </div></td> <td><div align="center"> <input name="to3" type="checkbox" id="to3" value="checkbox"> </div></td> <td><div align="center"> <input name="f1" type="checkbox" id="f1" value="checkbox"> </div></td> <td><div align="center"> <input name="f2" type="checkbox" id="f2" value="checkbox"> </div></td> <td><div align="center"> <input name="f3" type="checkbox" id="f3" value="checkbox"> </div></td> <td><div align="center"> <input name="l1" type="checkbox" id="l1" value="checkbox"> </div></td> <td><div align="center"> <input name="l2" type="checkbox" id="l2" value="checkbox"> </div></td> <td><div align="center"> <input name="l3" type="checkbox" id="l3" value="checkbox"> </div></td> <td><div align="center"> <input name="s1" type="checkbox" id="s1" value="checkbox"> </div></td> <td><div align="center"> <input name="s2" type="checkbox" id="s2" value="checkbox"> </div></td> <td><div align="center"> <input name="s3" type="checkbox" id="s3" value="checkbox"> </div></td> </tr> </table> </form> i den linje hvor boxene og ugenummeret er, den skal jo helst blive genereret automatisk ved hjælp af et array eller noget. meget gerne hvis ugenummeret også kunne skifte selv, men ellers kan jeg godt lave så vi selv går ind og tilføjer 5 ugenumre afgange i en anden tabel i vores DB
04. december 2006 - 16:30
#6
Hej kimox, Jeg ved ikke, hvor erfaren du er i PHP-sproget, men du kan få PHP til at lave din formular for dig (Jeg er ikke klar over, om ovenstående er dit output fra en PHP kode eller om du har siddet og skrevet det i HTML). En smart måde, PHP kan fortolke værdier fra formularer er: Formularen: <form action="" method="post"> <input type="checkbox" name="fruits[]" value="orange"> Appelsiner <input type="checkbox" name="fruits[]" value="apple"> Æbler <input type="checkbox" name="fruits[]" value="banana"> Bananer <input type="submit"> Værdierne hentes: $fruits = $_POST["fruits"]; for($x = 0; $x < sizeof($fruits); $x++) { if(!empty($fruits["$x"]) { echo $fruits["$x"] . "<br>\n"; } } Jeg kan godt bikse noget sammen til dig, men jeg kan måske først have det færdigt i aften. Skriv lige tilbage, hvis jeg skal gå i gang. :)
04. december 2006 - 16:40
#7
hej henning. Jeg er ikke den mest erfarene phpkoder :) så hvis du kunne strikker noget sammen ville jeg blive virkelig lykkelig. Det øverste er bare ren html for at vise hvordan det skulle komme til at se ud :)
04. december 2006 - 16:52
#8
Ok, Jeg er allerede i gang. :)
04. december 2006 - 17:00
#9
lyder rigtig rigtig godt !
04. december 2006 - 17:34
#10
Hej igen, Jeg har nu lavet den første del af formularen og det virker på min server. Tjek lige om det er sådan, du vil have det... <?php echo "<table border=\"1\">\n"; $week = date("W"); $days = Array("Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag", "Søndag"); $y = 0; for($x = $week; $x <= ($week + 5); $x++) { if($x <= (date("W", mktime(0, 0, 0, 12, 31, date("Y"))))) { $y += 1; echo "<tr><td rowspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $x . "</td>"; for($z = 0; $z < sizeof($days); $z++) { echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $days["$z"] . "</td>"; } if($z == sizeof($days)) { echo "</tr>\n"; echo "<tr>"; } for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\">MO</td>"; echo "<td style=\"text-align: center;\">MI</td>"; echo "<td style=\"text-align: center;\">AF</td>"; } if($z == sizeof($days)) { echo "</tr>\n"; echo "<tr>"; } for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; } if($z == sizeof($days)) { echo "</tr>\n"; } } } for($x = 1; $x <= (5 - $y); $x++) { $y += 1; echo "<tr><td rowspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $x . "</td>"; for($z = 0; $z < sizeof($days); $z++) { echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $days["$z"] . "</td>"; } if($z == sizeof($days)) { echo "</tr>\n"; echo "<tr>"; } for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\">MO</td>"; echo "<td style=\"text-align: center;\">MI</td>"; echo "<td style=\"text-align: center;\">AF</td>"; } if($z == sizeof($days)) { echo "</tr>\n"; echo "<tr>"; } for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; } if($z == sizeof($days)) { echo "</tr>\n"; } } echo "</table>\n"; ?>
04. december 2006 - 17:43
#11
Ja det er nemlig sådan ser rigtig godt ud, men der behøves ikke stå ugedagene og MO - MI - AF ved hver uge, bare der står det ved den øverste, er det forbesværligt at ændre?
04. december 2006 - 17:46
#12
Nej, det skulle være lige til. :)
04. december 2006 - 17:56
#13
så vil jeg meget gerne have det :), og så over ugenummerne oppe ved siden af ugedagene må du meget gerne skrive "Uge nr."
04. december 2006 - 18:01
#14
Prøv at tjekke det nu: <?php echo "<form name=\"form1\" method=\"post\" action=\"\">\n"; echo "<table border=\"1\">\n"; // Ugens nummer $week = date("W"); // Dagens nummer $week_day = date("w"); // Array med ugedagenes navne $days = Array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"); echo "<tr><td> </td>"; // Ugens navne skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $days["$z"] . "</td>"; } echo "</tr>\n"; echo "<tr><td> </td>"; // Tidspunkterne Morgen, Middag og Aften skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\">MO</td>"; echo "<td style=\"text-align: center;\">MI</td>"; echo "<td style=\"text-align: center;\">AF</td>"; } // Denne uge og de 4 kommende uger skrives for($x = 0; $x < 5; $x++) { // Er ugen den sidste i året, ændres ugens nummer til 1 if($week == (date("W", mktime(0, 0, 0, 12, 31, date("Y"))))) { $week = 1; } // Ugens nummer skrives echo "<tr><td style=\"font-weight: bold; text-align: center;\">" . $week . "</td>"; // Der udskrives 3 checkboxe for hver dag i ugen for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; } if($z == sizeof($days)) { echo "</tr>\n"; } // Der lægges 1 til ugens nummer $week += 1; } echo "</table>\n"; echo "</form>\n"; ?>
04. december 2006 - 18:22
#15
Jeg har bare lige pillet en smule ved det.. opdate: <?php echo "<form name=\"form1\" method=\"post\" action=\"\">\n"; echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n"; // Ugens nummer $week = date("W"); // Dagens nummer $week_day = date("w"); // Array med ugedagenes navne $days = Array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"); echo "<tr><td> <b>Uge nr. </b></td>"; // Ugens navne skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $days["$z"] . "</td>"; } echo "</tr>\n"; echo "<tr><td> </td>"; // Tidspunkterne Morgen, Middag og Aften skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\">MO</td>"; echo "<td style=\"text-align: center;\">MI</td>"; echo "<td style=\"text-align: center;\">AF</td>"; } // Denne uge og de 4 kommende uger skrives for($x = 0; $x < 5; $x++) { // Er ugen den sidste i året, ændres ugens nummer til 1 if($week == (date("W", mktime(0, 0, 0, 12, 31, date("Y"))))) { $week = 1; } // Ugens nummer skrives echo "<tr><td style=\"font-weight: bold; text-align: center;\">" . $week . "</td>"; // Der udskrives 3 checkboxe for hver dag i ugen for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; } if($z == sizeof($days)) { echo "</tr>\n"; } // Der lægges 1 til ugens nummer $week += 1; } echo "</table>\n"; echo "</form>\n"; ?> Kan det lade sig gøre at lave så den skifter farve ved hver anden linje?
04. december 2006 - 18:29
#16
vent lige med det hvis det er, der kommer lige en opdate om 2 sek
04. december 2006 - 18:36
#17
opdate: <?php echo "<form name=\"form1\" method=\"post\" action=\"\">\n"; echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n"; // Ugens nummer $week = date("W"); // Dagens nummer $week_day = date("w"); // Array med ugedagenes navne $days = Array("Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"); echo "<tr bgcolor=\"#E3E3E3\"><td> <b>Uge nr. </b></td>"; // Ugens navne skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">" . $days["$z"] . "</td>"; } echo "</tr>\n"; echo "<tr bgcolor=\"#E3E3E3\"><td> - </td>"; // Tidspunkterne Morgen, Middag og Aften skrives for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\">MO</td>"; echo "<td style=\"text-align: center;\">MI</td>"; echo "<td style=\"text-align: center;\">AF</td>"; } // Denne uge og de 4 kommende uger skrives for($x = 0; $x < 5; $x++) { // Er ugen den sidste i året, ændres ugens nummer til 1 if($week == (date("W", mktime(0, 0, 0, 12, 31, date("Y"))))) { $week = 1; } // Ugens nummer skrives echo "<tr><td style=\"font-weight: bold; text-align: center;\" bgcolor=\"#F0F0F0\">" . $week . "</td>"; // Der udskrives 3 checkboxe for hver dag i ugen for($z = 0; $z < sizeof($days); $z++) { echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"DATO\"></td>"; } if($z == sizeof($days)) { echo "</tr>\n"; } // Der lægges 1 til ugens nummer $week += 1; } echo "</table>\n"; echo "<br>\n"; echo "<input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\" /> <input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\" />\n"; echo "</form>\n"; ?> Nu er der kommet lidt style osv på, men jeg synes det kunne være fedt hvis det kunne lade sig gøre at alle baggrundene bag ved checkfelterne får en anden farve det skal bare være ved hver anden dag.
04. december 2006 - 19:45
#18
Dine styles er kommet på, men jeg venter lige med at uploade det, da jeg lige skal ha' datoerne på også. :)
04. december 2006 - 22:49
#19
Det lyder fantastisk - Datoerne? :)
04. december 2006 - 22:52
#20
Hej igen, Phew, det tager lidt længere tid end jeg havde regnet med, men jeg er da kommet et godt stykke videre. Som du kan se, udskriver nedenstående denne måned, samt næste måned. Dvs. at der bliver skrevet en del flere uger end de 5 du har omtalt i dit spørgsmål. Derfor overvejer jeg at lægge det hele i et Array, og derfra vælge dags dato og så de næste 35. Det betyder dog, at hvis man er på siden en onsdag, vil det kun blive fra onsdag i første uge og til onsdag i sidste uge. Hvad siger du til den ide? Som det er nu, er det delt op i 3 dele: Første del henter de første datoer fra denne måned og de sidste datoer fra denne måned for at lave en hel uge, anden del henter resten af datoerne i denne måned startende fra dags dato og den sidste del henter alle datoerne fra næste måned. Al dette vil kunne koges ned til en del, hvis vi tager udgangspunkt i førnævnte Array. Eller er der andre, der har en bedre ide? <?php // formular og tabel startes echo "<form name=\"form1\" method=\"post\" action=\"\">\n"; echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n"; // År $year = date("Y"); // Måned $month = date("m"); // Antal dage i denne måned $days_this_month = date("t", mktime(0, 0, 0, $month, 1, $year)); // Antal dage i næste måned $days_next_month = date("t", mktime(0, 0, 0, $month, $days_this_month + 1, $year)); // Nummeret på den første ugedag i denne måned $first_weekday = date("w", mktime(0, 0, 0, $month, 1, $year)); // Hvis nummeret på den første ugedag er 0, ændres dette til 7 (Pga. at man i PHP starter med søndag, altså 0) if($first_weekday == 0) { $first_weekday = 7; } // Overskrifter echo "<tr style=\"background: #E3E3E3;\"><td style=\"font-weight: bold; text-align: center;\">Uge nr.</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Mandag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Tirsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Onsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Torsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Fredag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Lørdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Søndag</td></tr>\n"; echo "<tr style=\"background: #E3E3E3;\"><td style=\"text-align: center;\">-</td>\n"; // Tidspunkter (MOrgen, MIddag, AFten) for($x = 0; $x < 7; $x++) { echo "<td style=\"text-align: center;\">MO</td>\n"; echo "<td style=\"text-align: center;\">MI</td>\n"; echo "<td style=\"text-align: center;\">AF</td>\n"; } // Hvis første ugedag er mere end 1, indsættes et antal tomme felter, hvor checkbox er disabled for($x = 0; $x < ($first_weekday - 1); $x++) { // Hvis $x er 0, startes linien if($x == 0) { echo "<tr><td style=\"font-weight: bold; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, 1, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = date("Y.m.d", mktime(0, 0, 0, $month, 1 - ($first_weekday - 1 - $x), $year)); // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, 1 - ($first_weekday - 1 - $x), $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; } // Denne måneds datoer skrives for($x = 1; $x <= $days_this_month; $x++) { // Hvis $y er 0, startes linien if($y == 0) { echo "<tr><td style=\"font-weight: bold; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, $x, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = $year . "." . $month . "." . $x; // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, $x, $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; // Da der er 7 dage i ugen, skal linien sluttes, når $y er 7 if($y == 7) { echo "</tr>\n"; $y = 0; } } // Hvis denne måned er 12, ændres måned til 1 og der lægges 1 til året if($month == 12) { $month = 1; $year += 1; } else { $month += 1; $year = $year; } // Næste måneds datoer skrives for($x = 1; $x <= $days_next_month; $x++) { // Hvis $y er 0, startes linien if($y == 0) { echo "<tr><td style=\"font-weight: bold; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, $x, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = $year . "." . $month . "." . $x; // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, $x, $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; // Da der er 7 dage i ugen, skal linien sluttes, når $y er 7 if($y == 7) { echo "</tr>\n"; $y = 0; } } // Sluttede forrige løkke efter 0 men inden vi nåede til 7, fyldes linien med tomme felter if($y > 0 && $y < 7) { for($x = 0; $x < (7 - $y); $x++) { echo "<td colspan=\"3\"> </td>\n"; } } // Knapper skrives og tabellen og formularen afsluttes echo "<tr><td colspan=\"22\" style=\"text-align: center;\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n"; echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n"; echo "</table>\n"; echo "</form>\n"; ?>
04. december 2006 - 23:00
#21
det er genialt, og når dagene er passeret så bliver den disable ?
04. december 2006 - 23:03
#22
Det storer spørgsmål er bare hvordan jeg skal få det gemt i min db, så medarbejderne kan gå ind og se og ændre i ugerne på en person :/
04. december 2006 - 23:04
#23
men når vi har fået dette op at køre perfekt, så kan jeg da oprette en tråd mere, med spørgsmålet om databasen, for du skal ikke kun nøjes med disse 200 points :-O
04. december 2006 - 23:48
#24
He he, 200 points er fint nok. Det er jo max. Desuden er det at gemme det i en database det mindste. Det tager ikke så lang tid som dette, da det er en del snildere at gå til. Vil du så gerne ha' at jeg putter det i et Array? Det bli'r først i tirsdag, da jeg er på vej i kanen.
04. december 2006 - 23:48
#25
Jeg har lige opdateret den lidt: <?php // formular og tabel startes echo "<form name=\"form1\" method=\"post\" action=\"\">\n"; echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" class=\"logbox\">\n"; // År $year = date("Y"); // Måned $month = date("m"); // Antal dage i denne måned $days_this_month = date("t", mktime(0, 0, 0, $month, 1, $year)); // Antal dage i næste måned $days_next_month = date("t", mktime(0, 0, 0, $month, $days_this_month + 1, $year)); // Nummeret på den første ugedag i denne måned $first_weekday = date("w", mktime(0, 0, 0, $month, 1, $year)); // Hvis nummeret på den første ugedag er 0, ændres dette til 7 (Pga. at man i PHP starter med søndag, altså 0) if($first_weekday == 0) { $first_weekday = 7; } // Overskrifter echo "<tr style=\"background: #E3E3E3;\"><td style=\"font-weight: bold; text-align: center;\">Uge nr.</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Mandag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Tirsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Onsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Torsdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Fredag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Lørdag</td>\n"; echo "<td colspan=\"3\" style=\"font-weight: bold; text-align: center;\">Søndag</td></tr>\n"; echo "<tr style=\"background: #E3E3E3;\"><td style=\"text-align: center;\">-</td>\n"; // Tidspunkter (MOrgen, MIddag, AFten) for($x = 0; $x < 7; $x++) { echo "<td style=\"text-align: center;\">MO</td>\n"; echo "<td style=\"text-align: center;\">MI</td>\n"; echo "<td style=\"text-align: center;\">AF</td>\n"; } // Hvis første ugedag er mere end 1, indsættes et antal tomme felter, hvor checkbox er disabled for($x = 0; $x < ($first_weekday - 1); $x++) { // Hvis $x er 0, startes linien if($x == 0) { echo "<tr><td style=\"font-weight: bold; background: #E3E3E3; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, 1, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = date("Y.m.d", mktime(0, 0, 0, $month, 1 - ($first_weekday - 1 - $x), $year)); // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, 1 - ($first_weekday - 1 - $x), $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; } // Denne måneds datoer skrives for($x = 1; $x <= $days_this_month; $x++) { // Hvis $y er 0, startes linien if($y == 0) { echo "<tr><td style=\"font-weight: bold; background: #E3E3E3; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, $x, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = $year . "." . $month . "." . $x; // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, $x, $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; // Da der er 7 dage i ugen, skal linien sluttes, når $y er 7 if($y == 7) { echo "</tr>\n"; $y = 0; } } // Hvis denne måned er 12, ændres måned til 1 og der lægges 1 til året if($month == 12) { $month = 1; $year += 1; } else { $month += 1; $year = $year; } // Næste måneds datoer skrives for($x = 1; $x <= $days_next_month; $x++) { // Hvis $y er 0, startes linien if($y == 0) { echo "<tr><td style=\"font-weight: bold; background: #E3E3E3; text-align: center;\">" . date("W", mktime(0, 0, 0, $month, $x, $year)) . "</td>\n"; } // PHP's funktion $y = $y + 1 (Bruges til at finde ud af om linien skal slutte og starte) $y++; // Datoen findes $this_date = $year . "." . $month . "." . $x; // Er datoen inden dags dato, er checkbox disabled if(mktime(23, 59, 59, $month, $x, $year) < mktime(0, 0, 1, date("m"), date("j"), date("Y"))) { $disabled = " disabled"; } else { $disabled = ""; } // checkboxes skrives echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MO\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_MI\"" . $disabled . "></td>\n"; echo "<td style=\"text-align: center;\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $this_date . "_AF\"" . $disabled . "></td>\n"; // Da der er 7 dage i ugen, skal linien sluttes, når $y er 7 if($y == 7) { echo "</tr>\n"; $y = 0; } } // Sluttede forrige løkke efter 0 men inden vi nåede til 7, fyldes linien med tomme felter if($y > 0 && $y < 7) { for($x = 0; $x < (7 - $y); $x++) { echo "<td colspan=\"3\"> </td>\n"; } } // Knapper skrives og tabellen og formularen afsluttes echo "<tr><td colspan=\"22\" style=\"text-align: center;\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n"; echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n"; echo "</table>\n"; echo "</form>\n"; ?> Kunne være fedt hvis hele striben med "mandag" var hvid og hele striben med "tirsdag" var grå altså bag ved checkboxene, ikke ved Mo - Mi - Af og dagens navn. kan det lade sig gøre ?
05. december 2006 - 05:21
#26
Hej igen,
Så er jeg blevet færdig med formularen - Nu mangler jeg så kun at lave scriptet, der indsætter værdierne i databasen.
<?php
function dow()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
// Baggrundsfarve
$bg = $x % 2 ? "FFF" : "E3E3E3";
$print .= ($x == 0) ? "<tr><td style=\"font-weight: bold;\">Uge nr.</td>" : "";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . "; font-weight: bold;\">" . $dow["$x"] . "dag</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function shift()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
// Baggrundsfarve
$bg = $x % 2 ? "FFF" : "E3E3E3";
$print .= ($x == 0) ? "<tr><td style=\"font-weight: bold;\">-</td>" : "";
$print .= "<td style=\"background: #" . $bg . ";\">MO</td>";
$print .= "<td style=\"background: #" . $bg . ";\">MI</td>";
$print .= "<td style=\"background: #" . $bg . ";\">AF</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function formCB()
{
// Værdierne hentes udenfor funktionen
global $x;
global $month;
global $year;
// Denne dato
$date = date("Y.m.d", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Denne dato på dansk
$danish = date("d.m.Y", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på ugen
$now = date("W", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på dagen i ugen
$nowd = date("w", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Er dagen søndag, ændres nummeret på dagen i ugen
if($nowd == 0)
{
$nowd = 7;
}
$print .= ($x == 0 || $nowd == 1) ? "<tr><td style=\"font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < date("w", mktime(0, 0, 0, $month, date("d"), $year)); $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "E3E3E3" : "FFF";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Baggrundsfarve
$bg = $nowd % 2 ? "E3E3E3" : "FFF";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MO\" title=\"" . $danish . " MORGEN\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MI\" title=\"" . $danish . " MIDDAG\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_AF\" title=\"" . $danish . " AFTEN\"></td>";
$print .= ($nowd == 7) ? "</tr>\n" : "";
// Tomme felter
if($x == 34)
{
for($y = 0; $y <= (7 - date("w", mktime(0, 0, 0, $month, date("d") + 35, $year))); $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "E3E3E3" : "FFF";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
return $print;
}
// Denne måned
$month = date("m");
// Dette år
$year = date("Y");
// Ugens dage
$dow = Array("Man", "Tirs", "Ons", "Tors", "Fre", "Lør", "Søn");
// HTML koder startes
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"
http://www.w3.org/TR/html4/loose.dtd\">\n"; echo "<html>\n";
echo "<head>\n";
echo "<title>Eksperten - Arbejdstider</title>\n";
echo "<style type=\"text/css\">\n";
echo "td\n";
echo "{\n";
echo " text-align: center;\n";
echo "}\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n";
for($x = 0; $x < sizeof($dow); $x++)
{
echo dow();
}
for($x = 0; $x < sizeof($dow); $x++)
{
echo shift();
}
for($x = 0; $x < 35; $x++)
{
echo formCB();
}
// Knapper skrives og HTML koder afsluttes
echo "<tr><td colspan=\"22\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n";
echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
?>
05. december 2006 - 11:07
#27
Det er jo lige som det skal være næsten, jeg hader at være besværlig men kan den række ned med uge numre være en mørkere grå farve og så de to øverste linjer med ugedagene og MO - MI - AF også være en mørkere grå farve - og til sidst hvis mandag kan være hvid og tirsdag grå og onsdag hvid osv. Så ville det hele være PERFEKT ! Skal jeg ik oprette en ny tråd til databasen ?
05. december 2006 - 12:38
#28
Sådan...
<?php
function dow()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
// Baggrundsfarve
$bg = $x % 2 ? "CCC" : "FFF";
$print .= ($x == 0) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">Uge nr.</td>" : "";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . "; font-weight: bold;\">" . $dow["$x"] . "dag</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function shift()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
// Baggrundsfarve
$bg = $x % 2 ? "CCC" : "FFF";
$print .= ($x == 0) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">-</td>" : "";
$print .= "<td style=\"background: #" . $bg . ";\">MO</td>";
$print .= "<td style=\"background: #" . $bg . ";\">MI</td>";
$print .= "<td style=\"background: #" . $bg . ";\">AF</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function formCB()
{
// Værdierne hentes udenfor funktionen
global $x;
global $month;
global $year;
// Denne dato
$date = date("Y.m.d", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Denne dato på dansk
$danish = date("d.m.Y", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på ugen
$now = date("W", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på dagen i ugen
$nowd = date("w", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Er dagen søndag, ændres nummeret på dagen i ugen
if($nowd == 0)
{
$nowd = 7;
}
$print .= ($x == 0 || $nowd == 1) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < $nowd; $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Baggrundsfarve
$bg = $nowd % 2 ? "FFF" : "CCC";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MO\" title=\"" . $danish . " MORGEN\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MI\" title=\"" . $danish . " MIDDAG\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_AF\" title=\"" . $danish . " AFTEN\"></td>";
$print .= ($nowd == 7) ? "</tr>\n" : "";
// Tomme felter
if($x == 34 && $nowd < 7)
{
for($y = 0; $y <= (6 - $nowd); $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
return $print;
}
// Denne måned
$month = date("m");
// Dette år
$year = date("Y");
// Ugens dage
$dow = Array("Man", "Tirs", "Ons", "Tors", "Fre", "Lør", "Søn");
// HTML koder startes
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"
http://www.w3.org/TR/html4/loose.dtd\">\n"; echo "<html>\n";
echo "<head>\n";
echo "<title>Eksperten - Arbejdstider</title>\n";
echo "<style type=\"text/css\">\n";
echo "td\n";
echo "{\n";
echo " text-align: center;\n";
echo "}\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n";
for($x = 0; $x < sizeof($dow); $x++)
{
echo dow();
}
for($x = 0; $x < sizeof($dow); $x++)
{
echo shift();
}
for($x = 0; $x < 35; $x++)
{
echo formCB();
}
// Knapper skrives og HTML koder afsluttes
echo "<tr><td colspan=\"22\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n";
echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
?>
05. december 2006 - 13:00
#29
Jep det er bare lige de to øverste linje ved mandag, onsdag, fredag og søndag der skal være mærke også, altså de baggrunde hvor der står ugedagen og Mo - Mi - Af så er det nemlig færdig !.. det ville være virklig klasse. kun de to øverste td'er. Ellers er det rigtigt at den skifter farver ved checkboxene :) - Men hvis det er alt for besværligt, så lader vi det bare være som det er nu
05. december 2006 - 13:05
#30
05. december 2006 - 16:39
#31
Og den var der:
<?php
function dow()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">Uge nr.</td>" : "";
$print .= "<td colspan=\"3\" style=\"font-weight: bold;\">" . $dow["$x"] . "dag</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function shift()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">-</td>" : "";
$print .= "<td>MO</td>";
$print .= "<td>MI</td>";
$print .= "<td>AF</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function formCB()
{
// Værdierne hentes udenfor funktionen
global $x;
global $month;
global $year;
// Denne dato
$date = date("Y.m.d", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Denne dato på dansk
$danish = date("d.m.Y", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på ugen
$now = date("W", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på dagen i ugen
$nowd = date("w", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Er dagen søndag, ændres nummeret på dagen i ugen
if($nowd == 0)
{
$nowd = 7;
}
$print .= ($x == 0 || $nowd == 1) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < $nowd; $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Baggrundsfarve
$bg = $nowd % 2 ? "FFF" : "CCC";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MO\" title=\"" . $danish . " MORGEN\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MI\" title=\"" . $danish . " MIDDAG\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_AF\" title=\"" . $danish . " AFTEN\"></td>";
$print .= ($nowd == 7) ? "</tr>\n" : "";
// Tomme felter
if($x == 34 && $nowd < 7)
{
for($y = 0; $y <= (6 - $nowd); $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
return $print;
}
// Denne måned
$month = date("m");
// Dette år
$year = date("Y");
// Ugens dage
$dow = Array("Man", "Tirs", "Ons", "Tors", "Fre", "Lør", "Søn");
// HTML koder startes
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"
http://www.w3.org/TR/html4/loose.dtd\">\n"; echo "<html>\n";
echo "<head>\n";
echo "<title>Eksperten - Arbejdstider</title>\n";
echo "<style type=\"text/css\">\n";
echo "td\n";
echo "{\n";
echo " text-align: center;\n";
echo "}\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n";
for($x = 0; $x < sizeof($dow); $x++)
{
echo dow();
}
for($x = 0; $x < sizeof($dow); $x++)
{
echo shift();
}
for($x = 0; $x < 35; $x++)
{
echo formCB();
}
// Knapper skrives og HTML koder afsluttes
echo "<tr><td colspan=\"22\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n";
echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
?>
05. december 2006 - 21:38
#32
Fantastisk, nu bliver det sku ikke bedre :D :D :D. Skal jeg oprette en ny tråd til database delen ? det skal laves sådan så administratorne kan redigere i hver persons kalender. og så skulle det helst være sådan så nå dagen eller i hvert fald ugen er overstået så skal den slette sig fra DB :)
06. december 2006 - 09:09
#33
Det må du gerne, for hvis der også skal være en administrator-del, bliver det lidt større. Samtidig skal du lige overveje, om medarbejderen skal indtaste deres nummer, cpr, email eller andet når de indtaster på ovenstående formular. Endvidere skal der vel også noget bekræftelse på, om medarbejderen får de vagter, de har valgt. Enten ved at der sendes en email eller ved at der kan printes vagtplaner ud?
06. december 2006 - 09:17
#34
Okay jeg opretter lige til en admin del :) og de skal have deres cpr-nr indtastet og den findes ved at skrive $cprnr = $_SESSION['cprnr']; - :). Altså de må gerne kunne printe det ud, men det som det hele drejer sig om er at vise hvilken dage de har mulighed for at arbejde for firmaet, jeg kan sige det er til noget vikar noget nemlig :).
06. december 2006 - 09:26
#35
indtil videre TUSIND tak for hjælpen !! - du har fået points for denne, og det nye spørgsmål kan findes her
http://www.eksperten.dk/spm/749098 :)
-lukket-
06. december 2006 - 13:44
#37
Jeg har lige set der er en fejl i script, den viser 6 uger og når der er gået mandag f.eks. så kommer den ned og stå i den sidste uge. det er den uge som den regner ud til at være uge 2, der viser den kun mandag og tirsdag nu, men den skal jo egentlig ikke vises..
06. december 2006 - 18:17
#38
Det er fordi, den kører igennem løkken 35 gange, altså 35 dage, da der jo er 35 dage i 5 uger. Men jeg kan godt lave det sådan at den tager 35 - de dage i denne uge der er gået, så den slutter på en søndag? Endvidere er der en anden fejl, der gør at de nederste tomme felters baggrunde er forkert. Må jeg også lige kigge på.
06. december 2006 - 18:21
#39
Sådan kommer det så til at se ud:
<?php
function dow()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">Uge nr.</td>" : "";
$print .= "<td colspan=\"3\" style=\"font-weight: bold;\">" . $dow["$x"] . "dag</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function shift()
{
// Værdierne hentes udenfor funktionen
global $x;
global $dow;
$print .= ($x == 0) ? "<tr style=\"background: #CCC;\"><td style=\"font-weight: bold;\">-</td>" : "";
$print .= "<td>MO</td>";
$print .= "<td>MI</td>";
$print .= "<td>AF</td>";
$print .= ($x == 6) ? "</tr>\n" : "";
return $print;
}
function formCB()
{
// Værdierne hentes udenfor funktionen
global $x;
global $month;
global $year;
// Denne dato
$date = date("Y.m.d", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Denne dato på dansk
$danish = date("d.m.Y", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på ugen
$now = date("W", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Nummeret på dagen i ugen
$nowd = date("w", mktime(0, 0, 0, $month, date("d") + $x, $year));
// Er dagen søndag, ændres nummeret på dagen i ugen
if($nowd == 0)
{
$nowd = 7;
}
$print .= ($x == 0 || $nowd == 1) ? "<tr><td style=\"background: #CCC; font-weight: bold;\">" . $now . "</td>" : "";
// Tomme felter
if($x == 0)
{
for($y = 1; $y < $nowd; $y++)
{
// Baggrundsfarve
$bg = $y % 2 ? "FFF" : "CCC";
$print .= "<td colspan=\"3\" style=\"background: #" . $bg . ";\"> </td>";
}
}
// Baggrundsfarve
$bg = $nowd % 2 ? "FFF" : "CCC";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MO\" title=\"" . $danish . " MORGEN\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_MI\" title=\"" . $danish . " MIDDAG\"></td>";
$print .= "<td style=\"background: #" . $bg . ";\"><input type=\"checkbox\" name=\"shift[]\" value=\"" . $date . "_AF\" title=\"" . $danish . " AFTEN\"></td>";
$print .= ($nowd == 7) ? "</tr>\n" : "";
return $print;
}
// Denne måned
$month = date("m");
// Dette år
$year = date("Y");
// Ugens dage
$dow = Array("Man", "Tirs", "Ons", "Tors", "Fre", "Lør", "Søn");
// HTML koder startes
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"
http://www.w3.org/TR/html4/loose.dtd\">\n"; echo "<html>\n";
echo "<head>\n";
echo "<title>Eksperten - Arbejdstider</title>\n";
echo "<style type=\"text/css\">\n";
echo "td\n";
echo "{\n";
echo " text-align: center;\n";
echo "}\n";
echo "</style>\n";
echo "</head>\n";
echo "<body>\n";
echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
echo "<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\">\n";
for($x = 0; $x < sizeof($dow); $x++)
{
echo dow();
}
for($x = 0; $x < sizeof($dow); $x++)
{
echo shift();
}
for($x = 0; $x <= (35 - date("w")); $x++)
{
echo formCB();
}
// Knapper skrives og HTML koder afsluttes
echo "<tr><td colspan=\"22\"><input name=\"send\" type=\"submit\" id=\"send\" class=\"ok_input\" value=\"Send arbejdstider\">\n";
echo "<input name=\"reset\" type=\"reset\" id=\"reset\" class=\"ok_input\" value=\"Fjern alle markeringer\"></td></tr>\n";
echo "</table>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>";
?>
06. december 2006 - 19:26
#40
det er HELT PERFEKT som det er nu, damn hvor lækkert :)
06. december 2006 - 19:31
#41
Jeg har fundet ud af den gerne må sende en mail til både medarbejdere og admins og så må den gerne slette ugerne så snart ugen er overstået, men det må jeg vil ikke rigtigt sige her det skal vel være på
http://www.eksperten.dk/spm/749111 eller ?
06. december 2006 - 21:37
#42
Jeg ved ikke hva' reglerne er for så'n noget. Tak for points... Vi snakker videre på det andet spørgsmål?
06. december 2006 - 21:43
#43
jeps :D -lukket-
Vi tilbyder markedets bedste kurser inden for webudvikling