我有一个下拉列表,其中列出了为客户保存的所有地址。根据客户选择的地址,我必须在会话中设置送货地址。
这是我在做出选择后想要的结果:
$_SESSION['order']['delivery']['address'] = $choice['id']
$choice['id']
是我从数组中检索的值,并且对应于传递地址的ID。
我得到$address
的价值来自:
$address = $db->get_delivery_addresses_by_user_id($_SESSION['js_user_id']);
我的下拉代码是:
<label class="required" for="delivery_address">Please select Address</label>
<div class="select-holder">
<form name="select-address-form" method="POST" action="">
<select name="delivery_address" id="delivery_address">
<option value="">Select Address</option>
<?php
foreach($address as $id => $choice) {
echo "<option value=" . $choice['id'] . ">" . $choice['address_name'] . "</option>";
} ?>
</select>
<button type="submit" name="action" value="set address">
</form>
</div>
实现这一目标的最佳方法是什么?
谢谢。
答案 0 :(得分:0)
上面某处需要(你很可能有这个):
session_start();
然后对POST
:
if (isset($_POST['delivery_address'])){
$_SESSION['order']['delivery']['address'] = $_POST['delivery_address'];
session_write_close();
header("Location:" . $_SERVER['REQUEST_URI']); //refresh page
exit; //ensure no more code execution
}
注意:您必须在将任何文本输出到浏览器之前放置代码, 或重定向无效。这意味着把它放在前面 打印
<!DOCTYPE>
。
您可以通过在某处打印出会话数组来验证它的工作原理:
print_r($_SESSION);