Php 进行选择时是否显示某些条件?
用户有一些选项,选择其中一个后,我想显示更多的选项,这将取决于第一个选择的选项。比如说,用户可以选择门的数量,比如1或2。选择一个数字后,我想显示低于该数字的所有闸门的选项。就是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
门1的选项
- 如果选择了
,则显示2
和gate 2
的选项gate 1
<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();
}