簡體   English   中英

如何從while循環中獲取唯一的按鈕ID? (PHP)

[英]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 注入持開放態度,應該使用參數化的准備好的語句而不是手動構建查詢。 它們由PDOMySQLi提供。 永遠不要相信任何類型的輸入,即使您的查詢僅由受信任的用戶執行,您仍然有損壞數據的風險 Escaping 不夠用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM