2017-02-20 14 views
0

選択値を選択すると、データベースから値を取得しようとしています。この選択は、同じデータベースからも入力されます。選択フォームからのAjaxリクエスト

私はAJAXリクエストが新しく、間違っていることを本当に理解していません。値が表示されるときに私が得るのは空白です。

これは私のHTMLフォームです:

function showStock(str) { 
 
    if (str == "") { 
 
     document.getElementById("stockValue").innerHTML = ""; 
 
     return; 
 
    } else { 
 
     xmlhttp = new XMLHttpRequest(); 
 
     xmlhttp.onreadystatechange = function() { 
 
      if (this.readyState == 4 && this.status == 200) { 
 
       document.getElementById("stockValue").innerHTML = this.responseText; 
 
      } 
 
     }; 
 
     xmlhttp.open("GET", "getstock.php?q=" + str, true); 
 
     xmlhttp.send(); 
 
    } 
 
}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
</head> 
 

 
<body> 
 

 
    <?php $link=mysqli_connect("localhost", "root", "", "cocktails"); // Check connection if($link===f alse){ die("ERROR: Could not connect. " . mysqli_connect_error()); } ?> 
 

 
    <script src='menu.js'></script> 
 

 
    <form action="addstock.php" method="post"> 
 
     Product: 
 
     <br> 
 
     <select name="products" onChange="showStock(this.value)"> 
 
      <option value="">Select a product:</option> 
 
      <?php $sql=m ysqli_query($link, "SELECT name FROM inventory ORDER BY name"); while ($row=$ sql->fetch_assoc()){ echo " 
 
      <option value=\ "".$row[ 'name']. "\">" . $row['name'] . "</option>"; } ?> 
 
     </select> 
 
     <br> Stock Value: 
 
     <div id="stockValue"> 
 
      <b>0</b> 
 
     </div> 
 

 
    </form> 
 
</body> 
 

 
</html>

これは私のPHPファイルです:

<!DOCTYPE html> 
<html> 

<head> </head> 

<body> 
    <?php 
     $q = intval($_GET['q']); 

     $con = mysqli_connect('localhost','root','','cocktails'); 
     if (!$con) { 
      die('Could not connect: ' . mysqli_error($con)); 
     } 

     $sql="SELECT * FROM inventory WHERE name = '".$q."'"; 
     $result = mysqli_query($con,$sql); 
     $row = mysqli_fetch_array($result); 

     echo $row['stock']; 
     mysqli_close($con); 
     ?> 
</body> 

</html> 
+0

あなたは、要求が処理されていると、何がGoogle Chromeのため、返送されている場合は、開発者ツールを開き、タブに行くことができる「ネットワーク」をチェックする必要があります/ Firefoxの場合は、Firebug拡張機能を使用して、[ネットワーク]タブに移動することもできます。アクションを実行し、ファイル 'addstock.php'の要求と内容を確認します。 –

+0

私はテスト用のデータベースであなたのコードを試してみました。 さらに詳しく調べることで、問題の原因を正確に把握することができます。 – Ayyoub

+0

ドロップダウンリストにDATAのリストが表示されますか? – Ayyoub

答えて

1

まあそれはそれは明白ではなかったが、あなたの問題は次のようになります。

$q = intval($_GET['q']); 

あなた$_GET['q']が文字列であり、あなたがintvalに変換されているので、それはなりa 0

あなたのSQLクエリは何も得られません。

変更$q = $_GET['q'];に、このラインと、それは動作します:)

0

あなたのphpからすべてのHTMLを削除し、すべては私が考えて良いだろう。 PHPの応答がなければなりません

<?php 
    $q = intval($_GET['q']); 

    $con = mysqli_connect('localhost','root','','cocktails'); 
    if (!$con) { 
     die('Could not connect: ' . mysqli_error($con)); 
    } 

    $sql="SELECT * FROM inventory WHERE name = '".$q."'"; 
    $result = mysqli_query($con,$sql); 
    $row = mysqli_fetch_array($result); 

    echo $row['stock']; 
    mysqli_close($con); 
    ?> 
+0

それは私にとってはうまくいきませんでした:/ – X3minater

0
<?php $link=m ysqli_connect("localhost", "root", "", "cocktails"); // Check connection if($link===f alse){ die("ERROR: Could not connect. " . mysqli_connect_error()); } ?> 

をHTMLではない、ここで平文なければなりません。..

<?php $link=mysqli_connect("localhost", "root", "", "cocktails"); // Check connection if($link===f alse){ die("ERROR: Could not connect. " . mysqli_connect_error()); } ?> 

は、タイプミスされている可能性がありますがmysqli_connect上のスペースは、TIが

を失敗する原因しますここでも同じです。

<?php $sql=m ysqli_query($link, "SELECT name FROM inventory ORDER BY name"); 

が..

<?php $sql=mysqli_query($link, "SELECT name FROM inventory ORDER BY name");

+0

いいアイですが、ここに貼り付けるときはおそらくタイプミスでした。私のコードにはスペースがありませんでした。 :/ – X3minater

関連する問題