PHP - 从没有值的选择框中获取数据

时间:2013-08-22 10:03:28

标签: php javascript html select

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

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

<option value="22"> Apple </option>

我需要该值才能过滤选择框,但在我的PHP脚本中,我需要获得&#39; Apple&#39; 文本。有没有办法做到这一点?

对于noob问题感到抱歉,但网络开发对我来说是新的。

修改

这是我用来过滤第二个选择框的java脚本:

$("#select1").change(function() {
                           if ($(this).data('options') == undefined) {
                               /*Taking an array of all options-2 and kind of embedding it on the select1*/
                               $(this).data('options', $('#select2 option').clone());
                           }
                           var id = $(this).val();
                           var options = $(this).data('options').filter('[value=' + id + ']');
                           $('#select2').html(options);
                       });

如果我尝试将过滤器功能中的&#39; 值更改为某些其他属性,则由于某种原因它不起作用。我根本不懂JavaScript。

5 个答案:

答案 0 :(得分:1)

试试这个

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

var name = pName.options[pName.selectedIndex].text;

通过隐藏表单字段或ajax请求将名称值发送到您的php脚本, 它将包含选项

的文本

答案 1 :(得分:1)

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

解决它的两个解决方案:

第一个(简单的)将是:

<option value="Apple" data-filterid="22"> Apple </option>

在你的js:

var options = $(this).data('options').filter('[data-filterid=' + id + ']');

所以你在php脚本而不是Apple得到22。然后,您可以通过访问data-filterid而非value在javascript中对其进行过滤。

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

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

答案 2 :(得分:1)

试试这个

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

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

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

var text = getSelectedText('test');

this.options[this.selectedIndex].innerHTML

答案 3 :(得分:1)

<强> fruits_array.php

<?php
$fruits= array(
22 => 'apple' ,
23 => 'orange'
);

<强> form_handler.php

if( isset($_POST['chosen_fruit']) && (int)$_POST['chosen_fruit'] > 0 ){
include 'fruits_array.php';
echo you chose ' . $fruits[$_POST['chosen_fruit'];
}

<强> pick_your_fruit.php

<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>

试一试。在一个地方保持一系列水果。将它包含在您需要的地方。如果需要,该数组可以来自数据库。

使用数组

  1. 生成表单元素
  2. 生成消息
  3. 但是,实质上,在表单和表单处理程序之间传递密钥的数量可以简化验证传入数据的棘手问题。

    DRY。不要重复自己。现在,如果您有99个水果,并且添加了另一个水果,则只需将其添加到一个地方。

    (缺少的主要是处理一个不存在的水果编号,这可能意味着有人篡改了你的输入表格,留下另一个问题,是吗?)

答案 4 :(得分:1)

试试这个

<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']];

?>