我四处寻找修复但似乎没有工作。 我有一个条形码扫描器输入条形码并点击文本框中的输入,然后我希望表单回显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";
}
}
}
?>
我将所有代码放在同一个文件中。
答案 0 :(得分:0)
请注意,在您的表单中,您的PHP代码中有不同的名称。
在您的PHP中,您搜索$_GET[barcodeid]
的值:
$barcode = $_GET['barcodeid'];
在您的HTML中,您有name=barcode
<input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">
还缺少检查是否设置了$ _GET [&#39;条形码&#39;]。
同样在输入字段中,您调用JS函数getproduct()
而不是PHP函数
答案 1 :(得分:0)
您是否有特殊原因使用PHP? 你可以只使用一个javascript函数来完成你需要做的事情。这也意味着您不需要服务器。
如果您需要使用PHP,因为您还想做其他无法在javascript中轻松完成的事情,或者将游戏提供给查看源代码的人,那么您应该只使用一般的“帖子”功能。
如果你沿着第二条路走下去,你可以在你的PHP中检查$ _POST [“barcoded”]并回复你想要的任何内容。
答案 2 :(得分:0)
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";
}
}
?>