如何从同一页面上的选择框中获取值

时间:2014-01-07 01:43:35

标签: javascript php

我正在尝试使用PHP和Javascript来创建一个类别选择器框。 我已经进行了设置,以便Javascript按顺序显示步骤,并在取消选择后隐藏。

但是,我无法弄清楚如何选择选项“id”或“value”并将其传递给下一行。 (一旦传递了所选的id或值,下一个列表就可以加载)

这是我的代码,感谢提前查看。如果我做错了或者没有正确的方法,请求。让我知道和/或告诉我正确的方法。

<?php
include($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php");
include($_SERVER["DOCUMENT_ROOT"] . "/inc/search.php");
?>

<div class="content">
<form>
    <select name="categorys" class="newcatediv" id="step1" size="3" onchange="mine(this.value)">
        <?php 

        $result_c = mysqli_query($con,"SELECT * FROM categories ORDER BY category_name ASC");

        while($row = mysqli_fetch_array($result_c))
        {
            echo '<option class="mso" id="'. $row['category_nameid'] .'"value="';
            echo $row['category_nameid'] .'">' . $row['category_name'] . '</option>';
        } 

         ?>
    </select>

    <select name="sections" class="newcatediv" id="step2" size="3" onchange="mine2(this.value)">
        <?php 

        $var_c = ????

        $result_s = mysqli_query($con,"SELECT * FROM sections WHERE category_nameid='$var_c' ORDER BY section_name ASC");

        while($row = mysqli_fetch_array($result_s))
        {
            echo '<option class="mso" id="'. $row['section_nameid'] .'"value="';
            echo $row['section_nameid'] .'">' . $row['section_name'] . '</option>';
        } 

        ?>
    </select>

    <select name="subsections" class="newcatediv" id="step3" size="3">
        <?php 

        $var_s = ????

        $result_ss = mysqli_query($con,"SELECT * FROM subsections WHERE section_nameid='$var_s' ORDER BY subsection_name ASC");

        while($row = mysqli_fetch_array($result_ss))
        {
            echo '<option class="mso" id="'. $row['subsection_nameid'] .'"value="';    
            echo $row['subsection_nameid'] .'">' . $row['subsection_name'] . '</option>';
        } 

        ?>
    </select>

</form>
</div>

<?php
include($_SERVER["DOCUMENT_ROOT"] . "/inc/footer.php");
    ?>

2 个答案:

答案 0 :(得分:1)

默认情况下,选择<select>中的第一个选项,这样就可以了:

<select name="categorys" class="newcatediv" id="step1" size="3" onchange="mine(this.value)">
    <?php 

    $result_c = mysqli_query($con,"SELECT * FROM categories ORDER BY category_name ASC");

    $var_c = null;
    while($row = mysqli_fetch_array($result_c))
    {            
        if($var_c == null) $var_c = $row['category_nameid'];
        echo '<option class="mso" id="'. $row['category_nameid'] .'"value="';
        echo $row['category_nameid'] .'">' . $row['category_name'] . '</option>';            
    } 

     ?>
</select>

<select name="sections" class="newcatediv" id="step2" size="3" onchange="mine2(this.value)">
    <?php         

    $result_s = mysqli_query($con,"SELECT * FROM sections WHERE category_nameid='$var_c' ORDER BY section_name ASC");

    $var_s = null;
    while($row = mysqli_fetch_array($result_s))
    {
        if($var_s == null) $var_s = $row['section_nameid'];
        echo '<option class="mso" id="'. $row['section_nameid'] .'"value="';
        echo $row['section_nameid'] .'">' . $row['section_name'] . '</option>';
    } 

    ?>
</select>

<select name="subsections" class="newcatediv" id="step3" size="3">
    <?php         

    $result_ss = mysqli_query($con,"SELECT * FROM subsections WHERE section_nameid='$var_s' ORDER BY subsection_name ASC");

    while($row = mysqli_fetch_array($result_ss))
    {
        echo '<option class="mso" id="'. $row['subsection_nameid'] .'"value="';    
        echo $row['subsection_nameid'] .'">' . $row['subsection_name'] . '</option>';
    } 

    ?>
</select>

干杯

答案 1 :(得分:1)

嗨:)你不能使用Php在同一页面上处理它。但你可以用这个jquery做到这一点,包括3页。 第一页:

$(document).ready(function(){
$("#step1").change(function(){
    var id=$("#step1").val();

    alert(id); //shouts the value of the selected step1
    $.post("select_step2.php", {id:id}, function(data){
        $("#step2").empty();
        $("#step2").append(data);

                    $("#step2").change(function(){
                         var id2=$("#step2").val();
                         alert(id2); //shouts the value of the selected step2

                         $.post("select_step3.php", {id:id2}, function(data){
                             $("#step3").empty();
                             $("#step3").append(data);
                          });  
                   });
        });
   });
  });

以上代码适用于jquery,您可以在其中调用依赖于每个步骤的每个数据。

<?php
include($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php");
include($_SERVER["DOCUMENT_ROOT"] . "/inc/search.php");
?>


<form>
 First Step: <select name="categorys" class="newcatediv" id="step1" size="3">
    <?php 

    $result_c = mysqli_query($con,"SELECT * FROM categories ORDER BY category_name ASC");

    while($row = mysqli_fetch_array($result_c))
    {
        echo '<option class="mso" id="'. $row['category_nameid'] .'"value="';
        echo $row['category_nameid'] .'">' . $row['category_name'] . '</option>';
    } 

     ?>
</select>

Second Step: <select name="sections" class="newcatediv" id="step2" size="3"></select>

Third Step: <select name="subsections" class="newcatediv" id="step3" size="3"></select>

您的代码select_step2.php:

<?php

 //Please include the connection to your database here :)

 $var_c = trim($_POST['id']);

     $section = "";
    $result_s = mysqli_query($con,"SELECT * FROM sections WHERE category_nameid='$var_c' ORDER BY section_name ASC");

    while($row = mysqli_fetch_array($result_s))
    {
        $section.="<option value='$row[section_nameid]'>$row[section_name]</option>";
    } 
    echo $section;

?>

select_step3.php的代码:

<?php 
  //database connection here
   $var_s = trim($_POST['id']);

    $subsection= "";
    $result_ss = mysqli_query($con,"SELECT * FROM subsections WHERE section_nameid='$var_s' ORDER BY subsection_name ASC");

    while($row = mysqli_fetch_array($result_ss))
    {
        $subsection.="<option value='$row[subsection_nameid]'>$row[subsection_name]</option>";
    } 
   echo $subsection;
 ?>