我有一个显示来自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);
?>
答案 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官方网站)