Ein frohes neues Jahr an alle Forenmitglieder.
Ich bearbeite gerade einen Dienstplaner der die Schichtdienste aller Angestellten anzeigt.
Dazu wird nach Auswahl eines Monat/Jahr eine Tabelle angezeigt in der horizontal die Tage des Monats und vertikal alle Angestellten untereinander dargestellt werden.
Die eingetragenen Dienstarten (Tagschicht, Nachtschicht ect. ) werden bei jedem Angestellten an dem entsprechenden Tag (mit entsprechender Formatierung und ggf. vorhandenem Kommentar als 'title') angezeigt.
Nun möchte ich das beim anklicken einer Tabellenzelle der entsprechende Datumswert für den angeklickten Tag (Spalte) und die NutzerID des angeklickten Nutzers (Zeile) zur Ersteingabe bzw. Bearbeitung mittels $_POST übergeben werden.
Das onklick event befindet sich im Tag der Tabellenzelle: (echo "<td onclick='document.edit_data.submit()'; align='center'"
...
die Input Felder in den Zellen zeigen die korrekten Werte an, aber beim klick auf eine Zelle werden diese nicht richtig übergeben.
Ich vermute das bei der Übermittlung der Daten die "letzten" Werte aus den Schleifen übergeben werden, aber ich habe keine Ahnung wie ich das abfangen kann.
Wäre nett wenn mir jmd helfen könnte.
Ich bearbeite gerade einen Dienstplaner der die Schichtdienste aller Angestellten anzeigt.
Dazu wird nach Auswahl eines Monat/Jahr eine Tabelle angezeigt in der horizontal die Tage des Monats und vertikal alle Angestellten untereinander dargestellt werden.
Die eingetragenen Dienstarten (Tagschicht, Nachtschicht ect. ) werden bei jedem Angestellten an dem entsprechenden Tag (mit entsprechender Formatierung und ggf. vorhandenem Kommentar als 'title') angezeigt.
Nun möchte ich das beim anklicken einer Tabellenzelle der entsprechende Datumswert für den angeklickten Tag (Spalte) und die NutzerID des angeklickten Nutzers (Zeile) zur Ersteingabe bzw. Bearbeitung mittels $_POST übergeben werden.
Das onklick event befindet sich im Tag der Tabellenzelle: (echo "<td onclick='document.edit_data.submit()'; align='center'"
PHP-Code:
<div>
<fieldset class="table_list">
<form class="frm" name='edit_data' method='POST' action='planning.php?mpkt=1'>
<table class="table" align='center'>
<thead class="frm">
<tr class="frm">
<th align='left' width='160px'></th>
<?php
// Schleife für Tage des Monats / 1.Zeile
for ($selTag = 1; $selTag <= date("t",$selDatum); $selTag++)
{
$selDatum = mktime(0, 0, 0, $selMonat, $selTag, $selJahr); // selektietes Datum als "timestamp"
$df_tag = Dienstfrei($selMonat, $selTag, $selJahr); // Übergabewert Funktion Dienstfrei [0]=Mo.-Fr. [1]=Sa. [2]=Sa+ [3]=So./Feiertag
$ferien_tag = Ferien($selMonat, $selTag, $selJahr); // Übergabewert Funktion Ferien [0]=keine Ferien [1]=Ferien in Bayern
echo "<th align='center' width='28px' ";
IF ($df_tag)
{
echo "bgcolor='#DDDDDD' ";
}
Else
{
echo "bgcolor='#F5F5F5' ";
}
IF ($_aktDatum == $selDatum)
{
echo "style='border: solid 1px red; padding-top 3px'>";
}
Else
{
echo "style='border: none; padding-top: 3px'>";
}
# Ausgabe Tage u. Bezeichnung des Wochentags
echo date ("d", $selDatum) . "<br>" .
"<div style='font-size: 10px; ";
# Ausgabe der Ferien in Bayern
IF ($ferien_tag)
{
echo "border-bottom: solid 5px #85ADAD;' title='Ferien'>";
}
Else
{
echo "border-bottom: solid 5px transparent;'>";
}
echo strtr(date("w", $selDatum), $arrTage_kz) . "</div>";
echo "</th>";
}
?>
</tr>
</thead>
<?php
// Gruppierung der Datensätze nach Fachbereichen
$sql_o = "SELECT * FROM `unitc`
INNER JOIN `organ` ON organ.orgkey = unitc.fk_orgkey
WHERE `orgid` = '$_OID'
ORDER BY `unitcid` asc";
$res_o = mysql_query($sql_o);
while($row=mysql_fetch_array($res_o))
{
$cid = $row['unitcid'];
$cname = $row['unitcname'];
echo "<tr class='frm'>";
echo "<td class='frm_o' colspan='$selTag' >";
echo $cname;
echo "</td>";
echo "</tr>";
// Zeilenweise Auflistung der Nutzer (Hauptbereich der Tabelle)
$sql_u = "SELECT `rankshort`, `surname`, `forename`, userid FROM `user`
INNER JOIN `rank` ON rank.rankkey = user.fk_rankkey
INNER JOIN `role` ON role.rolekey = user.fk_rolekey
INNER JOIN `organ` ON organ.orgkey = user.fk_orgkey
INNER JOIN `unitc` ON unitckey = user.fk_unitckey
WHERE `staffno` != 0 AND `orgid` = '$_OID' AND `unitcid` = $cid
ORDER BY `roleid` desc, `rankid` desc, `surname` asc";
$res_u = mysql_query($sql_u);
while($row=mysql_fetch_array($res_u))
{
$rank = $row['rankshort'];
$name = $row['surname'];
$vname = $row['forename'];
$userid = $row['userid'];
echo "<tr class='frm'>";
// 1. Spalte Personal (DstG, Name, Vorname)
echo "<td align='left'>";
echo $rank . " " . $name . " " . $vname;
echo "</td>";
// Tagesspalten für den entsprechenden Monat
for ($selTag = 1; $selTag <= date("t",$selDatum); $selTag++)
{
$selDatum = mktime(0, 0, 0, $selMonat, $selTag, $selJahr); // selektietes Datum als "timestamp"
$df_tag = Dienstfrei($selMonat, $selTag, $selJahr); // Übergabewert Funktion Dienstfrei [0]=Mo.-Fr. [1]=Sa. [2]=Sa+ [3]=So./Feiertag
echo "<td onclick='document.edit_data.submit()'; align='center'";
IF ($df_tag)
{
echo "bgcolor='#DDDDDD' ";
}
Else
{
echo "bgcolor='#F5F5F5' ";
}
IF ($_aktDatum == $selDatum)
{
echo "style='border:solid 1px red'>";
}
Else
{
echo "style='border:none'>";
}
// Zeilenweise Auflistung der Nutzerdaten (Hauptbereich der Tabelle)
$selDatum = date("Y-m-d",$selDatum); # Umwandlung in strTime in Datumsformat
$sql_d = "SELECT fk_userid, shiftdate, shiftshort, shiftcolour, comments
FROM `data_$_OID`
INNER JOIN `shift` ON `shift`.shiftkey = `data_$_OID`.fk_shiftkey
WHERE `data_$_OID`.fk_userid = '$userid' AND shiftdate = '$selDatum'";
$res_d = mysql_query($sql_d);
while($row=mysql_fetch_array($res_d))
{
$fk_userid = $row['fk_userid'];
$shiftdate = $row['shiftdate'];
$shiftshort = $row['shiftshort'];
$shiftcolour = $row['shiftcolour'];
$comments = $row['comments'];
// <div> für Formatierung der Daten und Anzeige der Kommentare
echo "<div style='line-height: 16px; font-weight: 100; background: $shiftcolour; ";
If ($comments != NULL)
{
echo "font-weight: 700; font-style: italic;' title='$comments"; # Format u. Ausgabe 'Comments'
}
echo "' >";
echo $shiftshort . "</div>"; # Ausgabe Schichtart
}
// Formularfelder für Datum und NutzerId (hier noch als Text später 'hidden')
echo "<input type='text' name='sDatum' value='$selDatum'>"; // Datum der Spalte
echo "<input type='text' name='sUser' value='$userid'>"; // UserId der Benutzerzeile
echo "</td>";
}
echo "</tr>";
}
}
?>
</table>
</form>
</fieldset>
</div>
<?php
$S = $_POST['sDatum'];
$U = $_POST['sUser'];
echo $S . "/" . $U;
?>
die Input Felder in den Zellen zeigen die korrekten Werte an, aber beim klick auf eine Zelle werden diese nicht richtig übergeben.
Ich vermute das bei der Übermittlung der Daten die "letzten" Werte aus den Schleifen übergeben werden, aber ich habe keine Ahnung wie ich das abfangen kann.
Wäre nett wenn mir jmd helfen könnte.
Kommentar