Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从选择框中获取不带值的数据_Php_Javascript_Html_Select - Fatal编程技术网

PHP-从选择框中获取不带值的数据

PHP-从选择框中获取不带值的数据,php,javascript,html,select,Php,Javascript,Html,Select,我有一个令人困惑的问题,但希望你能理解我的意思: 在我的网站上,我试图实现一个选择框,该框根据以前选择框的值进行更新。为此,我使用了一个获取这些值的javascript。例如,选择框中的选项如下所示: <option value="22"> Apple </option> 如果我试图将filter函数中的这个“值”更改为其他属性,由于某种原因,它将不起作用。我一点也不懂JavaScript。试试这个 var pName = document.getElementById

我有一个令人困惑的问题,但希望你能理解我的意思:

在我的网站上,我试图实现一个选择框,该框根据以前选择框的值进行更新。为此,我使用了一个获取这些值的javascript。例如,选择框中的选项如下所示:

<option value="22"> Apple </option>
如果我试图将filter函数中的这个“值”更改为其他属性,由于某种原因,它将不起作用。我一点也不懂JavaScript。

试试这个

var pName = document.getElementById('selectname');

var name = pName.options[pName.selectedIndex].text;
通过隐藏表单字段或ajax请求将名称值发送到php脚本, 它将包含选项的文本

请尝试以下操作

var pName = document.getElementById('selectname');

var name = pName.options[pName.selectedIndex].text;
通过隐藏表单字段或ajax请求将名称值发送到php脚本,
它将包含选项的文本

苹果
不会传递给服务器,只有您的值,在本例中为
23
。您可以看到,当您将公式方法更改为
GET
时,它看起来像
script.php?some_select=23

有两种解决方案:

第一个(简单的一个)是:

<option value="Apple" data-filterid="22"> Apple </option>
因此,您可以在php脚本中获得
Apple
,而不是
22
。然后,您可以通过访问
datafilterid
而不是
value
在javascript中对其进行过滤

第二种解决方案是存储一个将值映射到数字的关联字典,例如:

<?php
   $mapped = array(22 => "Apple",  23=>"Orange");
   $value = $mapped[$_GET['option_name']];

苹果
Apple
不会传递给服务器,只有您的值,在本例中为
23
。您可以看到,当您将公式方法更改为
GET
时,它看起来像
script.php?some_select=23

有两种解决方案:

第一个(简单的一个)是:

<option value="Apple" data-filterid="22"> Apple </option>
因此,您可以在php脚本中获得
Apple
,而不是
22
。然后,您可以通过访问
datafilterid
而不是
value
在javascript中对其进行过滤

第二种解决方案是存储一个将值映射到数字的关联字典,例如:

<?php
   $mapped = array(22 => "Apple",  23=>"Orange");
   $value = $mapped[$_GET['option_name']];
试试这个

function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

var text = getSelectedText('test');

试试这个

function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

var text = getSelectedText('test');


fruits\u array.php

<?php
$fruits= array(
22 => 'apple' ,
23 => 'orange'
);
if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
include 'fruits_array.php';
echo you chose ' . $fruits[$_POST['chosen_fruit'];
}
<form action='form_handler.php' method= POST>
<select name='chosen_fruit'>
<?php
include 'fruits_array.php';

foreach($fruits as $key=$fruit)
echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
?>
<input type=submit />
</form>
挑选你的水果。php

<?php
$fruits= array(
22 => 'apple' ,
23 => 'orange'
);
if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
include 'fruits_array.php';
echo you chose ' . $fruits[$_POST['chosen_fruit'];
}
<form action='form_handler.php' method= POST>
<select name='chosen_fruit'>
<?php
include 'fruits_array.php';

foreach($fruits as $key=$fruit)
echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
?>
<input type=submit />
</form>

试试这个。在一个地方保留一系列水果。把它放在你需要的地方。如有必要,该数组可以来自数据库

使用数组

  • 生成表单元素
  • 生成消息
  • 但是,从本质上讲,在表单和表单处理程序之间传输密钥的编号可以简化验证传入数据的棘手问题

    干的。不要重复你自己。现在如果你有99个水果,你再加一个,你只在一个地方加


    (缺少的主要内容是处理一个不存在的水果编号,这可能意味着有人在篡改您的输入表单,请留待另一个问题,嗯?)

    fruits\u array.php

    <?php
    $fruits= array(
    22 => 'apple' ,
    23 => 'orange'
    );
    
    if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
    include 'fruits_array.php';
    echo you chose ' . $fruits[$_POST['chosen_fruit'];
    }
    
    <form action='form_handler.php' method= POST>
    <select name='chosen_fruit'>
    <?php
    include 'fruits_array.php';
    
    foreach($fruits as $key=$fruit)
    echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
    ?>
    <input type=submit />
    </form>
    
    挑选你的水果。php

    <?php
    $fruits= array(
    22 => 'apple' ,
    23 => 'orange'
    );
    
    if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
    include 'fruits_array.php';
    echo you chose ' . $fruits[$_POST['chosen_fruit'];
    }
    
    <form action='form_handler.php' method= POST>
    <select name='chosen_fruit'>
    <?php
    include 'fruits_array.php';
    
    foreach($fruits as $key=$fruit)
    echo '<option value=' . $key . '>' . $fruit .'</option>' . PHP_EOL ; 
    ?>
    <input type=submit />
    </form>
    
    
    
    试试这个。在一个地方保留一系列水果。把它放在你需要的地方。如有必要,该数组可以来自数据库

    使用数组

  • 生成表单元素
  • 生成消息
  • 但是,从本质上讲,在表单和表单处理程序之间传输密钥的编号可以简化验证传入数据的棘手问题

    干的。不要重复你自己。现在如果你有99个水果,你再加一个,你只在一个地方加

    (缺少的主要内容是处理一个不存在的水果编号,这可能意味着有人在篡改您的输入表单,请留待另一个问题,嗯?)

    像这样试试

    <form method="post" action="getvalue.php">
        <select name="fruit">
            <option value="">select the option</option>
            <option value="1">Apple</option>
            <option value="2">Banana</option>
            <option value="3">Mango</option>
        </select>
    </form>
    
    
    <?php
    $option = array('1'=>'Apple','2'=>'Banana','3'=>'Mango');
    echo $option[$_POST['fruit']];
    
    ?>
    
    
    选择该选项
    苹果
    香蕉
    芒果
    
    像这样试试

    <form method="post" action="getvalue.php">
        <select name="fruit">
            <option value="">select the option</option>
            <option value="1">Apple</option>
            <option value="2">Banana</option>
            <option value="3">Mango</option>
        </select>
    </form>
    
    
    <?php
    $option = array('1'=>'Apple','2'=>'Banana','3'=>'Mango');
    echo $option[$_POST['fruit']];
    
    ?>
    
    
    选择该选项
    苹果
    香蕉
    芒果
    
    显示您已经尝试过的内容:-)您的问题不够清楚,请通过添加示例加以改进。preg_match和regex是关键字,要查找标签中的所有内容,否则要获得值22,您可以通过$\u POST['fruit']和设置来获取,或者,获得Apple的方法是使用JS甚至php,如果您通过php生成选项,那么您可以生成id,就像选项中的文本一样。为什么不给选项指定和id或名称,而不是一个值??就像苹果一样,这就是为什么你可以使用'22'和名称,并通过$u POST['22']在PHP上获取值;简短的回答是否。文本不会传递回服务器,只有值。查看tobspr的答案了解如何重新工具。展示您已经尝试过的内容:-)您的问题不够清楚,请通过添加示例加以改进。preg_match和regex是关键字,要查找标记中的所有内容,否则要获得值22,您可以通过$u POST['fruit']和设置获得它,或者,获得Apple的方法是使用JS甚至php,如果您通过php生成选项,那么您可以生成id,就像选项中的文本一样。为什么不给选项指定和id或名称,而不是一个值??就像苹果一样,这就是为什么你可以使用'22'和名称,并通过$u POST['22']在PHP上获取值;简短的回答是否。文本不会传递回服务器,只有值。请参阅tobspr的答案,了解如何重新使用工具。这看起来不错,但JavaScript不能与数据过滤器ID一起使用。我已经更新了这个问题,所以你可以看到它到底是什么。谢谢你的回复!上面的行也必须更改为:var id=$(“#select1 option:selected”).data('filterid');但是无论如何,谢谢你的帮助。看起来还可以,但是JavaScript不能与数据过滤器ID一起工作。我已经更新了这个问题,所以你可以看到它到底是什么。谢谢你的回复!上面的行也必须更改为:var id=$(“#select1 option:selected”).data('filterid');但是无论如何,谢谢你的帮助。JS函数似乎来自JS函数似乎来自