Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP提交表单问题_Php_Html - Fatal编程技术网

PHP提交表单问题

PHP提交表单问题,php,html,Php,Html,我四处寻找修复方法,但似乎没有一个有效。 我有一个条形码扫描器,它输入条形码,然后单击文本框上的enter,然后我希望表单返回PHP函数的结果,但它不想这样做 HTML PHP 我将所有代码都放在同一个文件中。请注意,表单中的名称与php代码中的名称不同。 在php中搜索$\u GET[barcodeid]的值: $barcode = $_GET['barcodeid']; 在html中有name=barcode <input type="text" placeholder="s

我四处寻找修复方法,但似乎没有一个有效。 我有一个条形码扫描器,它输入条形码,然后单击文本框上的enter,然后我希望表单返回PHP函数的结果,但它不想这样做

HTML


PHP



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

请注意,表单中的名称与php代码中的名称不同。 在php中搜索
$\u GET[barcodeid]
的值:

$barcode = $_GET['barcodeid'];
在html中有
name=barcode

<input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">

还缺少检查是否设置了$\u GET['barcodeid']


另外,在输入字段中,您调用的是JS函数
getproduct()
,而不是php函数

使用php有什么特殊原因吗? 您可以只使用一个javascript函数来执行您需要执行的操作。这也意味着你不需要服务器

如果您需要使用PHP,因为您还想做其他一些用javascript无法轻松完成的事情,或者需要将游戏分发给查看源代码的人,那么您应该使用通用的“post”功能

如果您选择第二条路径,那么您可以在PHP中检查$_POST[“barcoded”],并根据需要进行回显


请访问以获取帮助。

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


php是服务器端。Javascript在客户端。不能那样调用getproduct()。您需要先提交表单,然后php才能对数据执行任何操作。您似乎从错误的位置调用了getproduct()(一个php函数)。我假设您希望在onkeyup事件中从服务器检索数据。您应该熟悉AJAX。为什么不使用数据库调用来查找产品?这是正确的,但在提交表单之前它不会有帮助!是的,但他没有提交按钮,所以基本上这段代码缺少很多东西
<form action="function.php" method="get">
        <input type="text" placeholder="scan barcode" name="barcoded" onkeydown="getproduct()">
    </form>
<?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";
        }
    }
?>