【发布时间】:2017-05-02 04:36:44
【问题描述】:
只是为了创建一些上下文:我是 PHP 新手。我正在为一个电子商务网站创建一个帐户系统,其中一个“帐户”可以与 1 个或多个“地址”相关联。我希望用户能够添加、更新和删除地址,但由于我无法弄清楚如何通过 while 循环传递特定变量,因此我正在努力使用后两个函数。
这就是我的意思:
while ($row = mysqli_fetch_array($result)) {
//address data variables
$addrId = $row['id'];
$accId = $row['account_id'];
$addrName = $row['full_name'];
$addr1 = $row['address1'];
$addr2 = $row['address2'];
$townCity = $row['towncity'];
$countyState = $row['countystate'];
$postZip = $row['postzip'];
$country = $row['country'];
$phone = $row['phone'];
//$count++;
//$_SESSION['address']=array();
$_SESSION['address'] = $addrId;
?>
<div class="addrWrapper">
<div class ="large-3 columns callout row">
<?php
echo $addrId."</br>";
echo $accId."</br>";
echo $addrName."</br>";
echo $addr1."</br>";
echo $addr2."</br>";
echo $townCity."</br>";
echo $countyState."</br>";
echo $postZip."</br>";
echo $country."</br>";
echo $phone."</br>";
//echo $count;
?>
<div class ="large-3 columns">
<a href="PHP/backend/account/addressDelete.php" class="button">Delete</a>
</div>
以上是前端,实际上我不会向用户展示所有这些信息,只是为了测试。
<?php
session_start();
//require_once('config.php');
$dbserver = "localhost";
$dbusername = "root";
$dbpassword = "";
$db = "TheNameHere";
$conn = new mysqli($dbserver, $dbusername, $dbpassword, $db);
//Check connection
if ($conn->connect_error){
die("connection failed".$conn->connect_error);
}
$address = $_SESSION['address'];
//$query1=mysqli_query($conn,"DELETE FROM useraddress WHERE id = $addrId");
echo $address;
//header("Location: ../../../index.php?page=address");
die();
?>
这是用于删除正在调试的地址的脚本。基本上,当单击其中一个地址旁边的“删除”按钮时,它将始终传递具有最大“id”的地址的变量(显然,因为有一个会话并且每次循环播放时都会更新,总是导致in '$address' 是列表中的最终地址)。
这几天我一直在重复这个问题,我尝试了很多不同的解决方案,我得出的结论是,我可能不得不以非常不同的方式来构建它我已经完成了。
任何指针将不胜感激。
PS。出于安全考虑,我不想通过 URL 传递地址“id”,变量的传递需要对用户隐藏。
【问题讨论】:
-
你试过
$_SESSION['address'][$addrId] = $accId还是类似的? -
我的建议是将 Id 槽 html 传递到 php 后端页面,该页面将删除该地址。也就是说,最好检查权限并执行逻辑删除,而不是物理删除。这样你就可以想到一个带有复选框的多选删除:)
-
$_SESSION['address'] = $addrId;在您的循环中,每次循环时都会覆盖,因此它将始终是数组/结果中的最后一个元素。
-
@Dainis Abols,是的,我尝试弄乱会话数组,但没有比使用标准“会话”更进一步。正如 Farkie 所说,循环每次都会覆盖会话。
-
@Goiku 我会尝试对你提到的事情做一些研究,干杯。
标签: php html loops variables crud