使用php和html,我有一个表单,用于将属性数据输入到sql数据库中,每个属性都有一个名为“ property_id”的主键,只要通过该表单添加新属性,该主键就会自动为它们生成。我创建了另一种表单,以便代替插入新的属性数据,而是更新现有的属性数据,以下代码就是该表单。
<fieldset>
Select Property:<br>
<select required name="id">
<option value"">Select a property</option>
<?php
//Database connection
(It's there but I've removed it for this question)
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query("select * FROM property");
while ($row = $result->fetch_assoc()) {
unset($id, $unit, $street, $suburb);
$id = $row['id'];
$unit = $row['unit'];
$street = $row['street'];
$suburb = $row['suburb'];
echo "<option value='$id'>$unit $street $suburb</option>";
}
echo "</select>"; ?>
<br />
Unit:<br>
<input type="number" name="unit" required value="<?php echo $unit;?>">
<br />
Street:<br>
<input type="text" name="street" required value="<?php echo $street;?>">
<br />
Suburb:<br>
<input type="text" name="suburb" required value="<?php echo $suburb;?>">
<br />
Postcode:<br>
<input type="number" name="postcode" required value="<?php echo $postcode;?>">
<br />
State:<br>
<select required name="state">
<option value="">Please Select</option>
<option value="ACT">ACT</option>
<option value="NSW">NSW</option>
<option value="NT">NT</option>
<option value="QLD">QLD</option>
<option value="SA">SA</option>
<option value="TAS">TAS</option>
<option value="VIC">VIC</option>
<option value="WA">WA</option>
</select>
<br />
Employee ID:<br>
<input type="number" name="employee" required value="<?php echo $employee;?>">
<br />
Owner ID:<br>
<select required name="property">
<option value"">Select an owner</option>
<?php
//Database connection
(It's there but I've removed it for this question)
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query("select owner_id, first_name, last_name FROM property_owner");
while ($row = $result->fetch_assoc()) {
unset($id, $unit, $street, $suburb);
$id = $row['owner_id'];
$fName = $row['first_name'];
$lName = $row['last_name'];
echo "<option value='$id'>$fName $lName</option>";
}
echo "</select>"; ?>
<br />
Type of Property:<br>
<input type="radio" name="type" value="Apartment" required checked>Apartment<br />
<input type="radio" name="type" value="Town House">Town House<br />
<input type="radio" name="type" value="House">House<br />
<br />
Rent:<br>
<input type="number" name="rent" value="<?php echo $rent;?>"><br />
Bedroom:<br>
<input type="number" name="bedroom" value="<?php echo $bedroom;?>"><br />
Bathroom:<br>
<input type="number" name="bathroom" value="<?php echo $bathroom;?>"><br />
Furnished:<br>
<input name="furnished" type="radio" value="1" checked>Yes<br>
<input name="furnished" type="radio" value="0" checked>No<br>
Property Description:<br>
<textarea name="description" cols="50" rows="15"></textarea>
<br />
<p></p>
<input type="submit" name="SUBMIT" value="Submit">
我一直在关注W3学校的教程,并从其他stackflow问题中学习一些细节。我想知道的是,使用顶部的下拉菜单(选择属性,然后通过其ID动态列出属性),如何根据sql数据库中的现有值填充不同的表单字段?
最佳答案
如果我理解正确,那么每次选择选择选项正确时,您都试图从数据库中获取值吗?这需要您发出服务器请求,因为您不能在客户端进行。
您将需要在选择框中添加一个事件处理程序,然后添加一个ajax调用来返回所需的值。
使用Jquery(更具可读性)
//将此添加到头部
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
//包括并修改以下JavaScript:
<script type="text/javascript">
$(document).ready(function(){
$('select[name=id]').on('change', function(){
var id = $(this).val();
$.ajax(url: 'getDataFromSQL.php?id=' + id,
success: function(data){
/*prepop the form from the data returned*/
/* e.g. if you are returning json */
/* $('input[name=id]').val(data.rent); */
}
);
});
});
</script>
或者,您可以在页面加载时从sql数据库输出所有变量。这样就不需要ajax调用,但是您的表单就不会尽可能实时。
您需要了解的内容:
您必须知道客户端和服务器端之间的区别
https://softwareengineering.stackexchange.com/questions/206254/difference-between-a-server-and-a-client
您可能要查找ajax
http://www.codeproject.com/Articles/14142/AJAX-Explained
您可能要探索事件侦听器:
https://api.jquery.com/category/events/
关于php - 根据选择字段中的值自动填充表单字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32803251/