代码之家  ›  专栏  ›  技术社区  ›  sequel

使用AJAX对MySQL搜索结果排序

  •  0
  • sequel  · 技术社区  · 8 年前

    我正在创建航班搜索页面。第一页上有一个表单,单击“提交”按钮时,搜索结果显示在第二页。

    这是第一页: http://www.projectmeteor.dx.am/flights.php

    1. 选择原点:Guwahati
    2. 单击搜索战斗

    类似的内容应该出现在第二页。

    flight_search

    我知道我必须使用AJAX。我已经看到了一些使用AJAX对表进行排序的示例,但由于我的示例没有使用表实现,所以我不知道如何开始。

    如果需要,请索要任何代码。

    <div class="col-sm-12">
    
                    <div class="search">
    
                        <div class="content">
    
                        <form action="flightSearch.php" method="POST">
    
                            <div class="radioContainer">
    
                                <div class="col-sm-6 text-left">
    
                                    <input type="radio" name="flightType" value="One Way" id="oneWay">
                                    <label for="oneWay"><span class="radioLeft">One Way</span></label>
    
                                    <input type="radio" name="flightType" value="Return Trip" id="returnTrip" checked>
                                    <label for="returnTrip"><span class="radioLeft">Return Trip</span></label>
    
                                </div>
    
                                <div class="col-sm-6 text-right">
    
                                    <input type="radio" name="flightClass" value="Business Class" id="businessClass">
                                    <label for="businessClass"><span class="radioRight">Business Class</span></label>
    
                                    <input type="radio" name="flightClass" value="Economy Class" id="economyClass" checked>
                                    <label for="economyClass"><span class="radioRight">Economy Class</span></label>
    
                                </div>
    
                            </div> <!-- radioContainer -->
    
                            <div class="col-sm-6">          
                            <div class="form-group">
                                 <label for="origin">Origin:<p> </p></label>
    
                                    <select id= "origin"  data-live-search="true" class="selectpicker form-control" data-size="5" title="Select Origin" name="origin">
                                        <option value="New Delhi" data-subtext="DEL" data-tokens="DEL New Delhi">New Delhi</option>
                                        <option value="Mumbai" data-subtext="BOM" data-tokens="BOM Mumbai">Mumbai</option>
                                        <option value="Kolkata" data-subtext="CCU" data-tokens="CCU Kolkata">Kolkata</option>
                                        <option value="Bangalore" data-subtext="BLR" data-tokens="BLR Bangalore">Bangalore</option>
                                        <option value="Chennai" data-subtext="MAA" data-tokens="MAA Chennai">Chennai</option>
                                        <option value="Pune" data-subtext="PNQ" data-tokens="PNQ Pune">Pune</option>
                                        <option value="Goa" data-subtext="GOI" data-tokens="GOI Goa">Goa</option>
                                        <option value="Guwahati" data-subtext="GAU" data-tokens="GAU Guwahati">Guwahati</option>
                                        <option value="Gandhinagar" data-subtext="ISK" data-tokens="ISK Gandhinagar">Gandhinagar</option>
                                        <option value="Jammu" data-subtext="IXJ" data-tokens="IXJ Jammu">Jammu</option>
                                        <option value="Bhopal" data-subtext="BHO" data-tokens="BHI Bhopal">Bhopal</option>
                                        <option value="Agartala" data-subtext="IXA" data-tokens="IXA Agartala">Agartala</option>
                                    </select>
                            </div>
                        </div>
    
                            <div class="col-sm-6">          
                            <div class="form-group">
                                 <label for="destination">Destination:<p> </p></label>
    
                                    <select id= "destination"  data-live-search="true" class="selectpicker form-control" data-size="5" title="Select Destination" name="destination">
                                        <option value="New Delhi" data-subtext="DEL" data-tokens="DEL New Delhi">New Delhi</option>
                                        <option value="Mumbai" data-subtext="BOM" data-tokens="BOM Mumbai">Mumbai</option>
                                        <option value="Kolkata" data-subtext="CCU" data-tokens="CCU Kolkata">Kolkata</option>
                                        <option value="Bangalore" data-subtext="BLR" data-tokens="BLR Bangalore">Bangalore</option>
                                        <option value="Chennai" data-subtext="MAA" data-tokens="MAA Chennai">Chennai</option>
                                        <option value="Pune" data-subtext="PNQ" data-tokens="PNQ Pune">Pune</option>
                                        <option value="Goa" data-subtext="GOI" data-tokens="GOI Goa">Goa</option>
                                        <option value="Guwahati" data-subtext="GAU" data-tokens="GAU Guwahati">Guwahati</option>
                                        <option value="Gandhinagar" data-subtext="ISK" data-tokens="ISK Gandhinagar">Gandhinagar</option>
                                        <option value="Jammu" data-subtext="IXJ" data-tokens="IXJ Jammu">Jammu</option>
                                        <option value="Bhopal" data-subtext="BHO" data-tokens="BHI Bhopal">Bhopal</option>
                                        <option value="Agartala" data-subtext="IXA" data-tokens="IXA Agartala">Agartala</option>
                                    </select>
                            </div>
                        </div>
    
                            <div class="col-sm-3">
                                <div class="form-group">
                                    <label for="datetime1">Select Departure Date:<p> </p></label>
                                    <div class="input-group date" id="datetimepicker1">
                                        <input id="datetime1" type="text" class="inputDate form-control" placeholder="Select Departure Date" name="depart"/>
                                        <span class="input-group-addon">
                                        <span class="fa fa-calendar"></span>
                                        </span>
                                    </div>
                                </div>
                            </div>
    
                            <div class="col-sm-3">
                                <div class="form-group">
                                    <label for="datetime2">Select Return Date:<p> </p></label>
                                    <div class="input-group date" id="datetimepicker2">
                                            <input  id="datetime2" type="text" class="inputDate form-control" placeholder="Select Return Date" name="return"/>
                                            <span class="input-group-addon">
                                            <span class="fa fa-calendar"></span>
                                    </span>
                            </div>
        </div>
    </div>
    
                            <div class="col-sm-3">
    
                            <label for="adults">No. of adults:<p> </p></label>
                                <div class="form-group">
                                    <select id= "adults" class="selectpicker form-control" data-size="5" title="Aged 18 and above" name="adults">
                                        <option value="1">1</option>
                                        <option value="2">2</option>
                                        <option value="3">3</option>
                                        <option value="4">4</option>
                                        <option value="5">5</option>
                                        <option value="6">6</option>
                                    </select>
                                </div>
                            </div>
    
                            <div class="col-sm-3">
    
                            <label for="children">No. of children:<p> </p></label>
                                <div class="form-group">
                                    <select id= "children" class="selectpicker form-control" data-size="5" title="Aged upto 17" name="children">
                                        <option value="0">0</option>
                                        <option value="1">1</option>
                                        <option value="2">2</option>
                                        <option value="3">3</option>
                                        <option value="4">4</option>
                                        <option value="5">5</option>
                                        <option value="6">6</option>
                                    </select>
                                </div>
                            </div>
    
                            <div class="col-sm-12 text-center">
    
                                <input type="submit" class="button" name="searchFlights" value="Search Flights">
    
                            </div>
    
                        </form>
    
                        </div> <!-- content -->
    
                    </div> <!-- search -->
    
                </div>
    

    这是第二页(flight_search.php) :

        <?php include("common/header.php"); ?>
    
        <?php
    
            $type=$_POST["flightType"];
            $class=$_POST["flightClass"];
            $origin=$_POST["origin"];
            $destination=$_POST["destination"];
            $depart=$_POST["depart"];
            if($type=="Return Trip") {  //let's store the return value only if the flightType is a Return Trip
                $return=$_POST["return"];
            }
            $adults=$_POST["adults"];
            $children=$_POST["children"];
    
            if($class=="Economy Class")
                $className="Economy";
            else
                $className="Business";
    
        ?>
    
        <div class="spacer">a</div>
    
        <div class="searchFlights">
    
            <div class="query">
    
                <?php echo $type; ?> <?php echo $className; ?> Flights from <?php echo $origin; ?> to <?php echo $destination; ?>       
    
            </div>
    
    
        <?php
    
            $servername = "localhost";
            $username = "root";
            $password = "";
            $dbname = "projectmeteor";
    
            // Creating a connection to projectmeteor MySQL database
            $conn = new mysqli($servername, $username, $password, $dbname);
    
            // Checking if we've successfully connected to the database
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            }
    
            $sql = "SELECT * FROM flights WHERE origin='$origin' AND destination='$destination'";
            $result = $conn->query($sql);
    
            if ($result->num_rows > 0) {
    
        ?>
    
            <div class="listItemMenuContainer">
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Operator
    
                    </div>
    
                </div>
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Departs
    
                    </div>
    
                </div>
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Arrives
    
                    </div>
    
                </div>
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Fare
    
                    </div>
    
                </div>
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Ticket Type
    
                    </div>
    
                </div>
    
                <div class="col-sm-2 text-center">
    
                    <div class="headings">
    
                        Seats Available
    
                    </div>
    
                </div>
    
            </div> <!-- listItemMenuContainer -->
    
            <div class="spacerLarge">.</div> <!-- just a dummy class for creating some space -->
    
        </div> <!-- searchFlights -->
    
        <?php
                while($row = $result->fetch_assoc()) {
    
        ?>
    
        <div class="searchFlights">
    
            <div class="listItem">
    
                <!-- FLIGHT INFO STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="col-sm-4 text-center">
    
                        <div class="operatorLogo text-center">
    
                            <img src="images/flights/operatorLogos/indigo.jpg">
    
                        </div>
    
                    </div>
    
                    <div class="col-sm-8 text-center">
    
                        <div class="values flightOperator">
    
                            IndiGo
    
                        </div>
    
                        <div class="flightNoSubscript">
    
                            <?php echo $row["flight_no"]; ?>
    
                        </div>
    
                    </div>
    
                </div>
    
                <!-- FLIGHT INFO ENDS -->
    
    
                <!-- DEPARTS STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="values departs">
    
                        13:25
    
                    </div>
    
                    <div class="departsSubscript">
    
                        <?php echo $row["origin"]; ?>
    
                    </div>
    
                </div>
    
                <!-- DEPARTS ENDS -->
    
    
                <!-- DESTINATION STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="values arrives">
    
                        15:49
    
                    </div>
    
                    <div class="arrivesSubscript">
    
                        <?php echo $row["destination"]; ?>
    
                    </div>
    
                </div>
    
                <!-- DESTINATION ENDS -->
    
    
                <!-- FARE STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="values fare">
    
                        <?php echo $row["fare"]; ?>
    
                    </div>
    
                    <div class="fareSubscript">
    
                        incl. of GST
    
                    </div>
    
                </div>
    
                <!-- FARE ENDS -->
    
    
                <!-- TYPE STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="values type">
    
                        Refundable
    
                    </div>
    
                    <div class="typeSubscript">
    
                        <?php echo $row["class"]; ?>
    
                    </div>
    
                </div>
    
                <!-- TYPE ENDS -->
    
    
                <!-- SEATS AVAILABLE STARTS -->
    
                <div class="col-sm-2 text-center">
    
                    <div class="values availabilityGreen">
    
                        <?php echo $row["seats_available"]; ?>
    
                    </div>
    
                    <div class="availabilitySubscript">
    
                        <input type="submit" class="availabilityBookingButton" value="Book Now">
    
                    </div>
    
                </div>
    
                <!-- SEATS AVAILABLE ENDS -->
    
            </div> <!-- listItem 1 -->
    
        </div>
    
        <?php
    
                }
    
            } else {
    
        ?>
    
        <div class="searchFlights">
    
            <div class="noFlights">
    
                No flights found. Please consider modifying your search query.
    
            </div>
    
        </div>
    
        <?php
    
            }
    
        ?>
    
        <?php $conn->close(); //closing the connection to the database ?>
    
        <div class="spacerLarge">.</div> <!-- just a dummy class for creating some space -->
    
        <?php include("common/footer.php"); ?>
    

    1 回复  |  直到 8 年前
        1
  •  1
  •   rebduvid    8 年前

    首先,您需要知道的是,最好使用一种不使用ajax的解决方案,因为您将在ajax中使用的所有请求都将进行新的mysql查询和服务器处理,以生成html。

    1-首先需要添加jquery。如果你没有源代码,你可以从 https://jquery.com/

    2-将标题代码更改为

    <div class="headings" id="order1" data-id="operator"> Operator</div>
    <div class="headings" id="order2" data-id="departs"> Departs</div>
    

    此外,我认为您需要将所有结果放在一个普通div中,该div应该位于while语句之前,并在}之后关闭。这个div应该包含所有结果div。当您使用ajax更新页面时,您将把这个div内容替换为flightProcesor提供的新内容。php返回。

    <div id="results"> <!-- NEW TAG -->
        <?php
        while($row = $result->fetch_assoc()) 
        {
        ?>
        <div class="searchFlights">
            <div class="listItem">
                 .....
            </div>
        </div><?php
        }?>
     </div> <!-- NEW TAG -->
    

    <script language="javascript">
    $("div[id*=order]").on('click', function () 
    {
        var column = $(this).attr('data-id');
        var oneWay = $('#oneWay').val();
        var returnTrip = $('#returnTrip').val();
        .....
        .....
    
        $.ajax({
            type:'POST',
            url:"/flightProcesor.php",
            data: {orderBy: column, oneWay: oneWay, returnTrip: returnTrip},
    
            success:function(data) {
                if(data) 
                {
                    $('#results').html(data);
                } 
            }
        });
    });
    </script>
    

    4-最后一步你需要做flightProcesor。php应该使用您通过POST to order发送的orderBy参数进行mysql查询,然后您需要创建一个php$html var,其中包含要返回的所有代码:

        <?php
    if ($result->num_rows > 0) 
    {
        $string_var = ""; //INIT STRING VAR.
        while($row = $result->fetch_assoc()) 
        {
            $string_var .= '<div class="searchFlights">
                <div class="listItem">
                    <!-- FLIGHT INFO STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="col-sm-4 text-center">
                            <div class="operatorLogo text-center"><img src="images/flights/operatorLogos/indigo.jpg"></div>
                        </div>
                        <div class="col-sm-8 text-center">
                            <div class="values flightOperator">IndiGo</div>
                            <div class="flightNoSubscript">'.$row["flight_no"].'</div>
                        </div>
                    </div>
                    <!-- FLIGHT INFO ENDS -->
                    <!-- DEPARTS STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="values departs">13:25</div>
                        <div class="departsSubscript">'.$row["origin"].'</div>
                    </div>
                    <!-- DEPARTS ENDS -->
                    <!-- DESTINATION STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="values arrives">15:49</div>
                        <div class="arrivesSubscript">'.$row["destination"].'</div>
                    </div>
                    <!-- DESTINATION ENDS -->
                    <!-- FARE STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="values fare">'.$row["fare"].'</div>
                        <div class="fareSubscript">incl. of GST</div>
                    </div>
                    <!-- FARE ENDS -->
                    <!-- TYPE STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="values type">Refundable</div>
                        <div class="typeSubscript">'.$row["class"].'</div>
                    </div>
                    <!-- TYPE ENDS -->
                    <!-- SEATS AVAILABLE STARTS -->
                    <div class="col-sm-2 text-center">
                        <div class="values availabilityGreen">'.$row["seats_available"].'</div>
                        <div class="availabilitySubscript"><input type="submit" class="availabilityBookingButton" value="Book Now"></div> <!-- MAYBE YOU NEED AN IDENTIFICATION VALUE FOR EACH ROW IN THIS SUBMIT -->
                    </div>
                    <!-- SEATS AVAILABLE ENDS -->
                </div> <!-- listItem 1 -->
            </div>';
        }
    } 
    else 
    {
        $string_var = '<div class="searchFlights">
                            <div class="noFlights">No flights found. Please consider modifying your search query.</div>
                        </div>';
    }
    
    return $string_var;
    ?>