[英]How to get unique button id from a while loop? (PHP)
首先這是我的代碼:
session_start();
require_once "config.php";
$email = $_SESSION["email"];
$result = mysqli_query($link,"SELECT * FROM cuponai WHERE gmail='$email' AND panaudoti=0");
echo "<table border='1'>
<tr>
<th>Cupono kodas</th>
<th>Apply code</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr> ";
echo "<td>" . $row['cuponas'] . "</td>";
echo "<td> <form method='post'><input type='submit' name='". $row['cuponas'] ."' value='submit'></from></td>";
echo "</tr>";
}
echo "</table>";
if(isset($_POST['???????'])) {
$sql = "UPDATE cuponai SET panaudoti=1 WHERE cuponas='????????????' ";
if ($link->query($sql) === TRUE) {
echo "YOU DID IT WOO";
} else {
echo "Error updating record: " . $link->error;
}
}
mysqli_close($link);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
</head>
<body>
</body>
</html>
問號中的部分是我苦苦掙扎的地方......基本上我正在制作這個網站,您可以在其中看到您購買的優惠券,每個優惠券附近都有一個應用按鈕,因此您基本上有一個列表並需要應用它們應用它們后,我希望它也刷新頁面,並且應用的優惠券消失並在數據庫中標記為已使用。 但是我一直在摸不着頭腦,並試圖用 javascirpt 使按鈕獨一無二,但無濟於事,希望你們中的一些人能在這里找到解決方案?
- 對不起意大利面代碼
對於您提供的代碼,您可以在 forms 中添加隱藏的輸入元素。
使用相同的名稱並將值設置為您想要的唯一 ID。 此輸入的值和名稱將發送到文件的 PHP 部分,您可以在$_POST
數組中訪問它,如下所示; $_POST['name_of_input']
簡而言之,您必須對代碼進行以下調整以使其按預期工作;
改變這個
echo "<td> <form method='post'><input type='submit' name='". $row['cuponas'] ."' value='submit'></from></td>";
對此
echo "<td> <form method='post'><input type='hidden' name='couponid' value='". $row['cuponas'] ."'><input type='submit' name='". $row['cuponas'] ."' value='submit'></from></td>";
然后改變這個
if(isset($_POST['???????'])) {
$sql = "UPDATE cuponai SET panaudoti=1 WHERE cuponas='????????????' ";
對此
if(isset($_POST['couponid'])) {
$sql = "UPDATE cuponai SET panaudoti=1 WHERE cuponas='".$_POST['couponid']."' ";
您的$_POST['couponid']
將保存$row['cuponas']
的數據,您的代碼應該可以按預期工作。
除了問題的 scope 之外,還有一些額外的說明;
1 . 您當前正在回顯您在<!DOCTYPE html>
標記之前在 PHP 中創建的 HTML。 盡管瀏覽器會對此進行糾正,但這不是正確的 HTML 形式。
與其在文檔頂部回顯所有內容,不如將其存儲在一個變量中並在<body>
標記內回顯它。
而不是這個;
echo "<table border='1'>
<tr>
<th>Cupono kodas</th>
<th>Apply code</th>
</tr>";
你可以使用;
$html_to_echo = "<table border='1'>
<tr>
<th>Cupono kodas</th>
<th>Apply code</th>
</tr>";
要添加到這個變量,你可以使用這樣的東西;
$html_to_echo .= "<tr> ";
然后在頁面的 HTML 部分;
<body>
<?php echo $html_to_echo; ?>
</body>
可以像這樣在 PHP 文檔中交織 PHP 和 HTML。
2 . 盡管在您的問題的評論中已經提到過,但這里有一個額外的 SQL 注射警告,供將來經過的人使用。
警告:您對SQL 注入持開放態度,應該使用參數化的准備好的語句而不是手動構建查詢。 它們由PDO或MySQLi提供。 永遠不要相信任何類型的輸入,即使您的查詢僅由受信任的用戶執行,您仍然有損壞數據的風險。 Escaping 不夠用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.