如何在PHP中获取echo中的第二个值?
我有一些选项可供选择,并希望根据用户的选择将一些文本输入设置为可见或隐藏。我已经具备了该功能,但在这种情况下,我需要获取echo的第二个值并检查其是否等于某个值,我目前只能检查echo的第一个值:如何在PHP中获取echo中的第二个值?,php,html,conditional-statements,echo,Php,Html,Conditional Statements,Echo,我有一些选项可供选择,并希望根据用户的选择将一些文本输入设置为可见或隐藏。我已经具备了该功能,但在这种情况下,我需要获取echo的第二个值并检查其是否等于某个值,我目前只能检查echo的第一个值: <select id="type_id" name="device_type_id" onchange="if (this.value==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form
<select id="type_id" name="device_type_id" onchange="if (this.value==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
<option value='Select'>Select</option>
<?php foreach ($result as $row) { ?>
<option value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
<?php } ?>
</select>
挑选
;
因此,我只需要获取$row['serial\u or\u imei']
的值,然后比较onchange=“如果(this.value='')
,我该怎么做呢
编辑:进一步解释
我需要读取$row['serial\u或\u imei']
的值,它可以是空的,'serial'或'imei',因此,这三个值中的一个。
注:我必须将
$row['id']
保留在value
属性中,因为我稍后会将该值传递给服务器,所以不建议删除该值。您添加一个新的自定义属性
serial
并向其提供serial\u或\u imei
的值,然后在javascript中与onchange=“if(this.value='')进行比较
挑选
;
编辑:元素“option”上不允许有属性“serial”。将此更改为数据seial。您可以通过将值分配给变量(格式非常简洁,如下所示),在
onchange
中比较数组的值
<?php $value = echo $row['serial_or_imei']; ?>
<select id="type_id" name="device_type_id" onchange="if (this.value=='<?php empty($value)?>'){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
<option value='Select'>Select</option>
<?php foreach ($result as $row) { ?>
<option value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
<?php } ?>
</select>
;
您可以向选项元素添加一个属性
,并使用它进行测试。差不多
<select id="type_id" name="device_type_id" onchange="if (this.getAttribute('data')==''){this.form['device_imei_textinput'].style.visibility='hidden'}else{this.form['device_imei_textinput'].style.visibility='visible'};">
<option value='Select'>Select</option>
<?php foreach ($result as $row) { ?>
<option data="<?php echo $row['serial_or_imei'] ?>" value="<?php echo $row['id'] . $row['serial_or_imei'] ?>"> <?php echo $row['name']; ?> </option>;
<?php } ?>
</select>
挑选
;
您说需要将值返回到服务器,因为它们是动态变化的。一个干净的方法是有一个专用的隐藏字段:
<?php foreach ($result as $row) { ?>
<input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>
根据评论中的信息,我认为这个解决方案正是您所寻找的。注意:为了清晰起见,我将onchange
移动到一个函数
您可以看到“三”选项隐藏了文本输入,因为它没有imei
还要注意我是如何在您的选项中使用data-
属性的,这样您也可以检索该信息,而不依赖于选项id
。还要注意,this.form['device\u imei\u textinput']
不起作用。需要元素
参考
功能检查\u imei(obj,表格){
var imei=obj.options[obj.selectedIndex].getAttribute('data-imei');
如果(imei=''){
form.elements.device_imei_textinput.style.visibility='hidden';
}否则{
form.elements.device_imei_textinput.style.visibility='visible';
}
}
挑选
一个
两个
三
如果您的id
和serial\u或\u imei
都是数字,那么理想情况下,您应该使用任何分隔符来准备它。您也可以将$row['serial\u或\u imei']
的值分配给不同的属性,然后进行比较。@swantrakumar它们都不是数字,serial\u或\u imei实际上是字符串,也可以是空的。如果您的意思是动态的,如“在每个页面上加载ID-imei关系更改”,我只需添加一个专用的隐藏字段,名为ID\u serial\u或\u imei\u map
。一个清晰的最终结果示例可能会帮助您。通过阅读本文,我们不清楚您想要达到什么目的。不,抱歉误解,我不想比较,我想检查$row['serial\u或\u imei']
的值,您能再解释一遍吗?我想检查$row['serial\u或\u imei']
中是否为空或包含字符串onchange=“if(this.value='')
Ok为此,您可以使用空函数查看我编辑的答案。设置$row['serial\u或\u imei'值的方式
到$value
这完全是错误的,你知道吗?你甚至没有在那里赋值。你不能添加自定义属性你的自定义属性应该是数据序列
而不是序列
才能成为有效的HTML。不,如果我添加自定义属性,它会打印该属性的值而不是值,一个d我不想那样。@rtzr没有让您通过,无法添加自定义属性。@LouisCharette很好。元素“option”上不允许使用属性“serial”。修改了它。我尝试过,但它会打印该值,而不是属性值的值
,但是,我需要检查用户选择了什么来更改这两个组件的可见性,并且您的代码会执行其他操作。基本上,我需要$row['id']
在提交时将其发送到服务器,以及$row['serial\u或\u imei']
根据$row['serial\u或\u imei']
的值,将一些文本输入的可见性设置为可见或隐藏。因此有两种不同的方式。我编辑了我的答案以显示如何读取imei。要显示和隐藏HTML元素,可以使用CSS(显示:无
);那是另一个主题。不,你漏掉了$row['id']我说我在其他地方使用它,所以不要删除它。你仍然可以将它放在值中。我从这个示例中删除了所有PHP,以使代码段正常工作。在这种情况下,选项将是
请参见编辑以获得更好的格式。如果这不能解决关于行id的问题,请进一步解释t您不想实现关于id
的目标。
<?php foreach ($result as $row) { ?>
<input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>
<?php
$random_serial_or_imei = range(1000, 9999);
shuffle($random_serial_or_imei);
$result = [];
for ($i = 0; $i < 5; $i++) {
$result[] = [
'id' => $i,
'serial_or_imei' => $random_serial_or_imei[$i],
'name' => "Name #$i",
];
}
?>
<select name="device_type_id">
<option value="">Select</option>
<?php foreach ($result as $row) { ?>
<option value="<?php echo $row['id']?>"><?php echo $row['name']; ?></option>
<?php } ?>
</select>
<?php foreach ($result as $row) { ?>
<input type="hidden" name="map[<?php echo $row['id']; ?>]" value="<?php echo $row['serial_or_imei']; ?>">
<? } ?>
<select name="device_type_id">
<option value="">Select</option>
<option value="0">Name #0</option>
<option value="1">Name #1</option>
<option value="2">Name #2</option>
<option value="3">Name #3</option>
<option value="4">Name #4</option>
</select>
<input type="hidden" name="map[0]" value="9513">
<input type="hidden" name="map[1]" value="3931">
<input type="hidden" name="map[2]" value="3971">
<input type="hidden" name="map[3]" value="4476">
<input type="hidden" name="map[4]" value="6429">