javascript - 使用 POST 传递多个值并过滤 DB
问题描述
这是表格
<form action="resultpage.php" method="POST" onSubmit="setValue()">
<button type="submit" class="button" id='send-value' name='storrage' value=''>Klik hier voor de laptops</button>
首先,我在提交之前使用 .JS 更改提交按钮的值:
let ram = "8GB";
let processor = "i5";
let graphcard = "2GB";
function setValue() {
document.getElementById("send-value").value = ram;
}
然后我在收到时用 PHP 查找
$ramResult = $_POST['storrage'];
$sql = "SELECT * FROM laptops WHERE ram = '$ramResult' ;";
但我希望能够查找多个值,例如 ram = 8gb 和 processor = i5 和 graphcard = 2GB
我试过 .JS :
function setValue() {
document.getElementById("send-value").value = ram, graphcard, processor;
}
但这不起作用,即使它起作用,我也无法分辨出哪些值属于ram, graphcard, processor;
我试图找出一种让 .JS 执行以下操作的方法:
function setValue() {
document.getElementById("send-value").value = "ram":ram, "graphcard":graphcard, "processor": processor;
}
这样我就可以在 PHP 中做一些事情,比如
$allResult = $_POST['storrage'];
$sql = "SELECT * FROM laptops WHERE ram = '$allResult.ram' AND graphcard = 'allResult.graphcard' AND processor = 'allResult.processor';";
PHP 可能也不会工作.. 也需要弄清楚这一点。
----编辑
所以作为一个新手,我决定创建一个新手解决方案。.JS 没有创建大量隐藏输入,而是仅在需要的区域中创建了具有值的隐藏输入(这种动态对我来说是一种胜利)。
<form id="post-form" action="resultpage.php" method="POST" onSubmit="setValue()">
<button type="submit" class="button">Klik hier voor de laptops</button>
</form>
.JS:
function setValue() {
var input = document.createElement("input");
var att = document.createAttribute("name");
att.value = "ram";
var att2 = document.createAttribute("value");
att2.value = ram;
input.setAttributeNode(att);
input.setAttributeNode(att2);
document.getElementById("post-form").appendChild(input);
}
对于所有需要的输入,我将不得不在 .JS 中重复此操作,并且仅在需要时调用该脚本,以减轻站点的处理负担。
解决方案
尝试这个
document.getElementById("send-value").value = 'ram:'+ram + ',graphcard:'+graphcard + ',processor:'+processor;
这将在 POST 中为您提供类似的结果
ram:8GB,graphcard:2GB,processor:i5
现在在 PHP 中你可以做
$convertToarray = explode(',', $_POST['storrage']);
for($i=0; $i < count($convertToarray ); $i++){
$key_value = explode(':', $convertToarray [$i]);
$end_array[$key_value [0]] = $key_value [1];
}
$sql = "select * FROM laptops WHERE ram = '".$end_array['ram']."' AND graphcard = '".$end_array['graphcard']."' AND processor = '".$end_array['processor']."'";
推荐阅读
- powershell - 无法将值“星期一,2020 年 11 月 2 日 06:39:24 PST”转换为类型“System.DateTime”
- asp.net - 为什么我可以加密 web.config 但不能在同一个盒子上解密它?Error is 参数不正确
- r - 如何在R中抓取无限滚动页面?
- javascript - 在 Blitz.js api 处理程序中运行时,Google Cloud Storage 调用失败并显示“错误:0909006C:PEM 例程:get_name:no start line”
- javascript - Alpine JS 表格数据绑定
- android - Android:如何检测当前正在获取音频流的蓝牙设备?
- postgresql - 存储具有交叉约束的时间范围的最佳方法?
- flutter - 如何通过颤动中的共享首选项保存选定的颜色?
- ios - iOS Swift 5 中的字符串计数不包含新行
- python - Python用黑白单元格绘制二维数组