从下拉菜单中自动填充两个输入框

时间:2018-07-03 02:17:51

标签: javascript php ajax

我正在尝试从mysql db表中获取两个变量,一旦用户选择了下拉选项,该表应该会自动填充。

下拉菜单将显示团队列表,输入框将显示选择团队的队长和副队长的名称(实际上,它只会在后端捕获其MemberID并将其保存在表格中)

我已经能够使用Javascript函数和Ajax来获取一名船长的名字。那部分工作正常。

我想要的是获得第二个队长的姓名/编号。

我的HTML / PHP代码在这里:

<script type="text/javascript" src="js/capt-dropdown.js"></script> 
...

		<table>
		<?php $x = 0; ?>

		  <tr style="background-color:#FFF9C4">
			<td>Select Team: </td>
			<td><select name="teamcode" id="teamcode">
				<option disabled selected value> - Select Team - </option>					
				<?php	$sql_select = mysqli_query($conn, "SELECT teamcode, team FROM team");
					while ($row = mysqli_fetch_assoc($sql_select)){
						echo '<option value = " '.$row['teamcode'].'"> '.$row['team'].' </option>';
					} ?>
				</select>
			</td>
			</tr>
			<tr>
				<td>Captain 1: </td>
				<td><input type="text" name="captain1" id="captain1"></td>			
			</tr>
			<tr>
				<td>Captain 2: </td>
				<td><input type="text" name="captain2" id="captain2"></td>					
			</tr>					

		  </tr>
		</table>

JS文件:capt-dropdown.js

$(document).ready(function() {
  $("#teamcode").change(function() {
    var team = $(this).val();
    if(team != "") {
      $.ajax({
        url:"get-captain.php",
        data:{teamcode : team},
        type:'POST',
        success:function(response) {
          var resp = $.trim(response);
          $("#captain1").html(resp);
        }
      });
    } else {
      $("#captain1").html("<option value=''>--- Select ---</option>");
    }
  });
});

php文件:get-captain.php在这里:

if(isset($_POST['teamcode'])) {
	$teamcode = trim($_POST['teamcode']);
	$sql_select = mysqli_query($conn,"SELECT surname, preferred_name, memberid FROM member WHERE memberid in 
	((SELECT captain FROM captain WHERE year = YEAR(CURDATE())  AND teamcode = '$teamcode'),
	(SELECT vcaptain FROM captain WHERE year = YEAR(CURDATE())  AND teamcode = '$teamcode'))");
	
	while ($result = mysqli_fetch_assoc($sql_select)){
		$name = ($result['surname']. ', '.$result['preferred_name']);
		echo '<option value = " '.$result['memberid']. '">'.$name.'</option>';
	}
}

成员表包含成员的姓名,姓氏和成员ID 队长表包含队长的历史数据 Captain table

get-captain.php中的查询正在运行,并且能够检索船长和vcaptain的姓名和ID。

阅读了几篇文章,但找不到与我在这里所做的类似的事情。

任何人都可以建议如何获取第二个队长(副队长)的详细信息吗? (即显示他的名字并获取他的会员ID)

请注意:这是包含许多其他信息的表格的一部分,因此,如果我在此处剪切和粘贴时错过一行,我深表歉意。

谢谢。

1 个答案:

答案 0 :(得分:0)

抱歉,由于我的代表,我暂时无法发表评论,但是队长1和2是输入,为什么您要回显选项标签并将其插入captain1中。

您应该更改get-captain.php以获取关联数组,然后echo json_encode($array);您的JavaScript可以解析json数组 var array=JSON.parse(response);  最后将数组值放入输入中

$("#captain1").html(arr[0]["surname"] + "," + arr[0]["preferred_name"]);
$("#captain1").val(arr[0]["memberid"]);
$("#captain2").html(arr[1]["surname"] + "," + arr[1]["preferred_name"]);
$("#captain2").val(arr[1]["memberid"]);

如果您与两个以上的队长打交道,那么您可以循环遍历数组并添加一个计数器。希望这是有意义的,我从来都不擅长解释。