[英]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.