PHP提交表单问题


PHP Submit Form Problems

我四处寻找修复程序,但似乎都不起作用。我有一个条形码扫描仪,它输入条形码并点击文本框上的回车键,然后我希望表单响应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";
        }
    }
?>