使用HTML <select> <option> OnChange更改PHP变量并执行mysql查询

时间:2016-05-03 13:31:11

标签: javascript php mysql pdo

嗨,我目前有2&lt;选择&GT; 第一个是从之前页面的按钮操作和数据库查询填充的。取决于您在第一个&lt;选择&gt;,第二个&lt;选择&GT;应该从数据库查询中填充第一个&lt;选择取代。 (我正在使用PDO准备,所以我只需要将参数更改为所选的任何值) 我已经知道如何将值转换为javascript,但我不知道如何将其写入php变量并执行mysql查询。由于javascript是一种客户端语言,我不认为可以在那里执行查询,所以我需要以某种方式将它转换为php? 选择1: &lt; select name =&#34; select1&#34; class =&#34;选择&#34; size =&#34; 10&#34; onChange =&#34; function()&#34;&gt;     &LT; PHP         while($ result1 = $ query1-&gt; fetch(PDO :: FETCH_OBJ)){     ?&GT;     &lt; option value =&#34;         &LT; PHP             echo $ result1-&gt; id;         ?&GT;&#34;&GT;         &LT; PHP             echo $ result1-&gt; text;         ?&GT;     &LT; /选项&GT;     &lt;?php}?&gt; &LT; /选择&GT; 选择2: &lt; select name =&#34; select2&#34; class =&#34;选择&#34; size =&#34; 10&#34; onChange =&#34; function(this.options [this.selectedIndex] .value)&#34;&gt;         &LT; PHP         while($ result2 = $ query2-&gt; fetch(PDO :: FETCH_OBJ)){?&gt;         &lt; option value =&#34;             &LT; PHP                 echo $ result2-&gt; id。 &#34 ;;&#34; 。 $ result2-&gt;文字。 &#34 ;;&#34; 。 $ result2-&gt; text2。 &#34 ;;&#34; 。 $ result2-&GT;文字3;             ?&GT;&#34;&GT;             &LT; PHP                 echo $ result2-&gt; text;             ?&GT;         &LT; /选项&GT;         &lt;?php}?&gt;     &LT; /选择&GT; 如果你很好奇,函数只显示一些div并将值写入一些文本框:         var str = select.split(&#34 ;;&#34;);         document.getElementById(&#34; div1&#34;)。className =&#34;&#34 ;;         document.getElementById(&#34; div2&#34;)。className =&#34; div&#34 ;;         document.getElementById(&#34; div3&#34;)。className =&#34; div&#34 ;;         document.getElementById(&#34; div4&#34;)。className =&#34; div&#34 ;;         document.getElementById(&#34; txt1&#34;)。value = str [0];         document.getElementById(&#34; txt2&#34;)。value = str [1];         document.getElementById(&#34; txt3&#34;)。value = str [2];         document.getElementById(&#34; txt4&#34;)。value = str [3]; php数据库查询填充选择1: 尝试{     $ query1 = $ db-&gt; prepare(&#39; SELECT id,text FROM tbl1 INNER JOIN tbl0 USING(id)WHERE id =?&#39;);     $ query1-&GT;执行(阵列($ _ POST [&#39; ID&#39;])); } catch(PDOException $ ex){     的log_error($前);     $ arrError [] =&#34;错误SQL 1&#34 ;; } php数据库查询填充选择2: 尝试{     $ query2 = $ db-&gt; prepare(&#39; SELECT id,text,text2,text3 FROM tbl1 INNER JOIN tbl2 USING(id)WHERE id =?&#39;);     $ query2-&GT;执行(阵列($ IDFROMSELECT1)); } catch(PDOException $ ex){     的log_error($前);     $ arrError [] =&#34;错误SQL 2&#34 ;; } 如何将select 1中的id(选项值)转换为php mysql query 2中的$ IDFROMSELECT1变量? 任何提示都非常感谢!

1 个答案:

答案 0 :(得分:0)

您必须使用AJAX将选择框的值发送到PHP脚本,该脚本将运行查询并发回结果。使用jQuery库最容易完成AJAX。

在onchange()中运行的javascript将是这样的:

    var selectedValue = $(this).val();
    $.ajax({url: "getData.php",
        type: "POST",
        dataType: "json",
        data: {id: selectedValue},
        success: function(returnedData) {
            //do something here with returned data
        }
    });

在PHP脚本(getData.php)中,您可以像普通一样执行select,将结果放入数组中,然后将该数组作为JSON(Javascript Object Notation)返回。这会将查询结果放入一个可以在javascript中使用的格式(在这种情况下,将返回的结果添加到另一个选择框中)

$json = json_encode($returnArray);
echo $json;