我试图研究这个,并尝试了一些修复,结果一团糟。我是新手,并且我知道我使用的是弃用的PHP版本,代码不是我的工作但是我坚持修复这个工作,因为我将受益于减少错误并让其他人加入维护数据。我正在更改曾经充满硬编码选择框的PHP / MySQL应用程序,我已经在一个名为“departments”的表中创建了一个小的html表单给CRUD一组部门名称,现在我在整个站点中交叉引用它。 mysql“department”表有3个字段department_id,status,department_name
我在更新一个名为'staff'的表时遇到问题,它允许在员工表中CRUD这些数据但是在表单的页面加载时它没有填充部门名称,它显示一个空的选择框。 'staff'表中的相关字段是staff_company。 我可以打开一个下拉框,其中填充了所有正确的选项,如果我保持框不变,并更新表单上的其他数据,它会发布原始正确的department_id,保持数据的完整性,并刷新页面正确的部门名称确实显示。这是一个问题,如果其他人使用它,因为他们可能认为该字段是空的,当他们尝试编辑,可能做出错误的选择,它也很草率,我的想法是,我不知道如何不及早声明变量任何建议在新手谈话/初学者谈话将被欣赏以下代码的一部分 - 加上我需要了解我哪里出错了所以我可以提高我的技能(注意页面大约1600行,因此不张贴整页)。
//editing departments using department id//
$select_dept_names = "SELECT *
FROM `departments`
WHERE status = 'active'
ORDER BY department_name ASC ";
$run_select_dept = mysql_query($select_dept_names,$link);
print(" <tr><td id='employee_left'>Department:</td><td><select name=\"staff_company\">
<option value=\"".$grab_staff['staff_company']."\">".$dept_data['department_name']."</option>");
while($dept_data=mysql_fetch_array($run_select_dept))
{
print("<option value=\"".$dept_data['department_id']."\">".$dept_data['department_name']."</option>");
}print("
</select></td></tr>");
非常感谢 - Cheers Jase
更新了以下代码
//line 346 queries
$select_dept_names = "SELECT * FROM departments
ORDER BY department_name ASC ";
// line 363 - storing and fetching data
$run_select_dept = mysql_query($select_dept_names,$link);
$dept_data = mysql_fetch_array($run_select_dept);
// line 1147 - editing departments using department id///////////NEEDS WORK Only showing first department then on F5 displays existing department
//var_dump($main_report[department]); die(); - outputs only one line from the 'department' table
if($main_report['department'] = $dept_data['department_id'])
{
print(" <table id='edit_table_within'>Department:</td><td> <select name=\"department\">
<option value=\"".$main_report['department']."\">".$dept_data['department_name']." </option>");
}
else print("<table id='edit_table_within'>Department:</td><td> <select name=\"department\"> <option value=\"\">Select..</option>");
while($dept_data=mysql_fetch_array($run_select_dept))
{
print("<option value=\"".$dept_data['department_id']."\">".$dept_data['department_name']." </option>");
}print("
</select></td></tr>");
答案 0 :(得分:0)
如果我对你了解得足够好(而且我可能不会),我建议您添加一段代码,以便在确认数据已添加或更改为数据库时自动刷新页面。此外,您在下拉框中有一个空白框,因为您正在选择默认选项。希望我能理解你的问题
答案 1 :(得分:0)
经过相当长的时间抨击代码后我找到了一个解决方案,这可能是丑陋的,可能有更有效的方法来做到这一点,但这里是最适合我的代码片段
//editing departments using department id//
$select_o_dept_names = "SELECT *
FROM `departments`
WHERE department_id = ".$main_report['department']."";
$run_select_o_dept = mysql_query($select_o_dept_names,$link);
$dept_o_data=mysql_fetch_array($run_select_o_dept);
$select_dept_names = "SELECT *
FROM `departments`
WHERE status = 'active'
ORDER BY department_name ASC ";
$run_select_dept = mysql_query($select_dept_names,$link);
print("<table id='edit_table_within'>Department:</td><td><select name=\"department\">
<option value=\"".$main_report['department']."\">".$dept_o_data['department_name']."</option>");
while($dept_data=mysql_fetch_array($run_select_dept))
{
print("<option value=\"".$dept_data['department_id']."\">".$dept_data['department_name']."</option>");
}print("
</select></td></tr>");