2017-01-13 3 views
3

У меня есть выбор, который выводит столбец (jobTitle) из базы данных, при изменении Я пытаюсь отобразить в другом html select, выбирая другой столбец (имя_компании), но только значения связанные с первым выбором html.MYSQL Выбрать на основе опции выбора HTML

У меня нет ошибок. Первое значение выбора html передается, но по какой-то причине он не выбирает из db на основе этого во втором выборе.

Я думаю, что проблема связана с моим вторым 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); 
      } 
     }) 
    }); 

ответ

1

Ваш вызов 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 --> 
+0

Я не» t нужен url, если я отправляю его на ту же страницу. по defualt ajax отправляет его на ту же страницу. – bob

+1

Выше я положил часть вашего кода вместе, чтобы заставить его работать. Если вы хотите отправить вызов на ту же страницу, функция 'success' неверна, потому что она загружает всю страницу в ваш'