【问题标题】:PHP Auto update selectbox based on 1st selectbox基于第一个选择框的 PHP 自动更新选择框
【发布时间】:2015-05-15 23:04:19
【问题描述】:

我有 2 个选择框

 <h3>Results</h3>

   <select id="register_form" name="sport" />
    <option value="Rugby">Rugby</option>
    <option value="Cricket">Cricket</option>
    <option value="Football">Football</option>
    </select>  

    <?php
    echo'<select name="match">';
    echo'<option value="'.$row['event_id'].'">'.$row['team1'].' VS '.$row['team2'].'</option>';
    echo'</select>';
   ?>

   <input id="register_form" type="submit" value="Display" name="submit" />

用户通过以下方式搜索结果:

在第一个选择框中选择运动类型,然后在第二个选择框中根据运动类型填充选项值。

是否可以在 PHP 中执行此操作而无需用户先按提交来获取运动类型的 $_POST 值?

我最好的选择是什么?

【问题讨论】:

  • Ajax 是您要求的唯一选择
  • 我希望有一个 PHP 解决方案,因为我不知道 AJAX...但如果只有 AJAX 才有可能,我想我将不得不学习
  • 你可以使用 jquery 来实现...
  • 查看当您使用 php 时,它只能通过页面刷新来实现。但是在没有页面刷新的情况下使用 ajax 是可能的。
  • 您只能使用 Ajax 来实现这一点,因为您不希望每次用户从第一个选择框中选择一个选项时都重新加载页面。网上有很多解决方案/教程。在谷歌上搜索。

标签: php html


【解决方案1】:

PHP 总是需要重新加载页面以刷新您的信息,因此,正如 anant kumar singh 所说,您需要为此使用 AJAX。而正如yak613所说,jQuery将帮助你轻松使用AJAX

【讨论】:

    【解决方案2】:

    1.Ajax 是您要求的唯一选项(无需刷新页面)

    1. 当您使用 php 时,它只能通过页面刷新来实现。但是在没有页面刷新的情况下使用 ajax 是可能的。

    2. 帮助链接是:-

    Use jQuery to change a second select list based on the first select list option

    https://www.daniweb.com/web-development/php/threads/372228/php-and-ajax-auto-populate-select-box

    https://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax

    【讨论】:

    • ajax 是唯一的选择?不是真的,你也可以预加载值
    • 我喜欢 Ghost,预加载值,然后是一些 javascript
    【解决方案3】:

    您可以使用这个多选 Dropdawn 列表:http://coursesweb.net/ajax/multiple-select-dropdown-list-ajax_t,它可以用于多组选择列表。

    【讨论】:

      【解决方案4】:

      我在我的项目中遇到了同样的问题。但所需的功能更高 - 不是两个依赖的选择框和更大的数字。我编写了一个简单的函数来加载我的选择框:

      //formId - form where selectbox is
      //name - attribute "name" of selectbox
      //dataSourceUrl - url to PHP-file
      //affectingField - string with value that filters the selecbox's data
      function loadSelectbox( formId, name, dataSourceUrl, affectingField ){
      //console.log('Loading data to selectbox name="'+name+'":');
      
      var selectbox = $('#'+formId+' select[name="'+name+'"]');
      
      if(selectbox){
          //console.log("Selecbox found");
      
          if(affectingField != null){
              var affectingValue = $('#'+formId+' [name="'+affectingField+'"]').val();
              dataSourceUrl += '?affectingValue='+affectingValue;
          }
      
          var options = selectbox.find('option');
      
          var jqxhr = $.ajax({
              url: dataSourceUrl,
              dataType: 'text'
          })
          .done(function(data) {
              //console.log(data);
              if(data != ""){
                  var optionsObject = JSON.parse(data);
                  var i = 0;
                  console.log(optionsObject);
                  var options = [];
                  $(optionsObject).each(
                      function(){
                          options[i] = '<option value="'+$(this)[0]['val']+'">'+$(this)[0]['text']+'</option>';
                          i++;
                      }
                  );
      
                  selectbox.html(options);
                  if(urlParamsSet[name] == false){
                      setParamFromUrl(name); 
                  }
              }
              else{
                  selectbox.html('<option value="">Все</option>');
              }
          })
          .fail(function() {
              alert("Problems with server answer");
          })
      
          selectbox.prop("disabled", false);
      }
      else{
          console.log("No selectbox with such name");
      }
      

      }

      并不是说这段代码是完美的,但它确实有效。 PHP 文件必须以 JSON 格式将值返回到选择框(从结构转换为:array(index, value, text))。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多