【问题标题】:PHP Code to run mysql query based on radio button selection without submitPHP代码基于单选按钮选择运行mysql查询而不提交
【发布时间】:2018-04-13 07:29:01
【问题描述】:

我有三个单选按钮。我想选择一个单选按钮值并将该选择传递给 mysql 查询。我不想使用提交按钮。 例如:如果我选择卡车或汽车,我希望将值传递给 where 条件

<form action="example.php" method="post">
    <input type="radio" name="vehicle" value="All Vehicles" checked> All Vehicles
    <input type="radio" name="vehicle" value="Truck"> Truck
    <input type="radio" name="vehicle" value="Cars"> Cars
</form>

<?php
             $type = $_POST['Vehicle'];  
             if ($type == "All Vehicle") { 

                $sql ='select distinct reservation_id,Vehicle,rental_price from vehicle_reservation';
                $query = mysqli_query($conn, $sql);
                if (!$query) {
                            die ('SQL Error: ' . mysqli_error($conn));
                             }
             }
               else  ($answer == "Truck") { 

                $sql ='select distinct reservation_id,Vehicle,rental_price from vehicle_reservation where v.type="Truck"';
                $query = mysqli_query($conn, $sql);
                if (!$query) {
                            die ('SQL Error: ' . mysqli_error($conn));
                             }
             }
?php

【问题讨论】:

  • 你不能这样做,你必须提交页面。但是您可以将您的 PHP 移植到一个单独的脚本中,并在单击单选按钮时使用 AJAX 执行该脚本。
  • if ($type == "All Vehicle") 永远不会评估。

标签: php html mysql radio-button


【解决方案1】:

用 jquery ajax 编辑代码试试这个

<?php 
    //replace connection variables with yours.
    //hope you store Vehicle with names in vehicle_reservation table
    $conn = mysqli_connect('hostname','username','password','database');
    if(!$conn){
        $response = array('success'=>0,'data'=>'unable to connect with db');
    }else{
        $type = $_POST['Vehicle']; 
        $where = ($type != "All Vehicle")?" WHERE Vehicle='".$type."'":"";
        $sql ='select distinct reservation_id,Vehicle,rental_price from vehicle_reservation'.$where; 
        $query = mysqli_query($conn, $sql); 
        if (!$query) {
            $response = array('success'=>0,'data'=>mysqli_error($conn));
        }else{
            if(mysqli_num_rows($query)>0){
                $data = mysqli_fetch_array($query);
                $response = array('success'=>1,'data'=>$data);
            }else{
                $response = array('success'=>0,'data'=>'No records found');
            }
        }
    }
    echo json_encode($response);    
?>

在 html 文件中

<script> 
    $(document).on('click','input[name="Tool"]:radio',function() {
        var val = $(this).val(); 
        console.log(val); 
        $.ajax({ 
            type:"POST", 
            url:"C:\example.php", 
            data:'Vehicle='+val, 
            success:function(response) { 
                console.log(response); 
            } 
        }); 
    })
</script>

【讨论】:

  • 在添加 jquery sn-p 时,我需要对代码的 php 部分进行任何更改吗?
  • 使用您的 php 代码创建新的 php 文件并回显您想要的内容。使用表单从页面中删除代码。将新php文件的路径添加到ajax函数
  • html 文件
    AllVehicles Truck
  • PHP 文件
  • 我是 php 新手。当我运行 html 文件时,我只看到单选按钮,当我选择所有车辆单选时,它不会从数据库返回任何值。你能告诉我我错过了什么吗
【解决方案2】:

首先让我们澄清一下,您的 php 代码在服务器上运行,而 html 和任何可以使用的 javascript 都在网络浏览器上运行。

话虽如此,很明显在浏览器中完成的选择必须以某种方式到达服务器才能包含在查询中。

您可以通过以下两种方式做到这一点:

1) 以带有按钮或其他一些 javascript 事件的表单提交数据。

2) 使用 ajax 调用,绑定到一些 javascipt 事件,该事件也提交数据,但在后台。在这里,您可以选择将其作为表单发送,或者像 json 之类的其他内容发送。

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2015-01-18
    • 2020-11-13
    • 2015-06-30
    相关资源
    最近更新 更多