2015-12-05 254 views
0

我查找過修復程序,但似乎沒有任何工作。 我有一個條形碼掃描器,輸入條形碼並點擊文本框中的輸入,然後我想讓表單回顯PHP函數的結果,但它不想。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

PHP是服務器端。 Javascript是在客戶端。你不能以這種方式調用getproduct()。你需要在你的php可以對數據做任何事情之前提交表單 – Andy

+0

看來你是從錯誤的地方調用getproduct()(一個PHP函數)。我假設你想在onkeyup事件中從服務器檢索數據。你應該讓自己熟悉AJAX。 – cobarzan

+0

爲什麼不用數據庫調用查找產品? –

回答

0

請注意,在您的表單中,您的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函數

+0

這是正確的,但直到表單提交後纔會有幫助! – Andy

+0

是真的,但他沒有提交按鈕,所以基本上很多東西從代碼中缺少 – Standej

0

有你使用PHP爲這個特別的原因? 你可以只需要一個JavaScript函數來完成你需要做的事情。這也意味着你不需要有一臺服務器。

如果您需要使用PHP,因爲您還想做其他事情,這些事情不能輕易在javascript中完成,或者將遊戲遠離給查看源代碼的人,您應該只使用一般「post 「功能。

如果你走下第二條路線,那麼你可以在你的PHP中檢查$ _POST [「barcoded」]並回應你想要的任何東西。

訪問http://www.w3schools.com/php/php_forms.asp尋求幫助。

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