如何获取表单输入,从php中的同一页面选择值?

时间:2011-04-11 10:27:23

标签: php javascript jquery html ajax

我的表格有:

<form name="myForm" action="a.php" method="post">
    <fieldset>
        <label>class</label>
        <select>
            <option>1</option>
            <option>2</option>
            <option>3</option>
        </select>

        <label>Subject</label>
        <select>
            <option>some value from database</option>
            <option>some value from database</option>
            <option>some value from database</option>
            <option>some value from database</option>
        </select>
    </fieldset>
<form>
事情是:

我想从用户的第一个下拉选择值中显示3个选项(1,2和3)。假设用户选择1然后他/她将从数据库获得相应的值作为第二选择的下拉值。然后他/她将从这些下拉值中选择一个。最后,表格将手动提交。显然,取决于第一个下拉选择值,第二个下拉选择值将相应地改变。

因此,挑战是从第一个选择下拉值中获取值,以便在手动提交表格之前的第二个选择下拉值中使用它。我怎样才能做到这一点?我正在使用PHP。我还需要什么?

稍后添加:

到目前为止,我已经了解了发布概率的解决方案。

现在想,

我必须根据第一个下拉列表检索第二个下拉列表的值。如果有第三个下拉值从数据库中检索取决于第一个和第二个,然后第四个下拉值取决于前三个,依此类推第五个,第六个...那么我该如何实现呢?

所有下拉<select></select>元素将在同一页面上水平并排放置。

4 个答案:

答案 0 :(得分:1)

您需要客户端脚本。这是article如何使用jQuery(流行的JS框架)实现此功能

答案 1 :(得分:0)

您需要使用javascript和AJAX动态获取第二个下拉列表的值。例如,使用jQuery,它将是:

$('#select1').change(function() {
   var selectedVal = $(this).val();

   //make an AJAX request to get your values depending on selectedVal
   //and update the values for the second select
}

在PHP脚本中,您必须评估表示第一个select的用户选择的传入参数,然后以JSON格式返回从数据库加载的数据。

编辑:AJAX请求将如下所示:

$.post("getsecondvals.php", { value: selectedVal }, function(data) {
   var result = $.parseJSON(data);
   $('#select2').html(''); //delete any old values

   for (var entry in result) {
      var option = $('<option></option>');
      option.text(entry);

      $('#select2').append(option);
   }
});

您的PHP脚本可以这样构建:

<?php
$selectedValue = $_POST['value'];
// now include everything required for your database connection
// and get the categories, use prepared statements

// finally, your resulting array should be non-associative, so
// always add new values with "[]" operator
// assuming $values is your array containing the valid options, do this:
echo json_encode($values);
?>

答案 2 :(得分:0)

您需要使用Javascript来处理此问题,覆盖onSelectionChange的{​​{1}}事件,并在更改事件时从服务器端脚本获取第二个下拉框的值。

答案 3 :(得分:0)

你可以试试这个:

onchange = "$('select[name=\'xyz\']').load('yourUrl/someFunction&country_id=' + this.value);"

此onchange属性将应用于第一个选择框并将名称赋予第二个选择框 喜欢:

只要您从第一个下拉菜单中更改选项,上面的代码就会发送一个AJAX GET请求。

在调用的函数中从DB获取值并返回HTML。 例如:

  someFunction() {
     //get values from DB and loop
   String html = "<option></option>";
   return html;
}