只是爲了創建一些上下文:我是一個PHP新手。我正在爲電子商務網站創建一個帳戶系統,其中一個「帳戶」可以與一個或多個「地址」相關聯。我希望用戶能夠添加,更新和刪除地址,並且由於我無法弄清楚如何通過while循環傳遞特定變量,所以我正努力應對後兩種功能。將特定變量從while循環傳遞到另一個PHP文件
這裏就是我的意思是:
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'的地址變量(顯然,因爲有一個會話,並且每次循環播放時都會更新,總會產生在'$地址'是列表中的最終地址)。
我一直在回顧這一兩天,現在我已經嘗試了很多不同的解決方案,並且我得出結論,我可能必須以非常不同的方式構造我是如何做到的。
任何指針將不勝感激。
PS。由於安全考慮,我不想通過URL傳遞地址'id',因此需要將該變量的傳遞隱藏給用戶。
你是否試過'$ _SESSION ['address'] [$ addrId] = $ accId'或者相似的文件? – Peon
我的建議是將Id trough html傳遞給一個將刪除該地址的php後端頁面。這表示更好地檢查權限並執行邏輯刪除,而不是物理上的刪除。這樣你就可以想到用複選框刪除多選刪除:) – Goikiu
$ _SESSION ['address'] = $ addrId;您的循環中的 將在每次循環結束時覆蓋它,因此它將始終是數組/結果中的最後一個元素。 – Farkie