如何将下拉列表中的不同选定值插入数据库

时间:2014-02-03 09:03:01

标签: php hidden

场景:管理员将不同的公司分配给不同的学生。 问题:所有学生都获得了表格中最后一名学生的同一公司。

如何使我的隐藏输入工作,以便每个正确的公司正确选择下拉值以正确反映数据库?

$result = mysqli_query($con,"SELECT student_id, admin_no, name, GPA, gender FROM student_details WHERE jobscope1= 'Information Technology' ORDER BY `GPA` DESC; ");
$result2 = mysqli_query($con,"SELECT job_title FROM job_details WHERE jobscope='Information Technology' ORDER BY `job_title` ASC;");

            /*options sections start*/
            $options= '';
            while ($row2 = mysqli_fetch_assoc($result2))
            {
                $options .='<option value="'. $row2['job_title'] .'"> '. $row2['job_title'] .'</option>';
            }
            /*options sections end*/

            //return the array and loop through each row
            while($row = mysqli_fetch_assoc($result))
            {


            $adminno = $row['admin_no'];
            $name = $row['name'];
            $gpa = $row['GPA'];
            $gender = $row['gender'];

                  echo "<tr>";
                  echo '<input type=hidden name=admin_no value='. $adminno . '/>';
                  echo "<td>" . $adminno . "</td>";
                  echo "<td>" . $name . "</td>";
                  echo "<td>" . $gpa . "</td>";
                  echo "<td>" . $gender . "</td>"; 
                  echo "<td><select name='ddl'  { myform.submit('') }'>".$options."</select></td>";
              }
                  echo "</tr>";

php表单动作:

$query = mysqli_query($con, "SELECT * FROM student_details WHERE jobscope1 = 'Information Technology';");
while ($row = mysqli_fetch_assoc($query)) 

  $complist = $_POST['ddl'];

$result4 = mysqli_query($con, "UPDATE `student_details` SET `company`= '" . $complist . "' WHERE `jobscope1` = 'Information Technology';");

1 个答案:

答案 0 :(得分:1)

试试这个:

//return the array and loop through each row
while($row = mysqli_fetch_assoc($result))
{

    $adminno = $row['admin_no'];
    $name = $row['name'];
    $gpa = $row['GPA'];
    $gender = $row['gender'];

    echo "<tr>";
    //changed here (this is called an input array which makes it hold multiple 
    //values with same name)
    echo "<input type='hidden' name='admin_no[]' value='". $adminno ."'/>"; //edited
    echo "<td>" . $adminno . "</td>";
    echo "<td>" . $name . "</td>";
    echo "<td>" . $gpa . "</td>";
    echo "<td>" . $gender . "</td>"; 
    //changed here too
    echo "<td><select name='ddl[]' >".$options."</select></td>"; //edited
}

在你的PHP中:

if(isset($_POST['ddl'])){
   foreach( $_POST['ddl'] as $index => $val ) //edited extra { here
   {
     $result4 = mysqli_query($con, "UPDATE `student_details` 
                                    SET `company`= '" . $val . "' 
                                    WHERE `jobscope1` = 'Information Technology' 
                                    AND `admin_no` = '".$_POST['admin_no'][$index]."';");
   }
}

在此,您的所有值都将被更新(无论您是否更改了任何下拉列表)。如果您只想限制更改的下拉列表,那么您可以使用隐藏的输入变量,该变量在更改下拉列表时更改其值,并仅在隐藏的输入匹配时更新您的查询。