我正在为公司设计一个工作rota规划器,需要帮助显示包含工作人员详细信息的动态表。我在MySQL数据库中有以下表:Staff,Event和Job。员工表保存员工详细信息(人员,姓名,地址等),事件表(黄昏,eventName,Fromdate,Todate等)和工作表持有(Jobid,Jobdate,Eventid(fk),Staffid (FK))。 当用户从PHP表单中选择EVENT和DATE(3个下拉列表:日期,月份和年份)时,我需要从staff表中动态显示可用的人员列表。 我需要通过检查Job表中的Jobdate来显示尚未在所选日期分配工作的工作人员。 我整天都在这里,无法绕过它。我仍然在学习PHP,并且肯定会感谢我能得到的任何帮助。 我的当前代码在选择事件时显示所有工作人员:
if(isset($_POST['submit']))
{
$eventId = $_POST['eventradio'];
}
$timePeriod = $_POST['timeperiod'];
$Day = $_POST['day'];
$Month = $_POST['month'];
$Year = $_POST['year'];
$dateValue = $Year."-".$Month."-".$Day;
$selectedDate = date("Y-m-d", strtotime($dateValue));
//construct the available staff list
if ($selectedDate)
{
$staffsql = "SELECT s.StaffId, s.LastName, s.FirstName
FROM Staff s
WHERE s.StaffId NOT IN
(SELECT J.StaffId
FROM Job J
WHERE J.JobDate = ".$selectedDate.")";
$staffResult = mysql_query($staffsql) or die (mysql_error());
}
if ($staffResult){
echo "<p><table cellspacing='1' cellpadding='3'>";
echo "<th colspan=6>List of Available Staff</th>";
echo "</tr><tr><th> Select</th><th>Id</th><th></th><th>Last Name
</th><th></th><th>First Name </th></tr>";
while ($staffarray = mysql_fetch_array($staffResult))
{
echo "<tr onMouseOver= this.bgColor = 'red' onMouseOut =this.bgColor = 'white' bgcolor=
'#FFFFFF'> <td align=center><input type='checkbox' name='selectbox[]'
id='selectbox[]' value=".$staffarray['StaffId'].">
</td><td align=left>".$staffarray['StaffId']."
</td><td>  </td><td align=center>".$staffarray['LastName']."
</td><td>  </td><td align=center>".$staffarray['FirstName']."
</td></tr>";
}
echo "</table>";
}
else {
echo "<br> The Staff list can not be displayed!";
}
echo "</td></tr>";
echo "<tr><td></td>";
echo "<td align=center><input type='submit' name='Submit' value='Assign Staff'>  ";
echo "<input type='reset' value='Start Over'>";
echo "</td></tr>";
echo "</table>";
答案 0 :(得分:0)
你需要做两件事之一。
a。)在您的选择列表中添加一个onchange事件,并对服务器进行AJAX调用以撤回表数据,或者
b。)在您的选择列表中添加一个onchange事件,并将表单/页面提交给自己(因此包括从选择列表中选择的值
在您的PHP(无论哪种方式)中,使用请求中的参数(如果存在)加载适用的数据。