【问题标题】:PHP Submit Form ProblemsPHP 提交表单问题
【发布时间】:2015-12-05 20:52:25
【问题描述】:

我已经四处寻找修复,但似乎没有一个有效。 我有一个条形码扫描仪,它输入条形码并单击文本框上的输入,然后我希望表单回显 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 是服务器端。 Javascript在客户端。你不能那样调用 getproduct() 。您需要先提交表单,然后您的 php 才能对数据执行任何操作
  • 您似乎从错误的位置调用 getproduct()(一个 PHP 函数)。我假设您想在 onkeyup 事件上从服务器检索数据。您应该熟悉 AJAX。
  • 你为什么不通过数据库调用来查找产品?

标签: php html


【解决方案1】:

请注意,您的表单中的名称与您的 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 函数

【讨论】:

  • 这是正确的,但在提交表单之前没有任何帮助!
  • true 但他没有提交按钮,所以基本上这段代码缺少很多东西
【解决方案2】:

您为此使用 PHP 有什么特别的原因吗? 你可以只拥有一个 javascript 函数来完成你需要做的事情。这也意味着您不需要服务器。

如果您需要使用 PHP,因为您还想做其他在 javascript 中无法轻松完成的事情,或者会将游戏交给查看源代码的人,您应该使用一般的“post”功能。

如果您走第二条路线,则可以在 PHP 中检查 $_POST["barcoded"] 并回显您想要的任何内容。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多