Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.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 用数据库表查询的结果填充html表单选择元素_Php_Html_Jquery_Ajax_Dynamic - Fatal编程技术网

Php 用数据库表查询的结果填充html表单选择元素

Php 用数据库表查询的结果填充html表单选择元素,php,html,jquery,ajax,dynamic,Php,Html,Jquery,Ajax,Dynamic,我试图制作一个表单,其中包括一个文本输入和一个下拉选择元素。目标是能够在文本框中输入将在查询中使用的客户姓氏文本。然后,查询结果需要放在选择下拉框中,以便进一步使用,值为custID,文本为客户的名字和姓氏,可能还有电话号码。到目前为止,每当我运行它并输入任何值时,无论输入什么,我的警报框中都只会得到数据[]和状态:successful 这是我一直使用的表单和ajax <form method="post" class="form-container

我试图制作一个表单,其中包括一个文本输入和一个下拉选择元素。目标是能够在文本框中输入将在查询中使用的客户姓氏文本。然后,查询结果需要放在选择下拉框中,以便进一步使用,值为custID,文本为客户的名字和姓氏,可能还有电话号码。到目前为止,每当我运行它并输入任何值时,无论输入什么,我的警报框中都只会得到数据[]和状态:successful

这是我一直使用的表单和ajax

    <form  method="post" class="form-container" >
                <input type="text" name="lName" id="lName" placeholder="Last name" 
                onkeyup="showCustomer(this.value)"><br>
                <select id = "custSelect" name="custSelect0" onchange="show(this)">
                <option value="">-- Select Customer--</option>
            </select><br>
    </form>
<script>

    function showCustomer(str) {
          //alert("click");
          var LastName = str;
          var ele = document.getElementById('custSelect');
       //alert (LastName);
       $.ajax({
            url:"getcustomer.php",
            type:"POST",
            data:{customer:LastName},

            success:function(data, status){
                alert("Data: " + data + "\nStatus: " + status);
                //alert("Search succesful")
                    /*  $.each(data, function(i,item)) {
                          // POPULATE SELECT ELEMENT WITH JSON.
                          ele.innerHTML = ele.innerHTML +
                              '<option value="' + data[i]['custId'] + '">' + data[i]['fname'] + ' ' + data[i]['lname'] + '</option>';
                      }*/
            }
          })
        }

        function show(ele) {
          // GET THE SELECTED VALUE FROM <select> ELEMENT AND SHOW IT.
          var msg = document.getElementById('msg');
          msg.innerHTML = 'Selected Customer: <b>' + ele.options[ele.selectedIndex].text + '</b> </br>' +
              'ID: <b>' + ele.value + '</b>';
}
    </script>
下面是我用来访问数据库和执行查询的php文件。它正在使用PDO

<?php

      require_once "configPDO.php";
    if(isset($_POST['customer'])){
      $customer = $_POST['customer'];
    
    
    $data = array();
    
    $sql = "SELECT *
    FROM `customers`
    WHERE `LastName`
    LIKE '$customer'";
    
    $statement = $connect->prepare($sql);
    //$statement->bind_param("s", $_GET['q']);
    $statement->execute();
    $result = $statement->fetchAll();
    
    foreach($result as $row){
      $data[] = array(
        'custId' => $row["Cust_ID"],
        'fname' => $row["FirstName"],
        'lname' => $row["LastName"],
        'phone' => $row["PhoneNumber"],
        'altPhone' => $row["AltPhone"]
      );
    }
    
    echo json_encode($data);
    }
    
    ?>

使用此视频中的信息进行一些建议更改后 并且更正了要搜索的表的拼写,我已经能够让它将结果返回到表单

<?php
      require_once "/home/users/web/b1240/dom.heather93124/public_html/resources/configPDO.php";
    if(isset($_POST['customer'])){
        $customer = $_POST['customer'];
    
        $data = array();
    
        try{
          $sql = "SELECT * FROM `Customer` WHERE `LastName` LIKE :customer";
          $customer = "%$customer%";
          $stmt = $connect->prepare($sql);
          $stmt->bindValue(':customer', $customer);
          $stmt->execute();
          while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $data[] = array(
              'custId' => $row["Cust_ID"],
              'fname' => $row["FirstName"],
              'lname' => $row["LastName"],
              'phone' => $row["PhoneNumber"],
              'altPhone' => $row["AltPhone"]
            );
            }
    
        echo json_encode($data);
        }catch(Exception $e){
          echo $e-getMessage();
        }
    }
    ?>

如果您得到的数据[]表明您的查询没有返回任何内容。您需要添加一些通配符,以便执行任何有用的操作。请尝试“%$customer%”之类的操作,遗憾的是没有更改。得到同样的东西。感谢您的建议,首先调试PHP/MySQL部分。您的代码当前似乎没有实现任何错误控制,除非在创建连接时将PDO设置为引发异常?,因此,您甚至不会注意到准备语句或执行查询是否失败。好的,我知道我需要在安全性方面进行工作,在它关闭测试服务器之前我会这样做,但现在我如何使它工作呢?我已将错误控制添加到连接文件和查询文件中。我还设置了预处理语句和通配符。我现在得到了结果