0

私はこのサイト、php、およびajaxを初めて使用しています。解決策を探してみましたが、一部しか見つかりません。これが私がやろうとしていることです.2つのリンク(Make、およびModel)と2つのドロップダウン(Sort By、およびASC / DESC)を含むページがあります。ユーザーが Make リンクをクリックすると、ページが更新され、すべての車 (つまり、すべてのトヨタ車) が表示されます。モデルをクリックすると、ページが更新され、モデルごとにすべての車 (つまり、すべてのカムリ) が表示されます。また、ユーザーが並べ替え (年) もクリックした場合は、メーカー/モデルのいずれかを表示し、年で並べ替える必要があります。ASC/DESC についても同様です。このサイトから、並べ替えの部分を実行するサンプル コードをいくつか見つけましたが、他のドロップダウンとリンクを機能させる方法がわかりません。これが私がこれまでに持っているものです...助けてください!! ありがとう!

inventory.php

<script type="text/javascript">
function changeContent(strOrderBy, strMake)  
{  
    alert(strOrderBy + " " + strMake");
    if (strOrderBy=="")
    {
        // if blank, we'll set our innerHTML to be blank.
        document.getElementById("content").innerHTML="";
        return;
    } 
    if (window.XMLHttpRequest)
    { // code for IE7+, Firefox, Chrome, Opera, Safari
        // create a new XML http Request that will go to our generator webpage.
        xmlhttp=new XMLHttpRequest();
    }
    else
    {  // code for IE6, IE5
        // create an activeX object
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    // on state change
    xmlhttp.onreadystatechange=function()
    {
        // if we get a good response from the webpage, display the output
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("content").innerHTML=xmlhttp.responseText;
        }
    }
    // use our XML HTTP Request object to send a get to our content php. 
    xmlhttp.open("GET","getinventory.php?orderby="+strOrderBy+"&make="+strMake, true);
    xmlhttp.send();
}
</script>

<body>

    <div class="colrecNav4">Sort By:&nbsp;
        <select name="sort" id="sort" onchange="changeContent(this.value, ???)">
            <option value="year">Year</option>
            <option value="trim">Trim</option>
            <option value="price">Price</option>
            <option value="miles">Miles</option>
        </select>&nbsp;&nbsp;
        <select name="dir" id="dir" onchange="changeContent(this.value)">
            <option value="asc">Ascending</option>
            <option value="desc">Descending</option>
        </select>
    </div>
    <?php
        //reading data from the database
        echo '<div class="makemodel"><a href="#" id="byMake">' . $makeFromDb . '</a></div>';
        echo '<div class="makemodel"><a href="#" id="byModel">' . $modelFromDb . '</a></div>';
    ?>
    <script>
    $(".makemodela").bind("click", function(event){
            var div_id=$(this).attr("id");
    $.ajax({
        type:'POST',
        url: 'getinventory.php',
        success: function(data){
            changeContent($('#sort').val(), div_id);
        }
    });
    });
    </script>
....
</body>

getinventory.php 
<?php
...
    $sql = "SELECT * FROM inventory ORDER BY " . $_REQUEST['orderby'];  
    $result = mysql_query($sql);  

    while (...) {
    echo "results...."
    }
?>

専門家: そこで、changeContent 関数に別のパラメーターを追加し、コードを更新しました。これで、Make または Model リンクをクリックすると、changeContent 関数のアラート メッセージの値を確認できるようになりました。しかし、私はそれを最初にしか見ることができません。その後、何もしません。誰か助けてくれませんか?ありがとう!

編集:だから、並べ替えドロップダウンの後の私の inventory.php ページ

<?php
    $make_results = $db->get_results("SELECT * FROM tblmake ORDER BY Make");
    foreach ($make_results as $make_result) {
        echo '<div class="makemodel"><a href="#" id="' . $make_result->Make . '">' . $make_result->Make . '</a></div>
    ....
    //similar for model link
?>
<script>
$(".makemodel a").bind("click", function(event){
        var div_id=$(this).attr("id");
        $.ajax({
            type:'POST',
            url: 'getinventory.php',
            success: function(data){
                changeContent($('#sort').val(), div_id);
            }
        });
    });
</script>

と私の getinventory.php ページ

$orderby = $_REQUEST['orderby'];        
$make = $_REQUEST['make'];

    $search_results = $db->get_results("SELECT qry WHERE MAKE=" . $make . " ORDER BY " . $orderby)
    //display results
?>
4

2 に答える 2

0

jqueryの「.change」関数を使用してドロップダウンから値の変更を取得し、渡すことができます

その値を ajax を使用して getinventory.php に追加し、html ページを作成します

getinventory.php は値に依存し、成功後にその結果を含めます

以下のコードを確認してください

$("#dir").change(function(){

  var selectedValues = $("#sort").val();

  $.post("http://localhost/getinventory.php/orderby/"+selectedValues,function(data){

    $("#yourdiv").html(data); // Here data consits of the html page 

  });

});
于 2013-01-03T05:44:26.453 に答える
0

任意の onChange イベントで、並べ替えまたは並べ替え列のいずれかが AJAX 呼び出しによって渡されます。両方のパラメーターを渡す必要があり、変更のたびに、他のドロップダウンの値も確認して、有効な MySQL クエリを構築できるようにする必要があります。

のようにORDER BY year DESC

于 2012-12-31T07:44:04.560 に答える