简体   繁体   English

如何在PHP中创建动态搜索栏而不在PHP中刷新页面?

[英]How to create a dynamic search bar in PHP without page refresh in PHP?

<div data-role="page" id="page">
    <div data-role="header">

    <h4> Page Refresh</h4>
    </div>

    <div data-role="content">       

          <div data-role="fieldcontain" data-theme="b">
            <ul data-role="listview" data-inset="true">

            <li data-role="list-divider"> List of Contractors </li>         
                <li> 
                    <label for="select-choice-1" class="select">Main Location</label>
                       <select name="main_location" id="select-choice-1">
                          <option value="NSW">NSW</option>
                          <option value="ACT">ACT</option>
                          <option value="VIC">VIC</option>
                          <option value="SA">SA</option>
                          <option value="QLD">QLD</option>
                          <option value="NT">NT</option>
                          <option value="WA">WA</option>
                          <option value="TAS">TAS</option>
                        </select>                     
              </li> <!-- Select Menus: Main Location-->  

                <li>  <h3> Company 1 in NSW  </h3>    </li>                     
                <li>  <h3> Company 2 in NSW  </h3>    </li>                     
                <li>  <h3> Company 3 in NSW  </h3>    </li>                     
                <li>  <h3> Company 4 in NSW  </h3>    </li>                                                         

          </div>       
    </div>
    <div data-role="footer">

    </div>
</div>

I have a drop down that has list of States, below it I've List of companies. 我有一个下拉列表,其中包含州列表,下面是公司列表。

I was wondering if I can dynamically populate list of companies with out page refresh based on the value selected in Drop down. 我想知道是否可以基于下拉列表中选择的值来动态填充不带页面刷新的公司列表。

In simple words, if the value selected NSW then the list of companies should only contain companies in NSW state. 简而言之,如果该值选择了NSW,则公司列表应仅包含处于NSW状态的公司。

I would appreciate if some one can explain me with an example. 如果有人可以举例说明我,我将不胜感激。

PHP code is read by the server and then output is converted to HTML. 服务器读取PHP代码,然后将输出转换为HTML。

The only way to get PHP read again (after performing an action on the page) is to resubmit the page or be directed to a new one. 重新读取PHP(在页面上执行操作之后)的唯一方法是重新提交页面或定向到新页面。

You can use JavaScript to do things on the client-side, but again, PHP code is read at the beginning only. 您可以使用JavaScript在客户端执行操作,但是同样,PHP代码仅在开始时读取。

Here's an example of something you could do using JS: 这是您可以使用JS进行操作的示例:

<form name="vehicle">
    Car Make: 
    <select name="carbrand" onChange="updatecartype(this.selectedIndex)" >
    <option selected>Select A Car Brand</option>
    <option value="ford">Ford</option>
    <option value="mazda">Mazda</option>
    <option value="kia">Kia</option>
    </select>

    Car Model: 
    <select name="cartype" >
    <option value="NONE" selected>-------------------</option>
    </select>
</form>

<script type="text/javascript">

    var carbrandlist=document.vehicle.carbrand
    var cartypelist=document.vehicle.cartype

    var cartype=new Array()
    cartype[0]=""
    cartype[1]=["Focus|focus", "F-150|f150", "Taurus|taurus"]
    cartype[2]=["Protege|protege", "Tribute|tribute", "RX-8|rx8", "CX-9|cx9"]
    cartype[3]=["Rio|rio", "Sedona|sedona", "Optima|optima", "Soul|soul", "Sorento|sorento"]

    function updatecartype(selectedcar){
        cartypelist.options.length=0
        if (selectedcar>0){
            for (i=0; i<cartype[selectedcar].length; i++)
            cartypelist.options[cartypelist.options.length]=new Option(cartype[selectedcar][i].split("|")[0], cartype[selectedcar][i].split("|")[1])
        }
    }

</script>

Here's a straight-forward re-submit/2 page approach using only PHP, as requested. 这是根据要求仅使用PHP的直接重新提交/ 2页方法。

//step1.php
//================

<form method='post' action='step2.php'>

Choose State <br>
<select name='state'>
<option value='MI'>Michigan</option>
<option value='IL'>Illinois</option>
</select>

<input type='submit' value='Select State'>

</form>



//step2.php
//================

<form method='post' action='step3.php'>

Choose Company <br>
<select name='company'>

<?php
$state_choice = $_POST['state'];

if ($state_choice == 'MI') {

    echo "<option value='ABC'>Company ABC</option>";
    echo "<option value='DEF'>Company DEF</option>";

}
if ($state_choice == 'IL') {

    echo "<option value='UVW'>Company UVW</option>";
    echo "<option value='XYZ'>Company XYZ</option>";

}
?>

</select>

<input type='submit' value='Select Company'>

</form>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM