1

XML ファイルに対してクエリを実行し、結果を返す次のコードがあります。次に、usort を使用して並べ替えます。(私の並べ替え関数は別のページ sort.php にあります)。今のところ usort をコメントアウトしましたが、usort 関数は意図したとおりに機能します。

$xml = simplexml_load_file($url);

//RUN QUERY ON XML
$xQuery = $xml->xpath($query);

//DISPLAY RESULTS OF QUERY

$i = 0;
//usort($xQuery, 'sortMake');
    for ($f = 0; $f <= 9; $f++) {               
        ?>
            <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
            MAKE:  <?php echo $xQuery[$i]->Make;?><br />
            Model: <?php echo $xQuery[$i]->Model;?><br />
            $i++;


    <?php } ?>

したがって、上記のコードはすべてのコンテンツをソートせずに表示します。クリックすると配列がソートされ、ページ全体をリロードせずに表示されるループの前にソートリンクが必要です。おそらく AJAX に関するものだと思いますが、私が見つけたすべての AJAX リソースは、すべて MySQL を使用する関数の例です。私はMySQLを使用していません。

どんな助けでも大歓迎です。ありがとう。

4

2 に答える 2

3

AJAX や PHP の並べ替えなしで、ページ上で並べ替えることができます。HTML を少し変更する必要があります。結果を ID を持つ親要素に入れます。各結果をクラスの div に入れます。クラスを使用して、並べ替えたいデータをスパンに入れます。

<div id="carList">
    <div class="car">
        <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
        MAKE:  <span class="make"><?php echo $xQuery[$i]->Make;?></span><br />
        Model: <span class="model"><?php echo $xQuery[$i]->Model;?></span><br />
        $i++;
    </div>
    ...
</div>

要素を並べ替えるには、まず要素をArray:

var listEl = $("#carList");
var cars = listEl.children(".car").get();

次に、 を呼び出し.sort()ますArray。に渡すカスタム比較関数を作成します.sort()

cars.sort(function (a, b) {
    var aMake = $(a).find(".make").text();
    var bMake = $(b).find(".make").text();
    return a - b;
});

ここで、要素を親要素に追加して戻します。

listEl.append(cars);

デモ: http://jsfiddle.net/gilly3/ZNmEh/

于 2012-06-08T20:24:41.557 に答える
1

jQuery の .get() 関数を確認してください。少なくとも、正しい方向に向けられるはずです。jQuery は Javascript ライブラリであり、目的に合わせて間違いなく使用できます。Javascript だけでもこのタスクを実行できますが、jQuery の目標は、コーディングの量を最小限に抑えて作業を簡素化することです。タグで jQuery ライブラリをダウンロードするか参照する必要があります<head>。本当に jQuery を使い始めたい場合は、セレクターとその使用方法についてよく読んでおく必要があります。

個人的には jQuery が大好きで、他のライブラリもいくつか使用しています。jQuery は初心者に最適で、オンライン ドキュメントは素晴らしいものでした。あらゆる質問に答えることができるユーザーの巨大なグループがあります。

基本的に、表示されたデータを、jQuery が検出できるタグでラップする必要があります。つまり、次のようになります。

<a href='#' id='link'>Sort Data</a>
<div id='xmlData'>...DATA...</div>`

次に、スクリプトを用意します。

$("#link").click(function(){
    $.get('xmldata.php',function(d){
        $('#xmlData').html(d);
    });
});

xmldata.php次に、コンテンツを題材にしたスクリプトを作成します。

$xml = simplexml_load_file($url);

//RUN QUERY ON XML
$xQuery = $xml->xpath($query);

//DISPLAY RESULTS OF QUERY

$i = 0;
usort($xQuery, 'sortMake');
for ($f = 0; $f <= 9; $f++) {               
    ?>
        <img src= "<?php echo $xQuery[$i]->MainPhoto;?>"><br />
        MAKE:  <?php echo $xQuery[$i]->Make;?><br />
        Model: <?php echo $xQuery[$i]->Model;?><br />
        $i++;
<?php } ?>
于 2012-06-08T18:52:51.063 に答える