变量是空的

时间:2016-02-21 01:13:40

标签: php

我正在尝试在文本框中显示数据库中的数据。但是当我启动脚本时,我没有得到任何结果。我以不同的方式测试了脚本,我发现变量:$product1是空的。有谁知道如何解决这个问题?

的index.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM forms";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     echo "<select class='form-control select2' id='product1' name='product1' onChange='getPrice(this.value)' style='width: 100%;'>";
     echo "<option selected disabled hidden value=''></option>";
     // output data of each row
     while($row = $result->fetch_assoc()) {
                      echo "<option value='" . $row["id"]. "'>" . $row["name"]. "</option>";
     }                   
echo "</select>";
} else {
     echo "0 results";
}

$conn->close();

?>
<html>
<body>
<!-- Your text input -->
<input id="product_name" type="text">

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
    function getPrice() {

        // getting the selected id in combo
        var selectedItem = jQuery('.product1 option:selected').val();

        // Do an Ajax request to retrieve the product price
    jQuery.ajax({
        url: 'get.php',
        method: 'POST',
        data: 'id=' + selectedItem,
        success: function(response){
            // and put the price in text field
            jQuery('#product_name').val(response);  
        },
        error: function (request, status, error) {
            alert(request.responseText);
        },
    }); 
    }
    </script>
    </body>
    </html>

get.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname) ;
// Check connection
if ($conn->connect_error) 
    {
    die('Connection failed: ' . $conn->connect_error) ;
    } 
else 
    {
    $product1 = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT) ;

    $query = 'SELECT price FROM forms WHERE id=" . $product1 . " ' ;

    $res = mysqli_query($conn, $query) ;
if (mysqli_num_rows($res) > 0) 
{
    $result = mysqli_fetch_assoc($res) ;
    echo $result['price'];
}else{
    echo 'no results';
}

    }
?>

2 个答案:

答案 0 :(得分:1)

更改

var selectedItem = jQuery('.product1 option:selected').val();

var selectedItem = jQuery('#product1 option:selected').val();

您正在选择名为product1的类,但只设置了具有此名称的ID。使用#.

的类指定了ID

更新您的脚本,因为您使用了getPrice(this.value);

<script>
function getPrice(selectedItem) {

    // Do an Ajax request to retrieve the product price
jQuery.ajax({
    url: 'get.php',
    method: 'POST',
    data: 'id=' + selectedItem,
    success: function(response){
        // and put the price in text field
        jQuery('#product_name').val(response);  
    },
    error: function (request, status, error) {
        alert(request.responseText);
    },
}); 
}
</script>

提示 您是否知道可以使用jQuery.ajaxjQuery('selector'),例如:$.ajax$('selector'): - )

答案 1 :(得分:0)

您的HTML中没有表单标记。默认形式Method是GET。

在您的get.php中,您尝试使用filter_input获取POST变量 如果未设置Variable,函数filter_input将返回null。

两种可能的解决方案: 1.使用method =“post”将表单添加到html 2.更改您的PHP代码以搜索GET变量