php - MYSQL Select 基于 HTML 选择选项

标签 php jquery mysql select

我有一个从数据库中回显列(jobTitle)的选择,在更改时我试图在另一个 html 选择中显示,选择另一个列(company_name),但只有与第一个 html 选择相关的值。

我没有收到错误。正在传递第一个 html 选择值,但由于某种原因,它没有根据第二个选择中的值从数据库中进行选择。

我认为问题出在我的第二个 sql 查询上。

P.S 如果有人知道更有效的方法,我将不胜感激。

PHP 和 HTML:

<select name="jobtitle_select" class="jobtitle_select">
    <option class="" name="" value="" >-- Job title --</option> 
    <?php  
    $sql = $dbh->prepare("SELECT * FROM jobs_list");
    if($sql->execute()) {
        $sql->setFetchMode(PDO::FETCH_ASSOC);
    }
    while($row = $sql->fetch()) { 
        $jobTitle = $row['jobTitle'];
        echo "<option class='' name='' value='$jobTitle' > $jobTitle </option>"; 
    } // end of while //  ?>
</select>
<?php 
$jobtitle_select = $_POST['jobtitle_select'];
if ($jobtitle_select){
    $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select");
    $sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR);  
    if($sql->execute()) {
        $sql->setFetchMode(PDO::FETCH_ASSOC);
    }
?>     
<select class="company_name_select" >   
    <option class="" name="" value="" >-- Company name --</option>      
    <?php while($row = $sql->fetch()) { 
        $company_name = $row['company_name'];
        echo "<option class='' name='' value='$company_name'> $company_name   </option>"; 
    } // end of while //        
}?>  <!-- end of if -->
</select> 

JQUERY:

$('.jobtitle_select').change(function(){
        $.ajax({
            //create an ajax request to load_page.php
            type: "POST", 
            data:$('.jobtitle_select'),     
            dataType: "html",   //expect html to be returned                
            success: function(date){
                $('.company_name_select').html(date);
            }
        })
    });

最佳答案

您的 ajax 调用不正确,或者最好说不完整。您需要提供 url 以及带有名称和值的已发布变量。

$('.jobtitle_select').change(function(){
    $.ajax({
        //create an ajax request to load_page.php
        url: "load_page.php",
        type: "POST", 
        data: {jobtitle_select: $('.jobtitle_select').val()},     
        dataType: "html",   //expect html to be returned                
        success: function(date){
            $('.company_name_select').html(date);
        }
    })
});

并且您的 load_page.php 文件应该包含从数据库读取数据的 php 代码和仅显示选择的内部的 html 代码:

<?php 
$jobtitle_select = $_POST['jobtitle_select'];
if ($jobtitle_select){
    $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select");
    $sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR);  
    if($sql->execute()) {
        $sql->setFetchMode(PDO::FETCH_ASSOC);
    }
?>     

    <option class="" name="" value="" >-- Company name --</option>      
    <?php while($row = $sql->fetch()) { 
        $company_name = $row['company_name'];
        echo "<option class='' name='' value='$company_name'> $company_name   </option>"; 
    } // end of while //        
}?>  <!-- end of if -->

关于php - MYSQL Select 基于 HTML 选择选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628722/

相关文章:

php - 无法使用 WordPress wp_posts 表添加外键

Php mysql在html中获取数组结果

php - PHP 的循环引用问题有多大,我应该担心吗?

php - CakePhp单页获取多表数据

javascript - 使用jQuery后网页跳转异常

javascript - 模糊叠加效果

php - Docker-compose(CakePHP 2x 和 MySQL)抛出 PHP fatal error

php - Laravel 5 配置文件中的自定义配置文件访问

javascript - .click 事件未触发

mysql - 条件 str_to_date() 如果格式是一种类型,否则不执行任何操作