Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zmień wartość drugiego wyboru przy pierwszym wyborze

Jak powiedziałeś, nie masz doświadczenia z jQuery lub Ajaxem, opublikuję swoją odpowiedź z jak największą ilością komentarzy. Zakładam, że masz na swojej stronie dwie listy rozwijane.

Pierwsza zawiera buildery, więc będzie miała id="builders" .

Drugi zawiera regiony, więc będzie miał id="regions" .

Z tego co rozumiem, pierwszy wybór będzie dokładnie tym, który wysłałeś w swoim pytaniu, wygenerowanym po stronie serwera (przez PHP). Proszę tylko o dokonanie niewielkiej zmiany, tak aby każda wartość opcji była równa identyfikatorowi bazy danych budowniczego, a nie jego nazwie (chyba że kluczem podstawowym budowniczego jest jego nazwa, a nie identyfikator). Nie będzie to miało znaczenia dla użytkownika końcowego, ale będzie ważne dla naszego rozwiązania jQuery. Drugi będzie pusty, ponieważ pomysł polega na dynamicznym wypełnieniu go regionami powiązanymi z kreatorem wybranym w pierwszym menu rozwijanym.

Teraz przejdźmy do kodu jQuery:

//Everything that goes below this first line will be ready as soon as the page is fully loaded
$(document).ready(function() {
  //The following code defines an event. More precisely, we are defining that the code inside it will run every time our select with id "builders" has its value changed
  $('#builders').change(function() {
    //$(this) is our builders select. $(this).val() contains the selected value, which is the ID of our selected builder
    var currentValue = $(this).val();
    //Now, this is our Ajax command that will invoke a script called get_regions.php, which will receive the builder's ID in $_GET['builder_id'] and you can use to query your database looking for all regions related to this builder. Make sure to create an array with the returned regions. Your get_regions.php's last line should be echo json_encode($regions); 
    $.get("get_regions.php", {'builder_id': currentValue}, function(data) {
      //Inside this function is the code that will run when we receive the response from our PHP script. It contains a JSON encoded list of regions, so first of all we need to parse this JSON
      var regions = $.parseJSON(data);
      //Before filling our second select dropdown with the regions, let's remove all options it already contains, if any
      $('#regions').empty();
      //Now, all there is left is to loop over the regions, adding each as an option of the regions dropdown. I'll do it the universal way
      for (var i = 0; i < regions.length; i++) {
        var regionOption = '<option value="'+regions[i]['region_name']+'">';
        regionOption += regions[i]['region_name'];
        regionOption += '</option>';
        $('#regions').append(regionOption);
      }
    });
  });
});

Pomimo wszelkich błędów składniowych (nie mogę przetestować kodu stąd) powinno to załatwić sprawę. Mam nadzieję, że komentarze były wystarczająco jasne, abyś mógł zrozumieć, jak wszystko działa w jQuery.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zainstaluj mysql przez marionetka

  2. MySQL:jak uzyskać różnicę między dwoma znacznikami czasu w kilka sekund

  3. mysql concat_ws bez duplikatów

  4. MacOSX:autostart mysql przy starcie

  5. SQL Wybierz tylko wiersze, w których istnieje dokładnie wiele relacji