Javascript 在选择mysqli请求行下拉选项上填充表单字段
请在附件中找到我检索当前登录用户相关地址的工作示例的副本 mysqli查询正在成功打印与会话用户名关联的保存到mysql数据库的地址选项。使用会话用户名在提交时也成功保存了地址 但是,我想添加一些功能,用select类中的selected选项填充表单字段 表单用于签出页面,登录用户可以在其中选择以前保存的地址以完成签出过程 非常感谢您的帮助 表架构: 已将用户名列更新为唯一,现在收到重复的密钥错误 代码更新如下:Javascript 在选择mysqli请求行下拉选项上填充表单字段,javascript,php,mysql,ajax,mysqli,Javascript,Php,Mysql,Ajax,Mysqli,请在附件中找到我检索当前登录用户相关地址的工作示例的副本 mysqli查询正在成功打印与会话用户名关联的保存到mysql数据库的地址选项。使用会话用户名在提交时也成功保存了地址 但是,我想添加一些功能,用select类中的selected选项填充表单字段 表单用于签出页面,登录用户可以在其中选择以前保存的地址以完成签出过程 非常感谢您的帮助 表架构: 已将用户名列更新为唯一,现在收到重复的密钥错误 代码更新如下: <div class="delivery-address-sele
<div class="delivery-address-select">
<select class="delivery-address-form-control" name="address">
<option>Select An Address</option>
$servername = "####";
$username = "####";
$password = "###";
$dbname = "####";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$username = $_SESSION['username'];
$sql = "SELECT streetAddress, extendedAddress, locality, region, postalCode FROM addresses WHERE username='$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while ($row = $result->fetch_array()) {
if (!empty($_POST['address']) && $_POST['address'] == $row['id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
echo '<option '.$selected.' value="'.$row["id"].'">'.$row["streetAddress"].', '.$row["extendedAddress"].', '.$row["locality"].', '.$row["region"].', '.$row["postalCode"].'</option>';
}
} else {
echo "0 results";
}
$conn->close();?>
</select>
</div>
<form id="checkout" method="post" action="server.php">
<form id="saveAddress" method="post" action="insert.php">
<div class="add-an-address">
<div class="add-an-address-title">
<button id="add-new-address" class="add-new-address">Add new address</button>
</div>
<div class="add-an-address-container">
<div class="add-an-address-form">
<div class="add-address-form-group">
<div class="add-address-name-section">
<input type="hidden" name="username" value="<?php echo $username; ?>" />
<input type="text" name="firstName" class="delivery-address-form-control-first-name" placeholder="First Name" />
</div>
<div class="add-address-name-section">
<input type="text" name="lastName" class="add-address-form-control" placeholder="Last Name" />
</div>
</div>
<div class="add-address-form-group">
<input type="text" name="company" class="add-address-form-control" placeholder="Business Name" />
</div>
<div class="add-address-form-group">
<input type="number" name="phone" class="add-address-form-control" placeholder="Mobile Phone" />
</div>
<div class="add-address-form-group">
<div class="street-left-section">
<input type="text" name="streetAddress" class="delivery-address-form-control-first-name" placeholder="Street Address" />
</div>
<div class="street-right-section">
<input type="text" name="extendedAddress" class="add-address-form-control" placeholder="Apt, Suite" />
</div>
</div>
<div class="add-address-form-group">
<div class="add-address-name-section">
<input type="text" name="locality" class="delivery-address-form-control-first-name" placeholder="City" />
</div>
<div class="street-right-section">
<input type="text" name="region" class="delivery-address-form-control-first-name" placeholder="State" />
</div>
<div class="street-right-section">
<input type="text" name="postalCode" class="add-address-form-control" placeholder="Postal Code" />
</div>
</div>
<div class="add-address-form-group">
<input type="text" name="add-address-business-notes" class="add-address-form-control" placeholder="Notes" />
</div>
<div class="add-address-form-group-buttons">
<button class="add-address-cancel" type="reset" id="add-address-cancel">Cancel</button>
<button type="submit" method="post" formaction="insert.php">Save</button>
</div>
</form>
</div>
</div>
</div>`
您可以使用以下代码。注意,您必须使用准备好的语句来避免SELECT查询中的SQL注入。还要确保列用户名是唯一的 为选择框添加名称属性
<select class="delivery-address-form-control" name="address">
然后在while循环中:
while ($row = $result->fetch_array()) {
if (!empty($_POST['address']) && $_POST['address'] == $row['id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
echo '<option '.$selected.' value="'.$row["id"].'">'.$row["streetAddress"].', '.$row["extendedAddress"].', '.$row["locality"].', '.$row["region"].', '.$row["postalCode"].'</option>';
}
您的地址表中有主键吗?感谢您的快速响应@KostasMitsarakis,我已经包括了表结构的打印屏幕。没有独特的栏目。请检查我的答案,并告诉我这是否是您所需要的。@KostasMitsarakis非常感谢您!我现在就来试试我试过了,使这个专栏独一无二。当我尝试添加第二个地址时,我得到了一个amylola错误:无法执行INSERT INTO addresses用户名、streetAddress、extendedAddress、Location、region、postalCode值'amylola','Fake Addresssss','Fake','Fake','Fake','08002'。键“username”Unique的重复条目“amylola”意味着您不能在列行中有两倍于相同值。因此,数据不插入是很自然的。是的,我理解这只是我想知道您是否有建议,因为客户可能需要保存多个地址:再次感谢您的帮助!为此,您必须创建另一个表customer,在地址表中您将拥有外键customer\u id。然后,您可以在地址表中拥有任意数量的客户。非常感谢您的澄清,我现在将更改为外键!但是,地址没有填充字段,我现在将附加打印屏幕。我现在使用的代码包含在最新的编辑中。它包括while循环和select类: