繁体   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