在刷新页面之前,MySql数据不会显示在html表单上

时间:2015-07-12 14:37:38

标签: php html mysql

我试图研究这个,并尝试了一些修复,结果一团糟。我是新手,并且我知道我使用的是弃用的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>");

2 个答案:

答案 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>");