首页 > 解决方案 > 使用 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 中重复此操作,并且仅在需要时调用该脚本,以减轻站点的处理负担。

标签: javascriptphphtml

解决方案


尝试这个

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']."'";

推荐阅读