javascript - 如何从while循环中获取唯一的按钮ID?(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 使按钮独一无二,但无济于事,希望你们中的一些人能在这里找到解决方案?
- 对不起意大利面代码
解决方案
对于您提供的代码,您可以在表单中添加隐藏的输入元素。
使用相同的名称并将值设置为您想要的唯一 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']
并且您的代码应该按您的预期工作。
超出问题范围的一些额外说明;
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提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,您仍然有损坏数据的风险。逃避是不够的
推荐阅读
- java - Spring Data @JoinColumn 和实体更新
- qt - 在 mime 数据函数中制作树结构
- jquery - 使用 jQuery 限制复选框(一次一个类别和一个子类别)
- ios - 使用 swift 中的按钮操作控制 Web 视图
- python-3.x - 如何“PUT”json数据包含汉字?
- javascript - 运行位于 fastclick 中的测试会导致 Jest 崩溃
- javascript - 谷歌表格脚本不起作用?(用于更改其他选项卡中值的数组)
- javascript - 通过数字或字符串为 Date() 赋值有什么区别?
- javascript - 如何使用 v-for 循环使用 Vue.js 遍历列
- javascript - 如何获得对象acc的最大值形式。到不同的-不同的键