Php 进行选择时是否显示某些条件?

Php 进行选择时是否显示某些条件?,php,jquery,html,css,Php,Jquery,Html,Css,用户有一些选项,选择其中一个后,我想显示更多的选项,这将取决于第一个选择的选项。比如说,用户可以选择门的数量,比如1或2。选择一个数字后,我想显示低于该数字的所有闸门的选项。就是 如果选择了1,则仅显示门1的选项 如果选择了2,则显示gate 2和gate 1的选项 我的phpmyadmin中有大多数变量用于存储,以避免在代码中创建大量变量。只是想得到一些建议,如果你看到我可以改进的地方,请告诉我 <div class="form-div-element"> <labe

用户有一些选项,选择其中一个后,我想显示更多的选项,这将取决于第一个选择的选项。比如说,用户可以选择门的数量,比如1或2。选择一个数字后,我想显示低于该数字的所有闸门的选项。就是

  • 如果选择了
    1
    ,则仅显示
    门1的选项
  • 如果选择了
    2
    ,则显示
    gate 2
    gate 1
    的选项
我的phpmyadmin中有大多数变量用于存储,以避免在代码中创建大量变量。只是想得到一些建议,如果你看到我可以改进的地方,请告诉我

<div class="form-div-element">
  <label># of Gates</label>
  <select class="gates-change" name="no_gate" required>
    <option value="">Select Gate</option>
    <option value="28">1 Gate</option>
    <option value="29">2 Gates</option>
  </select>
</div>

<?php
  if($result)
  {
  foreach($result as $row)
  {
    if($row->id == 31 || $row->id == 32 || $row->id == 33)
    {?>
      <div class="form-div-element ecl-variation ecl-variation<?php echo $row->id;?>" style="display:block!important">
    <?php }
    else
    {?>
      <div class="form-div-element ecl-variation ecl-variation<?php echo $row->id;?>">
  <?php }?>
      <label><?php echo $row->variation_name;?></label>

      <?php
      if($row->variation_name == 'Stops')
      {?>
        <input type="hidden" name="stopvariationid" value="<?php echo $row->id;?>" id="stopvariationid"/>
      <?php }
      ?>

      <?php
          $var_value = (explode("|",$row->variation_value));
          $var_condition = $row->conditions;
          $arr = array('height_convert_configuration');
          //if($row->special_features != '')
          //{
          //    check_special_function($var_value,$row->special_features,$var_condition);
          //}
          //else if($row->variation_type =='selectbox')
          if($row->variation_type =='selectbox')
          {
            if($row->variation_function == 'calculation')
            {?>
              <select onchange = 'change_variation(this.value,<?php echo $row->id;?>)'>
                <option value="">Select Option</option>
                <?php for($i=0;$i<count($var_value);$i++)
                  {?>
                    <option value="<?php echo $var_value[$i];?>"><?php echo $var_value[$i];?></option>
                  <?php }?>
              </select>
          <?php }
            else
            { ?>
              <select class="gate_datatype" name="gate_type">
                <option value="">Select Option</option>
                <?php for($i=0;$i<count($var_value);$i++)
                  {?>
                    <option value="<?php echo $var_value[$i];?>|<?php echo $row->special_features;?>"><?php echo $var_value[$i];?></option>
                <?php }?>
              </select>
          <?php }
          }
          else if($row->variation_type =='textbox')
          {?>
            <?php for($i=0;$i<count($var_value);$i++)
            {?>
              <?php echo $var_value[$i];?>
            <?php }?>
        <?php }
          else if($row->variation_type =='radiobox')
          {?>
            <?php for($i=0;$i<count($var_value);$i++)
            {?>
              <div class="radiobox-cont">
              <input onchange = 'change_radio_variation(this,this.value,<?php echo $row->id;?>)' type="radio" name="<?php echo $row->class;?>" value='<?php echo $var_value[$i];?>' /><?php echo $var_value[$i];?>
              </div>
            <?php }?>
        <?php }

          else if($row->variation_type =='checkbox')
          {?>
            <?php for($i=0;$i<count($var_value);$i++)
            {?>
              <div class="checkbox-cont <?php echo preg_replace('/\s+/', '_', $var_value1[$i]);?>">
                <?php if('Cabin Telephone' == $var_value[$i])
                  {?>
                    <input checked type="checkbox" onchange="change_check_varitaion(this,this.value,<?php echo $row->id;?>)" name="other_option[]" value='<?php echo $var_value[$i];?>' disabled="disabled" /><?php echo $var_value[$i];?>
                  <?php }
                  else
                  {?>
                    <input type="checkbox" onchange="change_check_varitaion(this,this.value,<?php echo $row->id;?>)" name="other_option[]" value='<?php echo $var_value[$i];?>' /><?php echo $var_value[$i];?>
                  <?php }?>
              </div>
            <?php }?>
        <?php }?>
    </div>
  <?php }

#大门
选择浇口
1号门
2门

总而言之,在我看来,你的问题实际上包含两个问题:

  • 如何根据用户选择动态显示/隐藏DOM元素

    选择一个数字后,我想显示低于该数字的所有闸门的选项

  • 如何优化PHP代码

    只是想得到一些建议,如果你看到我可以改进的地方,请告诉我

    <div class="form-div-element">
      <label># of Gates</label>
      <select class="gates-change" name="no_gate" required>
        <option value="">Select Gate</option>
        <option value="28">1 Gate</option>
        <option value="29">2 Gates</option>
      </select>
    </div>
    
    <?php
      if($result)
      {
      foreach($result as $row)
      {
        if($row->id == 31 || $row->id == 32 || $row->id == 33)
        {?>
          <div class="form-div-element ecl-variation ecl-variation<?php echo $row->id;?>" style="display:block!important">
        <?php }
        else
        {?>
          <div class="form-div-element ecl-variation ecl-variation<?php echo $row->id;?>">
      <?php }?>
          <label><?php echo $row->variation_name;?></label>
    
          <?php
          if($row->variation_name == 'Stops')
          {?>
            <input type="hidden" name="stopvariationid" value="<?php echo $row->id;?>" id="stopvariationid"/>
          <?php }
          ?>
    
          <?php
              $var_value = (explode("|",$row->variation_value));
              $var_condition = $row->conditions;
              $arr = array('height_convert_configuration');
              //if($row->special_features != '')
              //{
              //    check_special_function($var_value,$row->special_features,$var_condition);
              //}
              //else if($row->variation_type =='selectbox')
              if($row->variation_type =='selectbox')
              {
                if($row->variation_function == 'calculation')
                {?>
                  <select onchange = 'change_variation(this.value,<?php echo $row->id;?>)'>
                    <option value="">Select Option</option>
                    <?php for($i=0;$i<count($var_value);$i++)
                      {?>
                        <option value="<?php echo $var_value[$i];?>"><?php echo $var_value[$i];?></option>
                      <?php }?>
                  </select>
              <?php }
                else
                { ?>
                  <select class="gate_datatype" name="gate_type">
                    <option value="">Select Option</option>
                    <?php for($i=0;$i<count($var_value);$i++)
                      {?>
                        <option value="<?php echo $var_value[$i];?>|<?php echo $row->special_features;?>"><?php echo $var_value[$i];?></option>
                    <?php }?>
                  </select>
              <?php }
              }
              else if($row->variation_type =='textbox')
              {?>
                <?php for($i=0;$i<count($var_value);$i++)
                {?>
                  <?php echo $var_value[$i];?>
                <?php }?>
            <?php }
              else if($row->variation_type =='radiobox')
              {?>
                <?php for($i=0;$i<count($var_value);$i++)
                {?>
                  <div class="radiobox-cont">
                  <input onchange = 'change_radio_variation(this,this.value,<?php echo $row->id;?>)' type="radio" name="<?php echo $row->class;?>" value='<?php echo $var_value[$i];?>' /><?php echo $var_value[$i];?>
                  </div>
                <?php }?>
            <?php }
    
              else if($row->variation_type =='checkbox')
              {?>
                <?php for($i=0;$i<count($var_value);$i++)
                {?>
                  <div class="checkbox-cont <?php echo preg_replace('/\s+/', '_', $var_value1[$i]);?>">
                    <?php if('Cabin Telephone' == $var_value[$i])
                      {?>
                        <input checked type="checkbox" onchange="change_check_varitaion(this,this.value,<?php echo $row->id;?>)" name="other_option[]" value='<?php echo $var_value[$i];?>' disabled="disabled" /><?php echo $var_value[$i];?>
                      <?php }
                      else
                      {?>
                        <input type="checkbox" onchange="change_check_varitaion(this,this.value,<?php echo $row->id;?>)" name="other_option[]" value='<?php echo $var_value[$i];?>' /><?php echo $var_value[$i];?>
                      <?php }?>
                  </div>
                <?php }?>
            <?php }?>
        </div>
      <?php }
    
  • 第二条是通往广阔的道路!也许只是一个简单的建议:如果它有效,那就好了。很快就忽略了它,看起来还不错

    请参阅我的第一个工作代码段,它实际上只需要对现有源代码进行一点定制(如果有的话)。别忘了它只是一个模型;如果你需要进一步的帮助或者想对发生的事情做更深入的解释,请告诉我

    jQuery('.form div元素')。而不是('.ecl variance')。查找('select')。打开('change',function()){
    变量i=-1,
    $conditional=jQuery('.ecl variation').hide(),//提前隐藏
    iGates=+(jQuery(this).find('option:selected').attr('data-gates-sum');//根据所选选项“data-gates-sum”-属性获取所需的门
    //基于文本的版本:`iGates=+($(this).find('option:selected').text().split(''[0])``pro:无其他标记,con:易出错,维护
    //数到所需的门并使其可见
    而(++i
    
    .ecl变体{
    显示:无;/*提前隐藏条件选择*/
    }
    
    #大门
    选择浇口
    1号门
    2门
    #闸门数量|条件1
    选择浇口接头
    abc
    xyz
    #第二级闸门
    选择浇口接头
    123
    789
    
    您可以通过两种方法来实现这一点,第一种方法是使用ajax,第二种方法是使用css。 第一种方法假设这是您的选择代码,您可以在其中选择浇口

    <div class="form-div-element">
      <label># of Gates</label>
      <select id="gates" onchange="change()" class="gates-change" name="no_gate" required>
        <option value="">Select Gate</option>
        <option value="28">1 Gate</option>
        <option value="29">2 Gates</option>
      </select>
    </div>
    
    // and this is your sub gates options which will be empty at first and its display will be none
    
    <div id="subgates_div" class="form-div-element" style="display:none;">
      <label># of Sub Gates</label>
      <select id="subgates" class="gates-change" name="sub_no_gate" required>
        <option value="">Select Sub Gate</option>
      </select>
    </div>
    

    希望这会给您一些想法,如果您有任何困惑,请随时询问

    欢迎使用stackoverflow。请阅读并确认你会得到正确的答案。给定的代码不是最小的,所以请考虑将所有PHP部件静态化,这样您就可以创建一个工作片段。要回答您的问题,您的条件选项的实际内容并不相关。我很感激你的建议,但这并不是我想要的。附件我在我设置的phpmyadmin中有我的数据表。在代码中,我一次调用了它们。因此,即使用户选择#of gates为1 gate,他们也会看到gate 2选项,如gate 2材质等。我试图弄清楚我是否只能使用if-else语句或其他策略来实现这一点。我不是一个大型javascript用户,我如何将javascript实现到我的php和html代码中。我看到您正在使用脚本src,这让我相信它与嵌入图像的方式类似。只是需要澄清一下,谢谢你,杰普,你说得对。我相应地更新了我的答案:请看下面的片段“如何实现?”。我删除了所有已知的评论,并添加了有关实际实施的新评论。希望它能帮上忙@harrisddI想问的很快我会把我的代码放在你说的地方吗?“不,代码只是html和php代码你添加的是js在代码中我把我所有的代码都放在我的描述中你写道:“我只需要把代码放在你说的地方…”那么你的代码是什么意思?Sry
    function get_sub_category() {
        $data['subgates'] = array();
        $subgates = $this->db->get_where('subcategories', array('id' => $_POST['category']))->result();
        foreach ($subgates as $key => $val) {
            $data['subgates'][] = <<<EOD
            <option value='$val->id'>$val->sub_gate_name</option>
            EOD;
        }
        echo json_encode($data);
    }
    
    // gates options
    <div class="form-div-element">
      <label># of Gates</label>
      <select id="gates" onchange="change()" class="gates-change" name="no_gate" required>
        <option value="">Select Gate</option>
        <option value="28">1 Gate</option>
        <option value="29">2 Gates</option>
      </select>
    </div>
    
    //sub gate options one
    <div id="subgates-<?php echo $subgates->id; ?>" class="form-div-element" style="display:none;">
      <label># of Sub Gates</label>
      <select id="subgates" class="gates-change" name="sub_no_gate" required>
        <option value="">Select Sub Gate</option>
      </select>
    </div>
    
    //sub gate option 2
    <div id="subgates-<?php echo $subgates->id; ?>" class="form-div-element" style="display:none;">
      <label># of Sub Gates</label>
      <select id="subgates" class="gates-change" name="sub_no_gate" required>
        <option value="">Select Sub Gate</option>
      </select>
    </div>
    // and so on
    
    function change() {
    
        $(".form-div-element").hide();
        var selected = $('#gates').find(":selected").attr("value");
         $('#subgates-'+selected).show();
    
    
    
    
    }