循环DropDown时MYSQL

时间:2016-03-07 13:23:36

标签: php html mysql while-loop

我有一个显示来自table student的数据的while循环和一个额外的列,该列显示来自employee表id的下拉选项,选中后,更新student表中的id。我有以下代码,但在显示时,每行只显示雇主表中的1个数据。

这是while循环。任何帮助将不胜感激,提前谢谢。

while(($row = mysql_fetch_array($search_result)) && ($row1 =mysql_fetch_array($search_result2))){
echo"<form action=manualallocation.php method=post>";
echo"<tr>";
echo "<td>" . $row['stud_ID']."</td>";
echo "<td>" . $row['stud_NAME']."</td>";
echo "<td>"."<Select name='ex1'>"."<option value='" .$row1['emp_id'] ."'>" .$row1['emp_id'] ."</option>"."</select>";
echo "<td>" . "<input type='char' name='emp_location' value='" .$row1['emp_location'] . "'/> </td>";
echo "<td>" . "<input type='char' name='stud_FIELDOFSTUDY' value='" .$row['stud_FIELDOFSTUDY'] . "'/> </td>";
echo "<td>" . "<input type='char' name='student_yearCompleted' value='" .$row['student_yearCompleted'] . "'/> </td>";
echo "<input type='hidden' name=hidden value=" . $row['stud_ID'] . ">";
echo "<td>" . "<input type='submit' name='submit' value=update". "></td>";
echo "</tr>";
echo "</form>";
}

查询:

<?php
    $connect=mysql_connect('127.0.0.1', 'root', 'root');
    if(!$connect)
    { die("Can't Connect " . mysql_error()); } 
    mysql_select_db("web",$connect); 
    if (isset($_POST['submit']))
    {
        $updatequery = "UPDATE student SET emp_id=emp_id WHERE emp_ID='$_POST[submit]'"; 
        mysql_query($updatequery,$connect); 
    }; 
    $sql="SELECT * FROM student WHERE emp_id IS NULL"; 
    $search_result=mysql_query($sql,$connect); 
    $sql2="SELECT * FROM employer "; 
    $search_result2=mysql_query($sql2,$connect); 
?>

1 个答案:

答案 0 :(得分:0)

您的while循环失败,因为两个查询返回不同的行号。此外,您不了解提取机制:在每个循环上,$row$row1值是一个查询行:如何构建<option>只有一个价值?

基本上,您必须将while()循环分开:

首先,使用雇主的完整<option>代码填充变量(用您自己的正确名称替换字段名称);

$employers = '';
while( ( $row = mysql_fetch_array( $search_result2 ) )
{
    $employers .= "<option value=\"{$row['emp_id']}\">{$row['emp_name']}</option>";
}
$employers = "<select>$employers</select>";

然后,为学生执行while()循环:

while( ( $row = mysql_fetch_array( $search_result ) )
{
    (...)
    echo "<td>" . $row['stud_NAME']."</td>";
    echo "<td>$employers</td>";
    (...)
}

通常,您必须在编写代码之前了解代码的工作方式。

另请注意,UPDATE student SET emp_id=emp_id WHERE emp_ID='$_POST[submit]'听起来像是一个不必要的查询:这意味着必须将emp_id字段设置为自己的值。

以上代码只是一个示例,可帮助您修改代码。它没有经过测试,我不知道你的代码中是否还有其他错误。您绝对必须检查编写代码的错误:在评论中遵循Jay的建议。

请注意:

  

mysql _ 语法在PHP 5.5.0中已弃用,已在PHP 7.0.0中删除。相反,应使用 MySQLi PDO_MySQL 扩展程序。

(来自PHP官方网站)