PHP提交表单问题

时间:2015-12-05 20:52:26

标签: php html

我四处寻找修复但似乎没有工作。 我有一个条形码扫描器输入条形码并点击文本框中的输入,然后我希望表单回显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";
        }
    }
}
?>

我将所有代码放在同一个文件中。

3 个答案:

答案 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”]并回复你想要的任何内容。

访问http://www.w3schools.com/php/php_forms.asp寻求帮助。

答案 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";
        }
    }
?>