我四处寻找修复程序,但似乎都不起作用。我有一个条形码扫描仪,它输入条形码并点击文本框上的回车键,然后我希望表单响应PHP函数的结果,但它不希望。
HTML
<html>
<body>
<form actiom="" method="Get">
<input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">
</form>
</body>
</html>
PHP
<?php
$matchedproducts = [
'534513' => "iSmoka Eleaf iKiss Mini",
'798154' => "iSmoka Eleaf iStick 20W",
'223701' => "iSmoka Eleaf iStick 50W",
'811693' => "iSmoka Eleaf i118",
'796026' => "E-Liquid"
];
$barcode = $_GET['barcodeid'];
$productfound = FALSE;
function getproduct() {
foreach ($matchedproducts as $id => $product) {
if ($barcode == array_search($barcode, $matchedproducts[$id])) {
$productfound = TRUE;
echo $matchedproducts[$product];
} else {
$productfound = FALSE;
echo "No product";
}
}
}
?>
我把所有的代码都放在同一个文件里。
请注意,在您的表单中,您的名称与php代码中的名称不同。在php中搜索$_GET[barcodeid]
:的值
$barcode = $_GET['barcodeid'];
在你的html中,你有name=barcode
<input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">
也缺少检查是否设置了$_GET['barcodeid']。
此外,在您的输入字段中,您正在调用JS函数getproduct()
,而不是php函数
使用PHP有什么特别的原因吗?你可以有一个javascript函数来做你需要做的事情。这也意味着你不需要服务器。
如果你需要使用PHP,因为你还想做其他用javascript无法轻松完成的事情,或者会把游戏泄露给查看源代码的人,你应该只使用通用的"post"功能。
如果你走第二条路,那么你可以在你的PHP中检查$_POST["barcode"],并根据你想要的回声。
访问http://www.w3schools.com/php/php_forms.asp寻求一些帮助。
PHP是服务器端脚本,而JavaScript是客户端脚本。当您使用onkeydown="getproduct()"
时,页面会认为您正在调用JavaScript函数getproduct()
。相反,如果您想调用php函数,请将表单提交到.php
页面,并在那里使用该函数。
<form action="function.php" method="get">
<input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">
</form>
function.php:
<?php
$matchedproducts = [
'534513' => "iSmoka Eleaf iKiss Mini",
'798154' => "iSmoka Eleaf iStick 20W",
'223701' => "iSmoka Eleaf iStick 50W",
'811693' => "iSmoka Eleaf i118",
'796026' => "E-Liquid"
];
// Changed to barcoded, instead of barcodeid
$barcode = $_GET['barcoded'];
$productfound = FALSE;
foreach ($matchedproducts as $id => $product) {
if ($barcode == array_search($barcode, $matchedproducts[$id])) {
$productfound = TRUE;
echo $matchedproducts[$product];
} else {
$productfound = FALSE;
echo "No product";
}
}
?>