【问题标题】:PHP/HTML/MySQL Database Query with multi search parameters and display results具有多个搜索参数和显示结果的 PHP/HTML/MySQL 数据库查询
【发布时间】:2018-02-09 20:46:20
【问题描述】:

我正在使用 html 构建自定义部件构建器表单,所有项目都在 MySQL 上。在表单上有多个下拉菜单和按钮以及一个文本输入框。我想知道如何连接表单查询MySQL数据库,然后将页面上的项目显示在一个框中。我想在表单下的一个框中显示查询结果。

【问题讨论】:

  • 阿贾克斯?您是否尝试将表单中的信息发送到您的 MySQL 数据库?
  • 尝试使用AJAX,然后使用document.getElementById('yourID').innerHTML = ...;将结果写入HTML DOM。那么您的盒子将是一个<div id='yourID'>,其 ID 在 JavaScript 中指定。
  • 所以客户填写表格,然后显示零件编号和价格
  • 然后尝试使用 AJAX。它可以与服务器上的 PHP 文件通信,然后可以查询 MySQL 请求。
  • 好的,我是新手,所以可能需要一段时间。谢谢!

标签: javascript jquery html css mysql


【解决方案1】:

通过使用 AJAX,您可以与服务器上的 PHP 文件进行通信。然后,这可以进行 MySQL 查询并回显您希望从数据库接收的数据。 使用 JavaScript,您可以格式化此返回值并更改 boxinnerHTML <div>

HTML

<form>... Your form ...</form>
<div id="yourDiv"></div>

JavaScript

var request = $.ajax({
    url: "LINK_TO_YOUR_PHP_FILE.php",
    type: "post",
    data: YOUR_PARAM_DATA_FROM_HTML_FORM
});

request.done(function (response) {
    // Do something with the response...
    document.getElementById("yourDiv").innerHTML = response;
});

PHP

$conn = new mysqli("localhost", "DB_USERNAME", "DB_PASSWORD", "DB_NAME");
$sql = "SELECT * FROM your_table WHERE ...";
$result = $conn->query($sql);

while($row = $result->fetch_assoc()) {
   echo $row;
}

$conn->close();

【讨论】:

    【解决方案2】:

    第一步:在body元素的底部添加Jquery。不要使用 Jquery SLIM 版本。

       <script src="/script/jquery-3.2.1.min.js" type="text/javascript" charset="utf-8"></script>
    

    第 2 步:确保您的数据包含在表单元素中,并且表单中有一个按钮。

    <form>
    <input name="stuff" value="">
    <button></button
    </form>
    

    第 3 步:收集信息并使用 ajax 将其发送到 php 文件。

    $("form").submit(function(event){
    
                event.preventDefault(); 
    
    alert("click");
    
            var data = $("form").serialize(); 
    
                    $.ajax({
                    type:'POST',
    
                    url:'yourphppage.php',
                    data: data,
                    beforeSend: function() { 
    
                        alert(data);        
    
                    },
                    success:function(msg){
    
                        alert(msg);
    
    
                        if (!$.trim(msg)){   
    
                                    alert("no message");
    
                        }else if($.trim(msg) == '1'){
    
                                alert("logged in");
                                //window.location.href = "/index.php";
    
                        }else if($.trim(msg) == '0'){
    
                                alert("email taken");
    
                        }else{
    
                            alert("error");
                        }
    
                        }
    
                }); 
        });
    

    *序列化数据将获取输入元素的名称并分配值。然后它会发送一串数据。比如'stuff=inputevalue?morestuff=inputvalue'。

    第 4 步:创建一个接收数据、将数据存储在数据库中并向您发送响应的 php 文件。

    这是一个登录页面的示例,它需要一个 post 或 die 子句,但要测试这个很容易,并且显示了很多如何测试东西的示例。

    <?php
    date_default_timezone_set('America/Los_Angeles');
        session_start();
    
    require("db_connect.php");
    
    
    
        // If form submitted, insert values into the database.
    
    
            $email = stripslashes($_POST['stuff']); // removes backslashes
    
            // $email = stripslashes('aaron@treaze.com');
    
            $email = filter_var($email, FILTER_SANITIZE_EMAIL);
    
            $email = mysqli_real_escape_string($conn,$email); //escapes special characters in a string
    
            $password = stripslashes($_POST['password']);
    
            // $password = stripslashes("hackme69");
    
            $password = mysqli_real_escape_string($conn,$password);
    
            //echo $password."<br><br>";
    
            //echo $email."<br><br>";
    
    
            //Checking is user existing in the database or not
    
           // $query = "SELECT * FROM `users` WHERE email='$email'";
            $query = sprintf("SELECT * FROM users WHERE email='%s'", $email);
    
            $result = mysqli_query($conn,$query) or die(mysql_error());
    
    
            if($result){ 
    
                while($obj = $result->fetch_object()){
    
                $existingHashFromDb = $obj->password;
                $role = $obj->role;
    
            }
    
        if(password_verify($password, $existingHashFromDb)){
    
                $_SESSION['email'] = $email;
                $_SESSION['role'] = $role;
    
            echo "1";
    
    
        }else{
    
    
            echo "0";
    
        }
    
    
    
    }else{
    
    
    
        echo "No input";
    
    
         } 
    
    
    
    
    ?>
    

    第 5 步:确保您的数据库连接在同一个文件目录中,并且看起来像这样。

    <?php
    
    /* Database connection start */
    $servername = "localhost";
    $username = "******";
    $password = "*******";
    $dbname = "********";
    
    
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    
    
    ?>  
    

    最后一步:设置数据库以接收值。

    总之,有很多例子可以说明该做什么。它给了你这个概念。但是,如果这对您来说是新的。我的建议是从非常小的和基本的开始,然后建立起来。一旦你掌握了这个概念,你就会像专业人士一样 ajaxing 周围的一切。

    我还想补充一点... ajax 有很多方法。如果您想从一个 ajax 调用中接收多个响应,您将需要学习如何将信息转换为 JSON 并将结果存储在变量 Array 中。然后您可以访问多个响应。

    这是获取多个值并在一个响应中发送它们的 PHP 代码示例。

    <?php
    
    session_start();
    date_default_timezone_set('America/Los_Angeles');
    
    
    include_once("db_connect.php");
    
    
    $getusername = $_GET["username"];
    
    $getusername = $_SESSION['username'];
    
    
    
    $results = $mysqli->query("SELECT * FROM users4 WHERE username= '".$getusername."' ");
    
    if($results){ 
    
    while($obj = $results->fetch_object())
    
    {
    $username=$obj->username;
    $firstName=$obj->name;  
    $lastName=$obj->lastName;
    $email=$obj->email;
    $dob=$obj->dob;
    }
    
    }
    
    
    echo json_encode(array("firstName" => $firstName, "lastName" => $lastName, "email" => $email, "dob" => $dob, "username" => $getusername));
    
    
    ?> 
    

    这是一个带有 JSON 的 AJAX 示例。

      function initiateCall() {
        //  alert("sending text to" + $("#phone_number").val() );
    
        $.post("call.php", { phone_number : $("#phoneNumber").val() }, 
          function(data) { showCodeForm(data.verification_code); }, "json");
    
    
    
    
      }
    

    你必须弄清楚什么是最适合你的。我希望这能给你一些方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2017-08-30
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多