>我有一个while循环,显示来自表学生的数据和一个额外的列,显示员工表ID的下拉选择,当选择时,将更新学生表中的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);
?>
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官方网站)